Hola que tal, estoy haciendo un modificar perfil. La cuestion es que quiero que el usuario al presionar sobre modificar perfil le aparezcan algunos datos que completó en el registro, y los demás deba rellenarlo.
Tengo un Warning en la linea 11 del getdata.php:"mysql_fetch_array(): supplied argument is not a valid MySQL result resource"
Lo que tengo hasta ahora es lo siguiente:
modificarperfil.php:
<?php
include("function.php");
include("getdata.php");
include("connect.php"); //incluimos el connect.php que contiene los datos de la conexión a la db y la sesión
if(!isset($_GET['usuario'])){
echo 'No se ha seleccionado ningun usuario.';
}else{
$query=mysql_query("SELECT * FROM prueba WHERE usuario=$usuario ");
if(mysql_num_rows($usuario)>0){
$query=mysql_fetch_array($usuario);
//todo comprobado, ahora solo falta mostrar los datos
echo 'Bienvenid@ <b>'.$usuario[usuario].'</b><br>';
}else{
echo 'El usuario seleccionado no existe';
}
}
?>
El function.php:
<?php
function getfname($usuario)
{
$query = mysql_query("select * from prueba where usuario=$usuario");
$getname= mysql_fetch_array($query);
$firstname= $getname["firstname"];
return $firstname;
}
function getlname($usuario)
{
$query =mysql_query("select * from prueba where usuario=$usuario");
$getname= mysql_fetch_array($query);
$lastname=$getname["lastname"];
return $lastname;
}
function getusuario($usuario)
{
$query=mysql_query("select * from prueba where usuario=$usuario");
$getname=mysql_fetch_array($query);
$usuario=$getname["usuario"];
return $usuario;
}
function getgender ($usuario)
{
$query=mysql_query("select * from prueba where usuario=$usuario");
$getname=mysql_fetch_array($query);
$gender=$getname["Genero"];
return $gender;
}
?>
El getdata.php:
<?php
include "connect.php";
$query=mysql_query("select * from prueba where usuario=$usuario");
$getname=mysql_fetch_array($query); //linea 11 aqui esta el warning
$firstname=$getname["firstname"];
$lastname=$getname["lastname"];
$usuario=$getname["usuario"];
$gender=$getname["genero"];
?>
Lo que yo quiero es que me aparezcan en el formulario los datos a los que consulta en la bd.
En el formulario lo hago de esta forma:
<tr>
<td width="219">Nombre:</td>
<td width="270"><input name="firstname" type="text" id="firstname" value="<?php echo $firstname;?>"></td>
</tr>
Esta es la base de datos, al hacer la consulta me devuelve un valor vacio, pero está completo ese valor.
CREATE TABLE `prueba` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`firstname` varchar(32) collate utf8_unicode_ci NOT NULL DEFAULT '',
`lastname` varchar(40) collate utf8_unicode_ci NOT NULL DEFAULT '',
`usuario` varchar(32) collate utf8_unicode_ci NOT NULL DEFAULT '',
`pass` varchar(32) collate utf8_unicode_ci NOT NULL DEFAULT '',
`sexo` varchar (32) collate utf8_unicode_ci NOT NULL DEFAULT '',
`email` varchar(255) collate utf8_unicode_ci NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
UNIQUE KEY `usuario` (`usuario`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Gracias por leerlo, den_22
$query=mysql_query("SELECT * FROM prueba WHERE usuario=$usuario ");
if(mysql_num_rows($usuario)>0){
$query=mysql_fetch_array($usuario);
en vez de $usuario... no es $query?
mira, trata de primero definir las variables, y despues aplicarlas:
<?php
include "connect.php";
$firstname=$getname["firstname"];
$lastname=$getname["lastname"];
$usuario=$getname["usuario"];
$gender=$getname["genero"];
$query=mysql_query("select * from prueba where usuario=$usuario");
$getname=mysql_fetch_array($query); //linea 11 aqui esta el warning
?>
contanos que onda...
ehm... las define en otro archivo que es incluido antes de tratarlo :P el error no va por ahi xD
será talves porque te da error al hacer la query?
encierra en comillas el nombre o mysql te lo va a tomar como tabla u objeto en ves de string.
nakp= donde? nunca definio $usuario :S. tambien estaria probar lo que decis...
whk= o tambien puede que el usuario tenga espacios :S
en getdata.php, revisa los codigos ps xD es el segundo archivo que incluye
sisi, getdatalovi xD pero fijate que son todas funciones, y no veo que las llame :S
ademas lo mio esta erroneo :S
<?php
include "connect.php";
$firstname=$getname["firstname"];
$lastname=$getname["lastname"];
$usuario=$getname["usuario"];
$gender=$getname["genero"];
$query=mysql_query("select * from prueba where usuario=$usuario");
$getname=mysql_fetch_array($query); //linea 11 aqui esta el warning
?>
estaba bien como lo pusiste, el unico problema debe ser el que nombra whk.
el problema esta en modificarperfil.php, en estas lineas
<?php
include("function.php");
include("getdata.php");
include("connect.php"); //incluimos el connect.php que contiene los datos de la conexión a la db y la sesión
if(!isset($_GET['usuario'])){
echo 'No se ha seleccionado ningun usuario.';
}else{
$query=mysql_query("SELECT * FROM prueba WHERE usuario=$usuario ");
if(mysql_num_rows($usuario)>0){
$query=mysql_fetch_array($usuario);
//todo comprobado, ahora solo falta mostrar los datos
echo 'Bienvenid@ <b>'.$usuario[usuario].'</b><br>';
}else{
echo 'El usuario seleccionado no existe';
}
}
?>
pero hace referencia a getdata.php porque ahi es donde se define el argumento que se le esta pasando a mysql_fetch_array(), el cual no es un "resultset"
en getdata.php no hay funciones xD esas estan en function.php, igual le faltan las comillas simples al rededor de $usuario
ahora que lo veo, si se refiere a eso xD hahahaha estoy hablando de errores posteriores :xD
me confundo... tenes razon, me guie por el nombre de las funciones y no por el nombre del archivo ¬¬ jajaj. pero entonces, de donde sacas el $usuario!?!?!? en getdata primero usa un $usuario y despues lo declara :o
Bueno primero gracias por responder, a los que se hayan tomado el trabajo de hacerlo.Segundo queria comentarles, el warning ya no me salta en el getdata.php, pero en el mismo archivo tengo un notice de undefined variable: usuario.
Lo que yo quiero hacer es que al tocar en modificar perfil, le salten los datos de la bd, pero por ahora nada...
Cambié en el modificarperfil.php esto que me dijeron:
//comprobamos si esa id existe
$query=mysql_query("SELECT * FROM prueba WHERE usuario='$usuario' ");
if(mysql_num_rows('$usuario')>0){
$query=mysql_fetch_array('$usuario');
Pero aún no pasa nada, alguien tiene alguna idea de qué puede ser lo que esté funcionando mal?
es que de alguna forma tenes que pasar usuario!!!!
por ejemplo, tenes un form con:
<input type="text" name="user"><input type="submit">
entonces:
$usuario = $_REQUEST['user'];
Y ten en cuenta que el error de las comillas esta en todos tus archivos...
no solo eso.. le sigues pasando un parametro erroneo a las funciones de mysql... vuelve a leer detenidamente todas las respuestas y vas a concluir en todos tus errores :P
Si, lo sé e hice lo que me han dicho, pero igual no aparece lo que quiero que aparezca.
Gracias.
porq no subis como llamas a cada archivo (me refiero al modificar perfil). pone el codigo! trata de aportar un poco mas de info..!
Citarif(!isset($_GET['usuario'])){
echo 'No se ha seleccionado ningun usuario.';
}else{
$query=mysql_query("SELECT * FROM prueba WHERE usuario=$usuario ");
donde está definido $usuario? no habrás querido decir $_GET['usuario'] ?
Cita de: Nakp en 5 Marzo 2010, 19:27 PM
el problema esta en modificarperfil.php, en estas lineas
<?php
include("function.php");
include("getdata.php");
include("connect.php"); //incluimos el connect.php que contiene los datos de la conexión a la db y la sesión
if(!isset($_GET['usuario'])){
echo 'No se ha seleccionado ningun usuario.';
}else{
$query=mysql_query("SELECT * FROM prueba WHERE usuario=$usuario ");
if(mysql_num_rows($usuario)>0){
$query=mysql_fetch_array($usuario);
//todo comprobado, ahora solo falta mostrar los datos
echo 'Bienvenid@ <b>'.$usuario[usuario].'</b><br>';
}else{
echo 'El usuario seleccionado no existe';
}
}
?>
pero hace referencia a getdata.php porque ahi es donde se define el argumento que se le esta pasando a mysql_fetch_array(), el cual no es un "resultset"
en getdata.php no hay funciones xD esas estan en function.php, igual le faltan las comillas simples al rededor de $usuario
ahora que lo veo, si se refiere a eso xD hahahaha estoy hablando de errores posteriores :xD
if(mysql_num_rows($usuario)>0){
$query=mysql_fetch_array($usuario);
estas dos funciones dan errores porque el resultado de la query es vacia porque mysql_query falló y no da error o warning, para eso se usa mysql_error()
asi es.. le esta pasando $usuario en vez de $query :rolleyes:
igualmente faltaria modificar la variable $usuario antes de implementarla
realmente faltaría hacer todo el script denuevo
Acá posteo por las dudas el script del index.php
<?php
error_reporting(E_ALL ^ E_NOTICE);
ob_start();
define('INCLUDE_CHECK',true);
require("connect.php");
//Archivos incluidos solo si el INCLUDE_CHECK está definido
session_name('pLogin');
//Empezando la sesión
session_set_cookie_params(2*7*24*60*60);
//La cookie vive por 2 semanas
session_start();
if($_SESSION['id'] && !isset($_COOKIE['pRemember']) && !$_SESSION['rememberMe'])
{
//Si está logueado, pero no tiene la cookie dmRemember (el navegador se reinicia)
// y si no ha checkeado la rememberMe checkbox:
$_SESSION=array();
session_destroy();
//Destruir la sesion
}
if(isset($_GET['logoff']))
{
$_SESSION=array();
session_destroy();
header("Location: index.php");
exit;
}
if($_POST['submit']=='Ingresar')
{
//checando si el login form ha sido submit
$err=array();
//Tira los errores nuestros
if(!$_POST['username'] || !$_POST['password'])
$err[]='Todos los campos deben ser completados!';
if(!count($err))
{
$_POST['username']=mysql_real_escape_string($_POST['username']);
$_POST['password']=mysql_real_escape_string($_POST['password']);
$_POST['rememberMe']=(int)$_POST['rememberMe'];
//escaping all input data
$row=mysql_fetch_assoc(mysql_query("SELECT id,usuario FROM prueba WHERE usuario='{$_POST['username']}' AND pass='".md5($_POST['password'])."'"));
if($row['usuario'])
{
//Si todo está logueado correctamente
//$_SESSION['username']=$row['user'];
$_SESSION['usuario']=$row['usuario'];
$_SESSION['id']=$row['id'];
$_SESSION['sexo']=$row['sexo'];
$_SESSION['rememberMe']=$_POST['rememberMe'];
//Store some data in the session
setcookie('dmRemember',$_POST['rememberMe']);
}
else $err[]='Usuario y/o Password incorrectos!';
}
if($err)
$_SESSION['msg']['login-err']=implode('<br />', $err);
//Guardamos los mensajes de error en la sesion
header("Location: index.php");
exit;
}
else if($_POST['submit']=='Registrar')
{
//Si el formulario de registro ha sido enviado
$err=array();
if(strlen($_POST['firstname'])>100)
{
$err[]='Tu nombre(s) debe tener menos de 100 caracteres!';
}
if(!preg_match('/[^0-9\-\_\.]+/i',$_POST['firstname']))
{
$err[]='Tu nombre(s) contiene caracteres inválidos!';
}
if(strlen($_POST['lastname'])>100)
{
$err[]='Tu apellido debe tener menos de 100 caracteres!';
}
if(!preg_match('/[^0-9\-\_\.]+/i',$_POST['lastname']))
{
$err[]='Tu apellido contiene caracteres inválidos!';
}
if(strlen($_POST['username'])<4 || strlen($_POST['username'])>100)
{
$err[]='Tu nombre de usuario debe tener entre 4 y 100 caracteres!';
}
if(preg_match('/[^a-z0-9\-\_\.]+/i',$_POST['username']))
{
$err[]='Tu nombre de usuario contiene caracteres invalidos!';
}
if(strlen($_POST['password'])<6 || strlen($_POST['password'])>32)
{
$err[]='Tu contraseña debe tener entre 6 y 32 caracteres!';
}
if(preg_match('/[^a-z0-9\-\_\.]+/i',$_POST['password']))
{
$err[]='Tu contraseña es débil!';
}
if($_POST['repassword']!=$_POST['password'])
{
$err[]='Tu repeticion de password es distinta de la primera!';
}
if(!checkEmail($_POST['email']))
{
$err[]='Tu email no es válido!';
}
if(!count($err))
{
//Si no hay errores
$_POST['email']=mysql_real_escape_string($_POST['email']);
$_POST['password']=mysql_real_escape_string($_POST['password']);
$_POST['username']=mysql_real_escape_string($_POST['username']);
$_POST['firstname']=mysql_real_escape_string($_POST['firstname']);
$_POST['lastname']=mysql_real_escape_string($_POST['lastname']);
$_POST['sexo']=mysql_real_escape_string($_POST['sexo']);
//Escape the input data
mysql_query(" INSERT INTO prueba(firstname,lastname,usuario,pass,email,sexo,dt)
VALUES('".$_POST['firstname']."','".$_POST['lastname']."','".$_POST['username']."','".md5($_POST['password'])."','".$_POST['email']."','".$_POST['sexo']."',NOW())");
if(mysql_affected_rows($link)==1)
{
send_mail( 'test@test.com',
$_POST['email'],
'Registración de prueba',
'Tu nombre de usuario es: '.$username.'\n Tu contraseña es: '.$password);
$_SESSION['msg']['reg-success']='Te hemos enviado un email con tu información de registro!';
}
else $err[]='El nombre de usuario ya está en uso!';
}
if(count($err))
{
$_SESSION['msg']['reg-err']=implode('<br />',$err);
}
header("Location: index.php");
exit;
}
?>
Ya cambié $usuario por $query. No sé que mas hacer, :(
intentalo así:
<?php
include("function.php");
include("getdata.php");
include("connect.php");
if(isset($_GET['usuario'])){
if($query = mysql_query("
SELECT * FROM prueba
WHERE usuario='".mysql_real_escape_string($_GET['usuario'])."'
LIMIT 1
")){
$usuario = mysql_fetch_array($query, MYSQL_ASSOC);
if(is_array($usuario[0])){
$usuario = $usuario[0];
}
echo '
Bienvenid@
<b>'.htmlspecialchars($usuario['usuario'], ENT_QUOTES).'</b>
<br />
';
}else{
echo 'El usuario seleccionado no existe';
}
}else{
echo 'No se ha seleccionado ningun usuario.';
}
?>
recuerda que mysql_fetch_array() te entrega un array dimensional por cada resultado, por lo tantoo el primer valor es $usuario[0].
prueba con un print_r($usuario);
Donde dice:
if(!preg_match('/[^0-9\-\_\.]+/i',$_POST['firstname']))
no necesitas ser tan restrictivo, puedes mantener todo tipo de carácteres si sabes procesarlos bién.
saludos.
Cita de: WHK en 7 Marzo 2010, 05:18 AM
intentalo así:
<?php
include("function.php");
include("getdata.php");
include("connect.php");
if(isset($_GET['usuario'])){
if($query = mysql_query("
SELECT * FROM prueba
WHERE usuario='".mysql_real_escape_string($_GET['usuario'])."'
LIMIT 1
")){
$usuario = mysql_fetch_array($query, MYSQL_ASSOC);
if(is_array($usuario[0])){
$usuario = $usuario[0];
}
echo '
Bienvenid@
<b>'.htmlspecialchars($usuario['usuario'], ENT_QUOTES).'</b>
<br />
';
}else{
echo 'El usuario seleccionado no existe';
}
}else{
echo 'No se ha seleccionado ningun usuario.';
}
?>
recuerda que mysql_fetch_array() te entrega un array dimensional por cada resultado, por lo tantoo el primer valor es $usuario[0].
prueba con un print_r($usuario);
Donde dice:
if(!preg_match('/[^0-9\-\_\.]+/i',$_POST['firstname']))
no necesitas ser tan restrictivo, puedes mantener todo tipo de carácteres si sabes procesarlos bién.
saludos.
Bueno muchas gracias, por tomarte el trabajo, pero no hay forma, tal vez me haya olvidado de declarar $usuario. Es tarde y no me da la cabeza ya, jaja.
Por cierto es "no necesitas ser tan restrictiva" jaja, soy mujer.
Gracias, saludos
es que mira... es un desorden
incluyes "function.php" aqui no hay problema, incluyes "getdata.php" y este a su vez connect.php, y mas abajo vuelves a incluir connect.php (esto en modificarperfil.php)
en getdata.php haces esto
<?php
include "connect.php";
$query=mysql_query("select * from prueba where usuario=$usuario");
$getname=mysql_fetch_array($query); //linea 11 aqui esta el warning
$firstname=$getname["firstname"];
$lastname=$getname["lastname"];
$usuario=$getname["usuario"];
$gender=$getname["genero"];
?>
usas $usuario antes de definirlo, ademas no lo encierras en comillas simples, esto es en las inclusiones xD (el orden que lleva en modificarperfil.php)
ahora en modificarperfil.php
<?php
include("function.php");
include("getdata.php");
include("connect.php"); //incluimos el connect.php que contiene los datos de la conexión a la db y la sesión
if(!isset($_GET['usuario'])){
echo 'No se ha seleccionado ningun usuario.';
}else{
$query=mysql_query("SELECT * FROM prueba WHERE usuario=$usuario ");
if(mysql_num_rows($usuario)>0){
$query=mysql_fetch_array($usuario);
//todo comprobado, ahora solo falta mostrar los datos
echo 'Bienvenid@ <b>'.$usuario[usuario].'</b>
';
}else{
echo 'El usuario seleccionado no existe';
}
}
?>
usas $usuario, que ya esta definido pero no encerrado entre comillas simples, y en las sig lineas, en vez de procesar la $query, que debería ser el parametro de mysql_num_rows() y mysql_fetch_array(), le pasas $usuario xD
Cita de: WHK en 7 Marzo 2010, 05:07 AM
realmente faltaría hacer todo el script denuevo
+1 ;-)
Bueno Nakp, hice lo que dijiste. Te comento uso el ZendStudio, para hacer debug en el codigo.
Cambié en el modificarperfil.php:
<?php
include('function.php');
include('getdata.php');
include('connect.php'); //incluimos el connect.php que contiene los datos de la conexión a la db y la sesión
if(!isset($_GET['usuario'])){
echo 'No se ha seleccionado ningun usuario.';
}else{
$query=mysql_query("SELECT * FROM prueba WHERE usuario='$usuario' ");
if(mysql_num_rows($query)>0){
$query=mysql_fetch_array($query);
//todo comprobado, ahora solo falta mostrar los datos
echo 'Bienvenid@ <b>'.$usuario[usuario].'</b><br>';
}else{
echo 'El usuario seleccionado no existe';
}
}
?>
En el getdata.php:
<?php
include("connect.php");
$query=mysql_query("select * from prueba where usuario='$usuario'");
$getname=mysql_fetch_array($query); //linea 11 aqui esta el warning
$usuario=$getname["usuario"];
$firstname=$getname["firstname"];
$lastname=$getname["lastname"];
$gender=$getname["genero"];
?>
Y el function.php:
<?php
function getfname($usuario)
{
$query = mysql_query("select * from prueba where usuario='$usuario' ");
$getname= mysql_fetch_array($query);
$firstname= $getname["firstname"];
return $firstname;
}
function getlname($usuario)
{
$query =mysql_query("select * from prueba where usuario='$usuario' ");
$getname= mysql_fetch_array($query);
$lastname=$getname["lastname"];
return $lastname;
}
function getusuario($usuario)
{
$query=mysql_query("select * from prueba where usuario='$usuario' ");
$getname=mysql_fetch_array($query);
$usuario=$getname["usuario"];
return $usuario;
}
function getgender ($usuario)
{
$query=mysql_query("select * from prueba where usuario='$usuario' ");
$getname=mysql_fetch_array($query);
$gender=$getname["Genero"];
return $gender;
}
?>
Ahora el problema es que al hacer el debug en modificarperfil, siempre salta la linea del "No se ha seleccionado ningun usuario", o sea creo que no sigue las lineas siguientes. Traté de quitarle al getdata el include ('connect.php') pero despues no se podia conectar. Y en el getdata, en la linea 7 un notice de Undefined variable,
$query=mysql_query("select * from prueba where usuario='$usuario'");
.
Traté de definirlo mas arriba pero ni ahi.
Bueno gracias a todos.
Cita de: Castg! en 7 Marzo 2010, 15:38 PM
Cita de: WHK en 7 Marzo 2010, 05:07 AM
realmente faltaría hacer todo el script denuevo
+1 ;-)
Castg! es lo que hay, :-(
Cita de: den_22 en 7 Marzo 2010, 16:57 PM
Bueno Nakp, hice lo que dijiste. Te comento uso el ZendStudio, para hacer debug en el codigo.
En el getdata.php:
<?php
include("connect.php");
$query=mysql_query("select * from prueba where usuario='$usuario'");
$getname=mysql_fetch_array($query); //linea 11 aqui esta el warning
$usuario=$getname["usuario"];
$firstname=$getname["firstname"];
$lastname=$getname["lastname"];
$gender=$getname["genero"];
?>
te falta eso... estas usando usuario (primera linea resaltada) pero lo defines despues (segunda linea resaltada) el orden es importante :P
Nakp, igual dice undefined variable getname, lo puse de esta manera. Pero si ya está declarada en function. Voy a tirar la compu por la ventana
<?php
include("connect.php");
$usuario=$getname["usuario"];
$query=mysql_query("select * from prueba where usuario='$usuario'");
$getname=mysql_fetch_array($query);
$firstname=$getname["firstname"];
$lastname=$getname["lastname"];
$gender=$getname["genero"];
?>
estas llamando una funcion o un vector?
creo que es
$usuario = gefname('usuario');
o
$usuario = $_POST['username'];
no se de donde sacas $getname hehe
$getname=mysql_fetch_array($query);
tenes un problema con la definicion de variables :S porq la usas y despues la definis. la primer variable $usuario la tenes que poner como yo te dije! y tambien nakp te lo dijo. una vez que hallas elegido el usuario, ahi consultas la base de datos y despues le das el valor a getname.
Bueno ahora modifiqué algunas cosas y al hacer el debug, va bien,pero...
Ahora comento lo que pasa.
El modificarperfil.php:
<?php
include("function.php");
include("getdata.php");
include("connect.php"); //incluimos el connect.php que contiene los datos de la conexión a la db y la sesión
if(!isset($_GET['usuario'])){
echo 'No se ha seleccionado ningun usuario.';
}else{
$query=mysql_query("SELECT * FROM prueba WHERE usuario='$usuario' ");
if(mysql_num_rows($query)>0){
$query=mysql_fetch_array($query);
//todo comprobado, ahora solo falta mostrar los datos
echo 'Bienvenid@ <b>'.$usuario[usuario].'</b><br>';
}else{
echo 'El usuario seleccionado no existe';
}
}
?>
El getdata.php:
<?php
include("connect.php");
$usuario=getusuario('usuario');
$query=mysql_query("select * from prueba where usuario='$usuario'");
$getusuario=mysql_fetch_array($query);
$firstname=getfname('firstname');
$lastname=getlname('lastname');
$gender=getgender('Genero');
?>
El function.php:
<?php
function getfname($usuario)
{
$query = mysql_query("select * from prueba where usuario='$usuario'");
$getname= mysql_fetch_array($query);
$firstname= $getname["firstname"];
return $firstname;
}
function getlname($usuario)
{
$query =mysql_query("select * from prueba where usuario='$usuario' ");
$getname= mysql_fetch_array($query);
$lastname=$getname["lastname"];
return $lastname;
}
function getusuario($usuario)
{
$query=mysql_query("select * from prueba where usuario='$usuario' ");
$getname=mysql_fetch_array($query);
$usuario=$getname["usuario"];
return $usuario;
}
function getgender ($usuario)
{
$query=mysql_query("select * from prueba where usuario='$usuario' ");
$getname=mysql_fetch_array($query);
$gender=$getname["Genero"];
return $gender;
}
?>
Lo que pasa es que ahora ya no hay errores en el getdata, pero en el modificarperfil, al llegar a la linea del if(!isset($_GET['usuario'])){ siempre en el No se ha seleccionado ningun usuario, por lo que no sigue el }else{.
Y si pongo if(!isset($_SESSION['usuario'])){
echo 'No se ha seleccionado ningun usuario.';
}else{
O sea es como que no pasa el else.
Gracias a todos los que han contestado. ;-)
a ver asi:
modificarperfil.php :
<?php
$usuario = $_GET['usuario'];
include("function.php");
include("getdata.php");
include("connect.php"); //incluimos el connect.php que contiene los datos de la conexión a la db y la sesión
if(!isset($usuario)){
echo 'No se ha seleccionado ningun usuario.';
}else{
$query=mysql_query("SELECT * FROM prueba WHERE usuario='$usuario' ");
if(mysql_num_rows($query)>0){
$query=mysql_fetch_array($query);
//todo comprobado, ahora solo falta mostrar los datos
echo 'Bienvenid@ <b>'.$query['usuario'].'</b><br>';
}else{
echo 'El usuario seleccionado no existe';
}
}
?>
getdata.php :
<?php
$query=mysql_query("select * from prueba where usuario='$usuario'");
$getusuario=mysql_fetch_array($query);
$firstname=getfname('firstname');
$lastname=getlname('lastname');
$gender=getgender('Genero');
?>
functions.php :
<?php
function getfname($usuario)
{
$query = mysql_query("select * from prueba where usuario='$usuario'");
$getname= mysql_fetch_array($query);
$firstname= $getname["firstname"];
return $firstname;
}
function getlname($usuario)
{
$query =mysql_query("select * from prueba where usuario='$usuario' ");
$getname= mysql_fetch_array($query);
$lastname=$getname["lastname"];
return $lastname;
}
function getgender ($usuario)
{
$query=mysql_query("select * from prueba where usuario='$usuario' ");
$getname=mysql_fetch_array($query);
$gender=$getname["Genero"];
return $gender;
}
?>
ahi te tiene que andar. primero saque un include repetido. segundo saque la funcion getusuario que es en vano porq devuelve el mismo resultado.
Castg! muchas gracias por responder, te comento todo bien, pero el problema con esto es que el $usuario=$_GET['usuario'] del modificarperfil.php dice undefined index:usuario.
Mas atras en una respuesta que di puse mi index, en el que hacen login, tal vez tenga algo que ver.
El problema está en eso.
Igual si no sale ya fue.
Gracias nuevamente.
llamalo asi: modificarperfil.php?usuario=den_22
leiste el libro que te recomende??
Bueno primero que nada tengo que agradecerle a Castg!, que me ayudó.
Ahora tengo un problemita mas, el tema es que en vez de mostrarme todos los datos de la bd, me muestra solo el que dice Nombre de usuario.
Acá los codigos como quedaron:
modificarperfil.php:
<?php
session_name('pLogin');
session_set_cookie_params(2*7*24*60*60);
session_start();
$usuario = $_SESSION['usuario'];
include("function.php");
include("getdata.php");
include("connect.php"); //incluimos el connect.php que contiene los datos de la conexión a la db y la sesión
if(!isset($usuario)){
echo 'No se ha seleccionado ningun usuario.';
}else{
$query=mysql_query("SELECT * FROM prueba WHERE usuario='$usuario' ");
if(mysql_num_rows($query)>0){
$query=mysql_fetch_array($query);
//todo comprobado, ahora solo falta mostrar los datos
echo 'Bienvenid@ <b>'.$query['usuario'].'</b><br>';
}else{
echo 'El usuario seleccionado no existe';
}
}
?>
y la parte del html del modificarperfil.php:
<table><form method=post action="update_cuenta.php">
<tr><td>Nombre(s):</td><td><input type="text" name="firstname" id="firstname" value=" <?php echo $firstname;?> " /></td></tr>
<tr><td>Apellido:</td><td><input type="text" name="lastname" id="lastname" value=" <?php echo $lastname;?> " /></td></tr>
<tr><td>Nombre de usuario:</td><td><input type="text" id="username" name="username" value=" <?php echo $usuario;?> " /></b></td></tr>
<tr><td>Genero:</td><td><input type="text" name="genero" value="<?php echo $gender;?> " /></td></tr>
<tr><td></td>
<td><input type=submit value=Update></td></tr>
</form></table>
Que pudo haber pasado?
Es un dolor de cabeza ese code, creas tres funciones con la misma rutina, cuando puedes usar una sola para todo pasandole un parámetro nada mas, el nombre del usuario y el tipo de dato a devolver.
$firstname=getfname('firstname');
$lastname=getlname('lastname');
$gender=getgender('Genero');
son los valores firstname, lastname, Genero los nombres de usuario?
Ya lo arreglé en vez de <?php echo $firstname;?> era <?php echo $query[firstname];?>
Hola!, siguiendo con el hilo del post, tengo otras dudas que aclarar. Digamos que el modificarperfil ya muestra los datos de la bd, ahora estoy tratando de hacer el update_cuenta.php y en el perfil.php, que aparezcan luego esos datos que se modificaron, igual si ya está el nombre de usuario de la bd estoy probando si aparece en el perfil.php.
Los codigos :
update_cuenta.php:
<?
include('connect.php'); //incluimos el config.php que contiene los datos de la conexión a la db
include('function.php');
include('getdata.php')
$firstname=$query['firstname'];
$lastname=$getname['lastname'];
//introduccimos la modificacion hecha por el usuario
mysql_query("
UPDATE prueba
SET firstname='$firstname',
lastname='$lastname',
WHERE usuario='$_SESSION[usuario]' ");
echo '<div class="Estilo7">Datos Guardados con éxito</div>';
?>
y el perfil.php:
<?php
error_reporting(E_ALL ^ E_NOTICE);
session_name('pLogin');
session_set_cookie_params(2*7*24*60*60);
session_start();
include("connect.php");
include("function.php");
include("getdata.php");
?>
en el html del perfil:
<td width="178">Nombre:</td>
<td width="158"><?php echo $query['firstname'];?></td>
</tr>
osea, hay que usar $_POST o sino $_REQUEST pero me decis que te sigue sin funcionar :S
Si, no hay forma de hacerlo andar, ya probé con los dos.
Cita de: den_22 en 10 Marzo 2010, 00:58 AM
Hola!, siguiendo con el hilo del post, tengo otras dudas que aclarar. Digamos que el modificarperfil ya muestra los datos de la bd, ahora estoy tratando de hacer el update_cuenta.php y en el perfil.php, que aparezcan luego esos datos que se modificaron, igual si ya está el nombre de usuario de la bd estoy probando si aparece en el perfil.php.
Guarda los datos viejos en un Array o en una o varias variables dependiendo de los datos que quieras mostrar. O si el problema es saber cuales campos se a modificado del formulario es facir, toma todos los formularios y el que contenga valor ese se a modificado xD.
Cita de: Castg! en 10 Marzo 2010, 03:47 AM
osea, hay que usar $_POST o sino $_REQUEST pero me decis que te sigue sin funcionar :S
Recuerda que $_REQUEST acepta tanto POST como GET, osea sustitulle a los dos, pero no es recomendable usarlo ya que si un formulario declaras que los datos se enviaran via POST y usa $_REQUEST para procesar los datos, y mandas GET tambien lo aceptaria...
igualmente, lo propuse por si habia algun error en el metodo :P pero no :S
Lo puse de esta manera pero todavia nada :-(
update_cuenta.php:
<?
include('connect.php'); //incluimos el connnect.php que contiene los datos de la conexión a la db
include('function.php');
include('getdata.php')
$firstname=$_POST['firstname'];
$lastname=$_POST['lastname'];
//introduccimos la modificacion hecha por el usuario
mysql_query("
UPDATE prueba
SET firstname='$firstname',
lastname='$lastname',
WHERE usuario='$_SESSION[usuario]' ");
echo '<div class="Estilo7">Datos Guardados con éxito</div>';
?>
Los datos que se envian para modificar estan todos dentro de un formulario.
Debes comprovar si la consulta se a llevado con exito y hacer la consulta correctamente porque la haces a ninguna parte como me dijo OzX cuando tenia un problema similar xD.
http://blog.unijimpe.net/conectar-php-con-mysql/
Y como debo hacerlo, o sea yo quiero que esos datos modificados, vayan a parar a la bd, si le doy a editar perfil. Deberia poner algun include o algo asi?
Estaba pensando en poner algo asi, en el formulario, un boton que tenga un action, entonces hacer un php de esta forma:
<?php
if ($action == "save")
{
mysql_query("update prueba set firstname='$firstname',lastname='$lastname' where usuario='$usuario'") or mysql_error();
}
else
{
echo '<META HTTP-EQUIV="Refresh" Content="0"; URL=index.php">';
}
?>
Ahora como podría definir el $action???
Algo asi funcionaria?
Hola, nuevamente yo. Hice algo asi con el codigo modificarperfil.php, quité el update_cuenta.php, pero igual no se hace la actualizacion.
modificarperfil.php:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<?php
error_reporting(E_ALL ^ E_NOTICE);
session_name('pLogin');
session_set_cookie_params(2*7*24*60*60);
session_start();
$usuario = $_SESSION['usuario'];
include("function.php");
include("getdata.php");
include("connect.php"); //incluimos el connect.php que contiene los datos de la conexión a la db y la sesión
if(!isset($usuario)){
echo 'No se ha seleccionado ningun usuario.';
}else{
$query=mysql_query("SELECT * FROM prueba WHERE usuario='$usuario' ");
if(mysql_num_rows($query)>0){
$query=mysql_fetch_array($query);
//todo comprobado, ahora solo falta mostrar los datos
echo 'Bienvenid@ <b>'.$query['usuario'].'</b><br>';
}else{
echo 'El usuario seleccionado no existe';
}
}
?>
<?php
if ($action == "submit")
{
mysql_query("update prueba set firstname='$firstname',lastname='$lastname' where usuario=$usuario") or mysql_error();
}
?>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Modificar perfil|Deemo|</title>
<link href="modificarperfil.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
body {
background-image: url(../images/fondito.png);
background-repeat: repeat;
}
-->
</style>
</head>
<body>
<div id="container_logo"></div>
<div id="container_modify"><div id="cont_first">
<div id="container_tabla">
<form method="post" action="#" >
<table width="330" border="0">
<tr>
<td width="213">Nombre de usuario:</td>
<td width="101"><input type="text" name="usuario" id="usuario" value=" <?php echo $query[usuario];?> " /></td>
</tr>
<tr>
<td>Nombre(s):</td>
<td><input type="text" name="firstname" id="firstname" value=" <?php echo $query[firstname]; ?> " /></td>
</tr>
<tr>
<td>Apellido:</td>
<td><input type="text" name="lastname" id="lastname" value=" <?php echo $query[lastname];?> " /></td>
</tr>
</table>
<div id="container_submit"> <input type="hidden" name="action" value="submit"><input type=image height=23 alt=Save width=87 src="../images/boton_submit.gif" border=0 name=submit> </div>
</form>
</div>
</div>
</div>
</body>
</html>
definitivamente no tenes en claro la definicion de palabras. te quiero decir como ya te lo dije hace un timepo. LEE ESE LIBRO QUE TE DIJE!! el de php y mysql para dummies!! va a ser lo mejor. porq tecnicamente terminamos el codigo nosotros :S. ahi pasa que pones un if para ver si esta la variable $usuario. y no la definis en ningun lugar!