Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => PHP => Mensaje iniciado por: den_22 en 5 Marzo 2010, 04:44 AM

Título: Perfil de un usuario, problema!
Publicado por: den_22 en 5 Marzo 2010, 04:44 AM
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:
Código (php) [Seleccionar]
<?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:

Código (php) [Seleccionar]
<?php
 
 
 
 
function getfname($usuario)
{
    
$query mysql_query("select * from prueba where usuario=$usuario");
    
$getnamemysql_fetch_array($query);
    
$firstname$getname["firstname"];
    return 
$firstname;
}
 
function 
getlname($usuario)
{
    
$query =mysql_query("select * from prueba where usuario=$usuario");
    
$getnamemysql_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:

Código (php) [Seleccionar]
<?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:
Código (php) [Seleccionar]
<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.

Código (sql) [Seleccionar]
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
Título: Re: Perfil de un usuario, problema!
Publicado por: Nakp en 5 Marzo 2010, 04:56 AM
Código (php,2,3) [Seleccionar]
$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?
Título: Re: Perfil de un usuario, problema!
Publicado por: Castg! en 5 Marzo 2010, 05:13 AM
mira, trata de primero definir las variables, y despues aplicarlas:

Código (php) [Seleccionar]
<?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...
Título: Re: Perfil de un usuario, problema!
Publicado por: Nakp en 5 Marzo 2010, 05:17 AM
ehm... las define en otro archivo que es incluido antes de tratarlo :P el error no va por ahi xD
Título: Re: Perfil de un usuario, problema!
Publicado por: WHK en 5 Marzo 2010, 08:44 AM
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.
Título: Re: Perfil de un usuario, problema!
Publicado por: Castg! en 5 Marzo 2010, 18:31 PM
nakp= donde? nunca definio $usuario :S. tambien estaria probar lo que decis...

whk= o tambien puede que el usuario tenga espacios :S
Título: Re: Perfil de un usuario, problema!
Publicado por: Nakp en 5 Marzo 2010, 19:03 PM
en getdata.php, revisa los codigos ps xD es el segundo archivo que incluye
Título: Re: Perfil de un usuario, problema!
Publicado por: Castg! en 5 Marzo 2010, 19:04 PM
sisi, getdatalovi xD pero fijate que son todas funciones, y no veo que las llame :S


ademas lo mio esta erroneo :S
Código (php) [Seleccionar]

<?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.
Título: Re: Perfil de un usuario, problema!
Publicado por: Nakp en 5 Marzo 2010, 19:27 PM
el problema esta en modificarperfil.php, en estas lineas


Código (php,13,14) [Seleccionar]
<?php
 
include("function.php");
include(
"getdata.php");
include(
"connect.php"); //incluimos el connect.php que contiene los datos de la conexi&#243;n a la db y la sesi&#243;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
Título: Re: Perfil de un usuario, problema!
Publicado por: Castg! en 5 Marzo 2010, 19:39 PM
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
Título: Re: Perfil de un usuario, problema!
Publicado por: den_22 en 6 Marzo 2010, 02:56 AM
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:
Código (php) [Seleccionar]
//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?



Título: Re: Perfil de un usuario, problema!
Publicado por: Castg! en 6 Marzo 2010, 17:13 PM
es que de alguna forma tenes que pasar usuario!!!!

por ejemplo, tenes un form con:

Código (html4strict) [Seleccionar]
<input type="text" name="user"><input type="submit">


entonces:

Código (php) [Seleccionar]
$usuario = $_REQUEST['user'];
Título: Re: Perfil de un usuario, problema!
Publicado por: MinusFour en 7 Marzo 2010, 01:11 AM
Y ten en cuenta que el error de las comillas esta en todos tus archivos...
Título: Re: Perfil de un usuario, problema!
Publicado por: Nakp en 7 Marzo 2010, 01:45 AM
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
Título: Re: Perfil de un usuario, problema!
Publicado por: den_22 en 7 Marzo 2010, 03:37 AM
Si, lo sé e hice lo que me han dicho, pero igual no aparece lo que quiero que aparezca.

Gracias.
Título: Re: Perfil de un usuario, problema!
Publicado por: Castg! en 7 Marzo 2010, 03:49 AM
porq no subis como llamas a cada archivo (me refiero al modificar perfil). pone el codigo! trata de aportar un poco mas de info..!
Título: Re: Perfil de un usuario, problema!
Publicado por: WHK en 7 Marzo 2010, 04:37 AM
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


Código (php,13,14) [Seleccionar]
<?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()
Título: Re: Perfil de un usuario, problema!
Publicado por: Nakp en 7 Marzo 2010, 04:46 AM
asi es.. le esta pasando $usuario en vez de $query :rolleyes:
Título: Re: Perfil de un usuario, problema!
Publicado por: Castg! en 7 Marzo 2010, 04:52 AM
igualmente faltaria modificar la variable $usuario antes de implementarla
Título: Re: Perfil de un usuario, problema!
Publicado por: WHK en 7 Marzo 2010, 05:07 AM
realmente faltaría hacer todo el script denuevo
Título: Re: Perfil de un usuario, problema!
Publicado por: den_22 en 7 Marzo 2010, 05:13 AM
Acá posteo por las dudas el script del index.php


Código (php) [Seleccionar]
<?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'])<|| 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'])<|| 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,   :(
Título: Re: Perfil de un usuario, problema!
Publicado por: WHK en 7 Marzo 2010, 05:18 AM
intentalo así:
Código (php) [Seleccionar]
<?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($queryMYSQL_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.
Título: Re: Perfil de un usuario, problema!
Publicado por: den_22 en 7 Marzo 2010, 05:32 AM
Cita de: WHK en  7 Marzo 2010, 05:18 AM
intentalo así:
Código (php) [Seleccionar]
<?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($queryMYSQL_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
Título: Re: Perfil de un usuario, problema!
Publicado por: Nakp en 7 Marzo 2010, 06:53 AM
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


Código (php,7,12) [Seleccionar]
<?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

Código (php,12,13,14) [Seleccionar]
<?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
Título: Re: Perfil de un usuario, problema!
Publicado por: 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  ;-)
Título: Re: Perfil de un usuario, problema!
Publicado por: 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.

Cambié en el modificarperfil.php:

Código (php) [Seleccionar]
<?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:

Código (php) [Seleccionar]
<?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:

Código (php) [Seleccionar]
<?php




function getfname($usuario)
{
$query mysql_query("select * from prueba where usuario='$usuario' ");
$getnamemysql_fetch_array($query);
$firstname$getname["firstname"];
return $firstname;
}

function 
getlname($usuario)
{
$query =mysql_query("select * from prueba where usuario='$usuario' ");
$getnamemysql_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,
Código (php) [Seleccionar]
$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,  :-(
Título: Re: Perfil de un usuario, problema!
Publicado por: Nakp en 7 Marzo 2010, 19:20 PM
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:

Código (php,7,10) [Seleccionar]
<?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
Título: Re: Perfil de un usuario, problema!
Publicado por: den_22 en 7 Marzo 2010, 19:47 PM
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
Código (php) [Seleccionar]
<?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"];
 
?>
Título: Re: Perfil de un usuario, problema!
Publicado por: Nakp en 7 Marzo 2010, 20:10 PM
estas llamando una funcion o un vector?

creo que es
Código (php) [Seleccionar]

$usuario = gefname('usuario');


o

Código (php) [Seleccionar]
$usuario = $_POST['username'];

no se de donde sacas $getname hehe
Título: Re: Perfil de un usuario, problema!
Publicado por: Castg! en 7 Marzo 2010, 20:20 PM
Código (php) [Seleccionar]
$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.
Título: Re: Perfil de un usuario, problema!
Publicado por: den_22 en 7 Marzo 2010, 23:21 PM
Bueno ahora modifiqué algunas cosas y al hacer el debug, va bien,pero...
Ahora comento lo que pasa.

El modificarperfil.php:

Código (php) [Seleccionar]
<?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:

Código (php) [Seleccionar]
<?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:

Código (php) [Seleccionar]
<?php


function getfname($usuario)
{
$query mysql_query("select * from prueba where usuario='$usuario'");
$getnamemysql_fetch_array($query);
$firstname$getname["firstname"];
return $firstname;
}

function 
getlname($usuario)
{
$query =mysql_query("select * from prueba where usuario='$usuario' ");
$getnamemysql_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
Código (php) [Seleccionar]
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.  ;-)
Título: Re: Perfil de un usuario, problema!
Publicado por: Castg! en 8 Marzo 2010, 00:13 AM
a ver asi:

modificarperfil.php :

Código (php) [Seleccionar]
<?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 :

Código (php) [Seleccionar]
<?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 :

Código (php) [Seleccionar]
<?php
 
 
function getfname($usuario)
{
$query mysql_query("select * from prueba where usuario='$usuario'");
$getnamemysql_fetch_array($query);
$firstname$getname["firstname"];
return $firstname;
}
 
function 
getlname($usuario)
{
$query =mysql_query("select * from prueba where usuario='$usuario' ");
$getnamemysql_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.
Título: Re: Perfil de un usuario, problema!
Publicado por: den_22 en 8 Marzo 2010, 02:28 AM
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.
Título: Re: Perfil de un usuario, problema!
Publicado por: Castg! en 8 Marzo 2010, 04:20 AM
llamalo asi: modificarperfil.php?usuario=den_22

leiste el libro que te recomende??
Título: Re: Perfil de un usuario, problema!
Publicado por: den_22 en 9 Marzo 2010, 02:30 AM
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:

Código (php) [Seleccionar]
<?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:

Código (php) [Seleccionar]
<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?
Título: Re: Perfil de un usuario, problema!
Publicado por: cassiani en 9 Marzo 2010, 03:02 AM
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?
Título: Re: Perfil de un usuario, problema!
Publicado por: den_22 en 9 Marzo 2010, 03:12 AM
Ya lo arreglé en vez de <?php echo $firstname;?> era <?php echo $query[firstname];?>
Título: Re: Perfil de un usuario, problema!
Publicado por: 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.

Los codigos :

update_cuenta.php:

Código (php) [Seleccionar]
<?

include('connect.php'); //incluimos el config.php que contiene los datos de la conexi&oacute;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:

Código (php) [Seleccionar]
<?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:

Código (php) [Seleccionar]
<td width="178">Nombre:</td>
  <td width="158"><?php echo $query['firstname'];?></td>
  </tr>
Título: Re: Perfil de un usuario, problema!
Publicado por: 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
Título: Re: Perfil de un usuario, problema!
Publicado por: den_22 en 10 Marzo 2010, 12:53 PM
Si, no hay forma de hacerlo andar, ya probé con los dos.
Título: Re: Perfil de un usuario, problema!
Publicado por: ~ Yoya ~ en 10 Marzo 2010, 15:32 PM
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...
Título: Re: Perfil de un usuario, problema!
Publicado por: Castg! en 10 Marzo 2010, 22:35 PM
igualmente, lo propuse por si habia algun error en el metodo :P pero no :S
Título: Re: Perfil de un usuario, problema!
Publicado por: den_22 en 12 Marzo 2010, 00:27 AM
Lo puse de esta manera pero todavia nada  :-(

update_cuenta.php:

Código (php) [Seleccionar]
<?

include('connect.php'); //incluimos el connnect.php que contiene los datos de la conexi&oacute;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.
Título: Re: Perfil de un usuario, problema!
Publicado por: ~ Yoya ~ en 12 Marzo 2010, 00:50 AM
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/
Título: Re: Perfil de un usuario, problema!
Publicado por: den_22 en 12 Marzo 2010, 00:58 AM
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?
Título: Re: Perfil de un usuario, problema!
Publicado por: den_22 en 12 Marzo 2010, 01:17 AM
Estaba pensando en poner algo asi, en el formulario, un boton que tenga un action, entonces hacer un php de esta forma:

Código (php) [Seleccionar]
<?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?
Título: Re: Perfil de un usuario, problema!
Publicado por: den_22 en 13 Marzo 2010, 18:10 PM
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:

Código (php) [Seleccionar]
<!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>
Título: Re: Perfil de un usuario, problema!
Publicado por: Castg! en 14 Marzo 2010, 02:57 AM
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!