Foros del Web » Programando para Internet » PHP »

mostrar datos de usuario

Estas en el tema de mostrar datos de usuario en el foro de PHP en Foros del Web. hola necesito ayuda , he intentado todo el dia hacer que este codigo me muestre los datos del usuario que se logea solo los de ...

  #1 (permalink)  
Antiguo 27/10/2008, 18:55
 
Fecha de Ingreso: mayo-2008
Mensajes: 148
Antigüedad: 15 años, 11 meses
Puntos: 1
mostrar datos de usuario

hola necesito ayuda , he intentado todo el dia hacer que este codigo me muestre los datos del usuario que se logea solo los de el, tengo una base de datos que se llama estudio, esta tiene una tabla en donde esta toda la informacion de todos los usuarios, nombre, rut, etc...
lo que quiero es que al logearse el usuario, se haga una consulta a la bd en donde diga: comparar si "usuario y contraseña" coinsside con campos en bd, mostrar datos de la fila correspondiente a los campos.

la bd esta asi:

nombre:::::rut::::codigo::::documento
juan p :::::12::::12345 ::::bla bla
pedro :::::13::::12345 ::::ble ble

entonces si nombre y rut en el loguin coinsiden con algun campo mostrar fila completa.
nota: no quiero que me muestre toda la tabla solo la fila que coresponde al usuario.

aqui les dejo el codigo que llevo al momento:
Código PHP:
<?php 
ob_start
(); 
session_start(); 

//recojo el valor del formulario mediante $_POST 
$nombre $_POST['nombre']; 
$clave $_POST['clave']; 
$i=0

//conexion con mysql 
$dp_di="localhost"
$db_usuario="root"
$db_clave="admin"
$conectar=mysql_connect ($dp_di,$db_usuario,$db_clave); 
if (
$conectar==NULL

    
printf ("Error"); 


//conectamos con la base de datos prueba 
$db='estudio'
mysql_select_db($db$conectar); 

//hago la consulta a la tabla usuarios  
$consulta"SELECT * FROM principal WHERE rut_proveedor='$nombre' and codigo_bip=SHA1('$clave')"
$resultado=mysql_query($consulta,$conectar); 
//checas si devuelve un resultado la consulta 
if(mysql_fetch_array($resultado)!=0

$_SESSION['user']=$nombre//recojo en una sesion el nombre del usuario 
$_SESSION['password']=$clave//recojo en una sesion la contraseña del usuario para identificarse 

while($row mysql_fetch_array($resultado)) 
    { 
        
//$_SESSION['estudio']=$row[$i]; //recogo en una sesion el nombre de la bd que puede utilizar el usuario
if ($row mysql_fetch_array($resultado)){ 
   echo 
"<table border = '1'> \n"
   echo 
"<tr><td>Nombre</td><td>E-Mail</td></tr> \n"
   do { 
//aqui va los campos que quiero mostrar en pantalla
      
echo "<tr><td>".$row["nombre_proveedor"]."</td><td>".$row["rut_proveedor"]."</td></tr> \n"
   } while (
$row mysql_fetch_array($resultado)); 
   echo 
"</table> \n"
}   

        
//y todos los demas campos que deseas mostrar.
    

}if (
$resultado == FALSE)

//si llegas aqui es por que no se encontro el usuario o no coincidio con el password.. 
//hacemos lo que quieras.. 
echo "El usuario no existe"



?>
el problema de este codigo es qu no me imprime el resultado de la fila como lo explique antes en la pantalla.
espero puedan ayudarme
  #2 (permalink)  
Antiguo 27/10/2008, 22:14
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: mostrar datos de usuario

Se supone que tu consulta devolverá sólo una fiula no? (un solo usuario). La función mysql_fetch_array() (Lee el manual por favor: http://www.php.net/mysql_fetch_array) devuelve una a una las filas del resultado, y cuando se acaban empieza a devolver un valor booleano false. En tu código llamas 3 veces a esa función, y sólo en la primera llamada (la que usas para ver si hay registros) realmente se devuelven los resultados. En las otras no.

Para ver l cantidad de filas devueltas por tu consulta usa la función mysql_num_rows(). Luego asigna a una variable $datos el resultado de la función mysql_fetch_array(). Esta variable se convierte en un array con los datos de la fila devuelta (los datos de tu usuario).

Código php:
Ver original
  1. $consulta= "SELECT * FROM principal WHERE rut_proveedor='$nombre' and codigo_bip=SHA1('$clave')";  
  2. $resultado=mysql_query($consulta,$conectar);  
  3.  
  4. //checas si devuelve un resultado la consulta  
  5. if(mysql_num_rows() <> 1) {  
  6.   // Asignas la fila a una variable
  7.   $row = mysql_fetch_array($resultado);
  8.  
  9.   $_SESSION['user'] = $row['nombre']; //recojo en una sesion el nombre del usuario  
  10.   $_SESSION['password'] = $row['clave']; //recojo en una sesion la contraseña del usuario para identificarse  
  11.  
  12.  
  13.    //y todos los demas campos que deseas mostrar.
  14. }
Saludos,
  #3 (permalink)  
Antiguo 28/10/2008, 09:40
 
Fecha de Ingreso: mayo-2008
Mensajes: 148
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: mostrar datos de usuario

Cita:
Iniciado por okram Ver Mensaje
Se supone que tu consulta devolverá sólo una fiula no? (un solo usuario). La función mysql_fetch_array() (Lee el manual por favor: http://www.php.net/mysql_fetch_array) devuelve una a una las filas del resultado, y cuando se acaban empieza a devolver un valor booleano false. En tu código llamas 3 veces a esa función, y sólo en la primera llamada (la que usas para ver si hay registros) realmente se devuelven los resultados. En las otras no.

Para ver l cantidad de filas devueltas por tu consulta usa la función mysql_num_rows(). Luego asigna a una variable $datos el resultado de la función mysql_fetch_array(). Esta variable se convierte en un array con los datos de la fila devuelta (los datos de tu usuario).

Código php:
Ver original
  1. $consulta= "SELECT * FROM principal WHERE rut_proveedor='$nombre' and codigo_bip=SHA1('$clave')";  
  2. $resultado=mysql_query($consulta,$conectar);  
  3.  
  4.  
  5. //checas si devuelve un resultado la consulta  
  6. if(mysql_num_rows() <> 1) {  
  7.   // Asignas la fila a una variable
  8.   $row = mysql_fetch_array($resultado);
  9.  
  10.   $_SESSION['user'] = $row['nombre']; //recojo en una sesion el nombre del usuario  
  11.   $_SESSION['password'] = $row['clave']; //recojo en una sesion la contraseña del usuario para identificarse  
  12.  
  13.  
  14.    //y todos los demas campos que deseas mostrar.
  15. }
Saludos,
pues aun nada y ya no se que hacer me lei el manual que me dijiste pero aunque aplico ejemplos y los cambio etc no me resulta no me muestra la informacion

Última edición por aliyuwey; 28/10/2008 a las 10:10
  #4 (permalink)  
Antiguo 28/10/2008, 12:51
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: mostrar datos de usuario

Perdón, error mío. Se supone que el condicional que usas para ver si hay resultados se debe cumplir si mysql_num_rows() es igual a 1 (==), no diferente (<>):

Código php:
Ver original
  1. //checas si devuelve un resultado la consulta  
  2. if(mysql_num_rows() == 1) {
  #5 (permalink)  
Antiguo 28/10/2008, 14:19
 
Fecha de Ingreso: mayo-2008
Mensajes: 148
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: mostrar datos de usuario

Cita:
Iniciado por okram Ver Mensaje
Perdón, error mío. Se supone que el condicional que usas para ver si hay resultados se debe cumplir si mysql_num_rows() es igual a 1 (==), no diferente (<>):

Código php:
Ver original
  1. //checas si devuelve un resultado la consulta  
  2. if(mysql_num_rows() == 1) {
disculpa pero sige sin mostrar ningun resultado, me reconose el usuario y la contraseña pero no me imprime ningon resultado en pantalla, no me da ningun error solo no muestra nadaaparese la hoja en blanco nada mas
  #6 (permalink)  
Antiguo 28/10/2008, 14:27
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Respuesta: mostrar datos de usuario

Por que no haces directamente un if sobre la asignación de $row?; No digo que sea el problema, pero es lo mejor:
Código PHP:
if( $row mysql_fetch_array($resultado) ){
   ....

Y en cuanto a tu problema...
El el código original: Estas asignado, iterando y no se que más siempre sobre el mismo resource...Si vas a mover el puntero (o esperas eso) usá mysql_data_seek().
En el segundo código: no veo donde haces un simple echo, solo estas asignando valores a dos sessions. Hace lo mismo, si es uno un if sobre la asignación, si son varios un while directamente.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #7 (permalink)  
Antiguo 28/10/2008, 14:40
 
Fecha de Ingreso: mayo-2008
Mensajes: 148
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: mostrar datos de usuario

Cita:
Iniciado por nicolaspar Ver Mensaje
Por que no haces directamente un if sobre la asignación de $row?; No digo que sea el problema, pero es lo mejor:
Código PHP:
if( $row mysql_fetch_array($resultado) ){
   ....

Y en cuanto a tu problema...
El el código original: Estas asignado, iterando y no se que más siempre sobre el mismo resource...Si vas a mover el puntero (o esperas eso) usá mysql_data_seek().
En el segundo código: no veo donde haces un simple echo, solo estas asignando valores a dos sessions. Hace lo mismo, si es uno un if sobre la asignación, si son varios un while directamente.
aqui los dos codigos:
el primero de inicio de secion con un formulario simple:
Código 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>
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<
title>Documento sin t&iacute;tulo</title>
</
head>

<
body>
<
form name="formulario" method="post" action="final.php">
     <
div align="left"><strong><font size="3" face="Arial, Helvetica, sans-serif">Nombre 
       Usuario
:</font></strong></div>
<
input name="nombre" type="text" id="nombre" />
          <
div align="left"><font size="3" face="Arial, Helvetica, sans-serif"><strong>Contrase&ntilde;a:</strong></font></div>
<
input name="clave" type="password" id="clave">
    <
div align="right">
      <
label for="entrar"></label>
      <
div align="left"></div>
      <
div align="left">
        <
input type="submit" name="entrar" id="entrar" value="entrar" onClick="validar()" />
    </
div></div>
</
form>
</
body>
</
html
el segundo con la hoja que toma el nombre de usuario y contraseña de la pagina anterior, incluye el if que me dijiste y las modificacioes que me han sugerido

Código PHP:
<?php 
ob_start
(); 
session_start(); 

//recojo el valor del formulario mediante $_POST 
echo $nombre $_POST['nombre']; 
echo 
$clave $_POST['clave']; 
$i=0

//conexion con mysql 
$dp_di="localhost"
$db_usuario="root"
$db_clave="admin"
$conectar=mysql_connect ($dp_di,$db_usuario,$db_clave); 
if (
$conectar==NULL

 
printf ("Error"); 


//conectamos con la base de datos prueba 
$db='estudio'
mysql_select_db($db$conectar); 

//hago la consulta a la tabla usuarios  
$consulta"SELECT * FROM principal WHERE rut_proveedor='$nombre' and codigo_bip=SHA1('$clave')";  
$resultado=mysql_query($consulta,$conectar);  
//checas si devuelve un resultado la consulta 
while(mysql_num_rows($resultado) == 1) {  
  
// Asignas la fila a una variable
 
if( $row mysql_fetch_array($resultado) );
 
  
$_SESSION['user'] = $row['nombre']; //recojo en una sesion el nombre del usuario  
  
$_SESSION['password'] = $row['clave']; //recojo en una sesion la contraseña del usuario para identificarse  
 
if ( $row mysql_fetch_array($resultado) );
 
        
//$_SESSION['estudio']=$row[$i]; //recogo en una sesion el nombre de la bd que puede utilizar el usuario
echo "<tr><td width=113>Nombre: ".$row ['nombre_proveedor']."</td>"
echo 
"<td width=113>Rut: ".$row ['rut_proveedor']."</td>"
echo 
"<td width=113>Codigo: ".$row ['codigo_bip']."</td>"
echo 
"<td width=113>Neto: ".$row ['neto']."</td></tr>";  

        
//y todos los demas campos que deseas mostrar.
   
}if ($resultado == FALSE)

//si llegas aqui es por que no se encontro el usuario o no coincidio con el password.. 
//hacemos lo que quieras.. 
echo "El usuario no existe"

?>
nota:si tengo echo, fijate bien en el codigo a lo mejor soy yo el que no entiende pero tiene echo

gracias a todos por estar ayudandome de verdad gracias
  #8 (permalink)  
Antiguo 28/10/2008, 14:45
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: mostrar datos de usuario

No estás entendiendo. mysql_num_rows() devuelve el número de filas que concidieron con los criterios de tu consulta. No lo puedes usar para crear un ciclo. Ahora, mysql_fetch_array() (y afines) te devuelven los resultados fila por fila. Es por eso que se suelen usar junto a un while paracrear un ciclo que recorra todas las filas.

Tu consulta devuelve un sólo resultado, por eso, como dice nicolaspar, no es necesario crear un ciclo, simplemente asiganr su valor a una variable. Ese código que tienes (el último) no imprime nada pues usas la función dos veces sobre el mismo recurso ($resultado). La función mysql_fetch_array() devuelve una fila y avanza el puntero del array una posición. Por eso, cada vez que ejecutas esa función el puntero avanza. Cuando llega al final devuelve false. Como sólo tienes un resultado y aplicas la funcion dos veces, la segunda llamada devuelve false.

Simplemente pon $row = mysql_fetch_array($resultado); y en vez del while coloca un if. Asi debe funcionarte. Y por favor, lee urgentemente el manual de PHP o busca un buen manual de PHP Mysql

Saludos,
  #9 (permalink)  
Antiguo 28/10/2008, 14:48
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Respuesta: mostrar datos de usuario

Tal cual, contestarte sería copiar y pegar el mensaje de okram.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #10 (permalink)  
Antiguo 28/10/2008, 15:12
 
Fecha de Ingreso: mayo-2008
Mensajes: 148
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: mostrar datos de usuario

Cita:
Iniciado por nicolaspar Ver Mensaje
Tal cual, contestarte sería copiar y pegar el mensaje de okram.
ok creo haber hecho lo que me dijeron aqui esta el codigo, se que devo seguir leyendo y aprendiendo pero ahora necesito de su ayuda, disculpenme por mi ignorancia se que su intencion es buena ya que estan tratando de ayudarme pero les pido un poco mas de pasiencia, aqui esta la modificacion que hice pero aun no imprime resultado solo los nombres que estan en el echo:
nombre:, rut:, etc pero sin sus respectivos resultados
Código PHP:
$consulta"SELECT * FROM principal WHERE rut_proveedor='$nombre' and codigo_bip=SHA1('$clave')";  
$resultado=mysql_query($consulta,$conectar);  

  
$row mysql_fetch_array($resultado);{  


 
  
$_SESSION['user'] = $row['nombre']; //recojo en una sesion el nombre del usuario  
  
$_SESSION['password'] = $row['clave']; //recojo en una sesion la contraseña del usuario para identificarse  
 
        //$_SESSION['estudio']=$row[$i]; //recogo en una sesion el nombre de la bd que puede utilizar el usuario
echo "<tr><td width=113>Nombre: ".$row ['nombre_proveedor']."</td>"
echo 
"<td width=113>Rut: ".$row ['rut_proveedor']."</td>"
echo 
"<td width=113>Codigo: ".$row ['codigo_bip']."</td>"
echo 
"<td width=113>Neto: ".$row ['neto']."</td></tr>"
gracias
  #11 (permalink)  
Antiguo 28/10/2008, 15:18
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: mostrar datos de usuario

Código php:
Ver original
  1. $row = mysql_fetch_array($resultado);{
Y esa llave al final?

  #12 (permalink)  
Antiguo 28/10/2008, 15:21
 
Fecha de Ingreso: mayo-2008
Mensajes: 148
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: mostrar datos de usuario

Cita:
Iniciado por okram Ver Mensaje
Código php:
Ver original
  1. $row = mysql_fetch_array($resultado);{
Y esa llave al final?

Código PHP:
$consulta"SELECT * FROM principal WHERE rut_proveedor='$nombre' and codigo_bip=SHA1('$clave')";  
$resultado=mysql_query($consulta,$conectar);  

  
$row mysql_fetch_array($resultado);{  


 
  
$_SESSION['user'] = $row['nombre']; //recojo en una sesion el nombre del usuario  
  
$_SESSION['password'] = $row['clave']; //recojo en una sesion la contraseña del usuario para identificarse  
 
        //$_SESSION['estudio']=$row[$i]; //recogo en una sesion el nombre de la bd que puede utilizar el usuario
echo "<tr><td width=113>Nombre: ".$row ['nombre_proveedor']."</td>"
echo 
"<td width=113>Rut: ".$row ['rut_proveedor']."</td>"
echo 
"<td width=113>Codigo: ".$row ['codigo_bip']."</td>"
echo 
"<td width=113>Neto: ".$row ['neto']."</td></tr>";  

        
}if (
$resultado == FALSE)

//si llegas aqui es por que no se encontro el usuario o no coincidio con el password.. 
//hacemos lo que quieras.. 
echo "El usuario no existe"

?> 
  #13 (permalink)  
Antiguo 28/10/2008, 16:06
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: mostrar datos de usuario



En buen cristiano, te preguntaba que para qué la pones?

Sigue esta lógica:
Código:

Ejecuta QUERY

if(numero de resultados == 1) {
    $row = mysql_fetch_assoc($resultado);
    Procesas los resultados que están en $row
} else {
    El usuario no existe
}
Y por favor, leiste el manual? Lo siento, las cosas que preguntas son muy básicas, cualquier manual explica eso como primer punto.

Saludos,
  #14 (permalink)  
Antiguo 28/10/2008, 16:49
 
Fecha de Ingreso: mayo-2008
Mensajes: 148
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: mostrar datos de usuario

Cita:
Iniciado por okram Ver Mensaje


En buen cristiano, te preguntaba que para qué la pones?

Sigue esta lógica:
Código:

Ejecuta QUERY

if(numero de resultados == 1) {
    $row = mysql_fetch_assoc($resultado);
    Procesas los resultados que están en $row
} else {
    El usuario no existe
}
Y por favor, leiste el manual? Lo siento, las cosas que preguntas son muy básicas, cualquier manual explica eso como primer punto.

Saludos,
definitivamente me rindo, no los entiendo y por mas que les pongo el codigo no pasa nada, muchas gracias igual a por siertto si lei y sigo leyendo y probando pero los resultados son los mismos,, respondeme una sola pregunta:
probaste el codigo?
gracias
  #15 (permalink)  
Antiguo 28/10/2008, 17:09
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: mostrar datos de usuario

Respondo tu pregunta: No lo he hecho, ni tendría por qué hacerlo.
Primero, si nos pusiéramos a probar todos los códigos que aquí se publican, cada respuesta demandaría un tiempo enorme, y lo siento, pero nadie nos paga por ayudar, y menos si es con exigencias. Tanto los que preguntan como los que tratamos de ayudar debemos poner de nuestra parte, y yo lo seguiré haciendo.

Segundo, así quisiera, no se puede probar tal código pues haces uso de una base de datos, una tabla, que obviamente nosotros no la conocemos.

Y por último, ...
Empecemos entonces desde 0:

Una posibilidad (aunque algo alejada a mi parecer) es que tu consulta esté incorrecta y no se devuelvan resultados. Para verificar ello usa la función mysql_error():

Código php:
Ver original
  1. $resultado=mysql_query($consulta,$conectar) or die(mysql_error());

Ya te hemos explicado mil veces lo que significan y lo que hacen las funciones mysql_num_rows() y mysql_fetch_array(). Espero que ya las hayas entendido.

Ahora, ya sabiendo todo eso, es fácil deducir lo que se debe hacer. Te pondré uno de mis ejemplos, y tu lo adaptas vale?

Código php:
Ver original
  1. // Ejecutamos la consulta
  2. $resultado=mysql_query($consulta,$conectar) or die(mysql_error());  
  3.  
  4. if(mysql_num_rows() == 1) {
  5.     // Si la consulta devuelve una fila como resultado
  6.     $row = mysql_fetch_array($resultado); // Guardamos la fila de los resultados en $row
  7.     echo $row['nombre'] . '<br />';
  8.     echo $row['apellidos'] . '<br />';
  9. } else {
  10.     // No hay resultados
  11.     echo 'No hay resultados';
  12. }
Eso es todo. Esa es la manera más sencilla de mostrar un resultado extraidos de una BD.



Saludos,
  #16 (permalink)  
Antiguo 28/10/2008, 18:43
 
Fecha de Ingreso: mayo-2008
Mensajes: 148
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: mostrar datos de usuario

Cita:
Iniciado por okram Ver Mensaje
Respondo tu pregunta: No lo he hecho, ni tendría por qué hacerlo.
Primero, si nos pusiéramos a probar todos los códigos que aquí se publican, cada respuesta demandaría un tiempo enorme, y lo siento, pero nadie nos paga por ayudar, y menos si es con exigencias. Tanto los que preguntan como los que tratamos de ayudar debemos poner de nuestra parte, y yo lo seguiré haciendo.

Segundo, así quisiera, no se puede probar tal código pues haces uso de una base de datos, una tabla, que obviamente nosotros no la conocemos.

Y por último, ...
Empecemos entonces desde 0:

Una posibilidad (aunque algo alejada a mi parecer) es que tu consulta esté incorrecta y no se devuelvan resultados. Para verificar ello usa la función mysql_error():

Código php:
Ver original
  1. $resultado=mysql_query($consulta,$conectar) or die(mysql_error());

Ya te hemos explicado mil veces lo que significan y lo que hacen las funciones mysql_num_rows() y mysql_fetch_array(). Espero que ya las hayas entendido.

Ahora, ya sabiendo todo eso, es fácil deducir lo que se debe hacer. Te pondré uno de mis ejemplos, y tu lo adaptas vale?

Código php:
Ver original
  1. // Ejecutamos la consulta
  2. $resultado=mysql_query($consulta,$conectar) or die(mysql_error());  
  3.  
  4. if(mysql_num_rows() == 1) {
  5.     // Si la consulta devuelve una fila como resultado
  6.     $row = mysql_fetch_array($resultado); // Guardamos la fila de los resultados en $row
  7.     echo $row['nombre'] . '<br />';
  8.     echo $row['apellidos'] . '<br />';
  9. } else {
  10.     // No hay resultados
  11.     echo 'No hay resultados';
  12. }
Eso es todo. Esa es la manera más sencilla de mostrar un resultado extraidos de una BD.



Saludos,
ya, mira te pido disculpas a ti y a todos los que han intentado ayudarme, se que no les pagan por esto, quizas si he sido grocero es porque estoy un tanto estresado por que tengo que entregar esto mañana en la mañana y aun no logro nada, quizas es una cosa muy simple pero a mi no me ha resultado, lo de probar el codigo lo digo para que veas el resultado que me arroja a mi, claro ustedes saben muchisimo mas que yo y pueden identificar errores solo viendo el codigo, con respecto a la bd pues en el codigo aparese el nombre de la bd que es "estudio", la tabla es unica y se llama "principal" en ella se encuentran todos los usuarios y contraseñas junto con el resto de los datos.

ahora bien siempre he probado los ejemplos que me han dejado y pues este ultimo no es la excepcion, el resultado que me arroja es el siguiente:

Warning: Wrong parameter count for mysql_num_rows() in C:\www\estudio\final.php on line 27
El usuario no existe
de verdad disculpa si he sido grocero y te agradesco muchisimo por tu paciesia
  #17 (permalink)  
Antiguo 28/10/2008, 18:50
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: mostrar datos de usuario

Aja, error mio de nuevo. A mysql_num_rows() debes pasarle como parámetro el recurso de tu consulta: $resultado.

Pruébalo así:

Código php:
Ver original
  1. if(mysql_num_rows($resultado) == 1) {

Hasta ahora, por lo menos eso nos dice que tu consulta es válida y que se está ejecutando correctamente.

Saludos,
  #18 (permalink)  
Antiguo 28/10/2008, 18:51
 
Fecha de Ingreso: mayo-2008
Mensajes: 148
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: mostrar datos de usuario

Cita:
if(mysql_num_rows(resultado) == 1) {
eso me faltaba para el error que mensione pero ahora me dise con cualquier usuario que no existe
  #19 (permalink)  
Antiguo 28/10/2008, 18:53
 
Fecha de Ingreso: mayo-2008
Mensajes: 148
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: mostrar datos de usuario

si pero aun no me reconose ningun usuario voy a hacer un echo a ver que me dice vale ?
  #20 (permalink)  
Antiguo 28/10/2008, 18:54
 
Fecha de Ingreso: mayo-2008
Mensajes: 148
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: mostrar datos de usuario

hice esto
Cita:
echo $resultado=mysql_query($consulta,$conectar)or die(mysql_error());
y me dice esto: 1El usuario no existe
  #21 (permalink)  
Antiguo 28/10/2008, 18:55
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: mostrar datos de usuario

Publica el código que tienes hasta ahora. Si te aparece ese mensaje sin ningún error, entonces es muy probable que tu consulta no esté devolviendo los resultados que debería.

- Donde y cómo defines las variables $nombre y $clave?

Recuerda que si viene de un formulario con método HTTP POST debes usar $_POST['nombre'] y no $nombre.

Saludos,
  #22 (permalink)  
Antiguo 28/10/2008, 19:01
 
Fecha de Ingreso: mayo-2008
Mensajes: 148
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: mostrar datos de usuario

Cita:
Iniciado por okram Ver Mensaje
Publica el código que tienes hasta ahora. Si te aparece ese mensaje sin ningún error, entonces es muy probable que tu consulta no esté devolviendo los resultados que debería.

- Donde y cómo defines las variables $nombre y $clave?

Recuerda que si viene de un formulario con método HTTP POST debes usar $_POST['nombre'] y no $nombre.

Saludos,
ok el formulario es el siguiente:
Código 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>
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<
title>Documento sin t&iacute;tulo</title>
</
head>

<
body>
<
form name="formulario" method="post" action="final.php">
     <
div align="left"><strong><font size="3" face="Arial, Helvetica, sans-serif">Nombre 
       Usuario
:</font></strong></div>
<
input name="nombre" type="text" id="nombre" />
          <
div align="left"><font size="3" face="Arial, Helvetica, sans-serif"><strong>Contrase&ntilde;a:</strong></font></div>
<
input name="clave" type="password" id="clave">
    <
div align="right">
      <
label for="entrar"></label>
      <
div align="left"></div>
      <
div align="left">
        <
input type="submit" name="entrar" id="entrar" value="entrar" onClick="validar()" />
    </
div></div>
</
form>
</
body>
</
html
en donde final.php es el siguiente y en el que hemos estado trabajando:
Código PHP:
<?php 
ob_start
(); 
session_start(); 

//recojo el valor del formulario mediante $_POST 
$nombre $_POST['nombre']; 
$clave $_POST['clave']; 
$i=0

//conexion con mysql 
$dp_di="localhost"
$db_usuario="root"
$db_clave="admin"
$conectar=mysql_connect ($dp_di,$db_usuario,$db_clave); 
if (
$conectar==NULL

 
printf ("Error"); 


//conectamos con la base de datos prueba 
$db='estudio'
mysql_select_db($db$conectar); 

//hago la consulta a la tabla usuarios  
$consulta"SELECT * FROM principal WHERE rut_proveedor='$nombre' and codigo_bip=SHA1('$clave')";
$resultado=mysql_query($consulta,$conectar)or die(mysql_error());   
 if (
mysql_num_rows($resultado)==1){
   
$row mysql_fetch_array($resultado); 
 
 echo 
$row['nombre_proveedor']. '<br />';; 
 echo 
$row['rut_proveedor']. '<br />';; 
 echo 
$row['codigo_bip']. '<br />';; 
 echo 
$row['neto']. '<br />';;  

  
$_SESSION['rut_proveedor'] = $row['nombre']; //recojo en una sesion el nombre del usuario  
  
$_SESSION['codigo_bip'] = $row['clave']; //recojo en una sesion la contraseña del usuario para identificarse  
 
       
   
} else {   
//si llegas aqui es por que no se encontro el usuario o no coincidio con el password.. 
//hacemos lo que quieras.. 
echo "El usuario no existe"

?>
muchas gracias

Última edición por aliyuwey; 28/10/2008 a las 19:08
  #23 (permalink)  
Antiguo 28/10/2008, 19:13
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: mostrar datos de usuario

Aparentemente todo está bien. Me llama la atención el uso de la función SHA1 en tu consulta:

Código PHP:
$consulta"SELECT * FROM principal WHERE rut_proveedor='$nombre' and codigo_bip=SHA1('$clave')"
Puedes hacer un echo de tu consulta? y verifica manualmente (usando alguna utilidad como PHPMyAdmin) que efectivamente hay una fila cuyos rut_proveedor y codigo_bip coincidan con lo que se está especificando en la consulta.

Yo diria en todo caso que mejor realices la conversión a sha1 en el script PHP y así armar la consulta:

Código PHP:
$clave sha1($_POST['clave']);  

//........

$consulta"SELECT * FROM principal WHERE rut_proveedor='$nombre' and codigo_bip='$clave'"
Saludos,
  #24 (permalink)  
Antiguo 28/10/2008, 19:23
 
Fecha de Ingreso: mayo-2008
Mensajes: 148
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: mostrar datos de usuario

Cita:
Iniciado por okram Ver Mensaje
Aparentemente todo está bien. Me llama la atención el uso de la función SHA1 en tu consulta:

Código PHP:
$consulta"SELECT * FROM principal WHERE rut_proveedor='$nombre' and codigo_bip=SHA1('$clave')"
Puedes hacer un echo de tu consulta? y verifica manualmente (usando alguna utilidad como PHPMyAdmin) que efectivamente hay una fila cuyos rut_proveedor y codigo_bip coincidan con lo que se está especificando en la consulta.

Yo diria en todo caso que mejor realices la conversión a sha1 en el script PHP y así armar la consulta:

Código PHP:
$clave sha1($_POST['clave']);  

//........

$consulta"SELECT * FROM principal WHERE rut_proveedor='$nombre' and codigo_bip='$clave'"
Saludos,
ya hice lo que me dijiste, cambie sha1, y tambien hice echo

Código PHP:
echo $consulta"SELECT * FROM principal WHERE rut_proveedor='$nombre' and codigo_bip='$clave'";
echo 
$resultado=mysql_query($consulta,$conectar)or die(mysql_error()); 
el resultado es el siguiente:
SELECT * FROM principal WHERE rut_proveedor='96696880-K' and codigo_bip='98d931a0c8ff97e7d2e268f63b1b714cefabf8 7b'1El usuario no existe
con respecto a si exsiste , estoy tan seguro que para evitar errores tengo el phpmyadmin abierto y de hay copio el usuario y la contraseña
gracias
  #25 (permalink)  
Antiguo 28/10/2008, 19:38
 
Fecha de Ingreso: octubre-2008
Mensajes: 102
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: mostrar datos de usuario

codigo_bip='98d931a0c8ff97e7d2e268f63b1b714cefabf8 7b'

Hay un espacio entre el 8 y el 7b del final
  #26 (permalink)  
Antiguo 28/10/2008, 19:58
 
Fecha de Ingreso: mayo-2008
Mensajes: 148
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: mostrar datos de usuario

Cita:
Iniciado por Zidencjb Ver Mensaje
codigo_bip='98d931a0c8ff97e7d2e268f63b1b714cefabf8 7b'

Hay un espacio entre el 8 y el 7b del final
mira hice varios cambios:
1.: le saque el sha1 porque lo que hace es convertir el numero en exsadecimal o lo sifra bueno en fin lo saque
2.: saque del formulario el campo clave y lo saque de el la segunda pagina tambien ahora la consulta queda asi:
Código PHP:
$consulta"SELECT * FROM principal WHERE codigo_bip='$nombre'"
3.:cambie por como puedes notar el rut_proveedor por codigo_bip

bueno te cuento me funciono pero tiene un enorme problema que es el siguiente:
solo me muestra los resultados de el ultimo registro pero el resto me dice que no existe, en la bd los campos que yo llamo en el php existen y tienen informacion estos son:
Código PHP:
echo "<tr><td width=113>Nombre: ".$row['nombre_proveedor']."</td>";; 
 echo 
"<td width=113>rut: ".$row['rut_proveedor']."</td>";; 
 echo 
"<td width=113>codigo: ".$row['codigo_bip']."</td>";;
 echo 
"<td width=113>proyecto: ".$row['nombre_proyecto']."<td></tr>";;
 echo 
"<td width=113>tipo: ".$row['tipo_docto']."<td></tr>";;
 echo 
"<td width=113>numero: ".$row['numero_docto']."<td></tr>";;
 echo 
"<td width=113>fecha: ".$row['fecha_docto']."<td></tr>";;
 echo 
"<td width=113>neto: ".$row['neto']."<td></tr>";;
 echo 
"<td width=113>impuesto: ".$row['impuesto']."<td></tr>";;
 echo 
"<td width=113>total: ".$row['total ']."<td></tr>";;
 echo 
"<td width=113>estado: ".$row['estado_actual  ']."<td></tr>";; 
pero en la tabla de la bd aparte de estos tambien existen otros que para los usuarios estan null, el ultimo registro es uno que hice de prueba y lene todos los campos, de este ultimo me muestra los resultados pero de los anteriores no
que opinas? que devo hacer?
  #27 (permalink)  
Antiguo 28/10/2008, 20:05
 
Fecha de Ingreso: octubre-2008
Mensajes: 102
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: mostrar datos de usuario

Viendo arriba el codigo usas $row = mysql_fetch_array($resultado); para mostrar los datos, osea solo te muestra un dato...

si quieres que te muestren todos, usa un while() y verifica si en el campo codigo_bip de la BD hay mas de una tabla con el valor de $nombre
  #28 (permalink)  
Antiguo 28/10/2008, 20:16
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: mostrar datos de usuario

Esto se está prolongando demasiado. En la nueva consulta pones en la claúsula WHERE codigo_bip = '$nombre'. En la anterior era rut_proveedor = '$nombre', y viendo los campos que nos dices hay en tu tabla, me llama la atención el que se llama nombre_proveedor. Estoy más confundido que tú. Cuál se supone que es la columna con la que deseas comparar lo que el usuario escribió como nombre?

Saludos,
  #29 (permalink)  
Antiguo 28/10/2008, 20:19
 
Fecha de Ingreso: mayo-2008
Mensajes: 148
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: mostrar datos de usuario

Cita:
Iniciado por Zidencjb Ver Mensaje
Viendo arriba el codigo usas $row = mysql_fetch_array($resultado); para mostrar los datos, osea solo te muestra un dato...

si quieres que te muestren todos, usa un while() y verifica si en el campo codigo_bip de la BD hay mas de una tabla con el valor de $nombre
mira lo que necesito es que al ingresar el codigo bip o el rut cualquieera, lo asocie con la fila que corresponde a ese dato en la bd y me despliege la fila de ese datote repito el ejemplo:

bd estudio:
tabla:principal:
__________________________________________________ ____
|rut_proveedor||codigo_bip||nombre_proveedor||nomb re_proyecto|
--------------------------------------------------------------------------------------
|12345678-9 ||12345678-9||juanito perez ||proeba |
|98765432-1 ||98765432-1||fulanito de tal ||prueba |
--------------------------------------------------------------------------------------

entonces al introducir codigo bip en el formulario, compara en la bd si existe.
resultado: si existe entonces desplegar la fila corespondiente a ese dato
sino: error el usuario no se encuentra en la bd

no son solo dos usuarios son como 30 y cada uno tiene un rut y un codigo bip diferente por eso utilizo esos datos para hacer la consulta, ahora en que crees que me estoy equivocando y como puedo solucionarlo?
muchas gracias
  #30 (permalink)  
Antiguo 28/10/2008, 20:32
 
Fecha de Ingreso: octubre-2008
Mensajes: 102
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: mostrar datos de usuario

Osea que el usuario para ingresar tiene que poner su rut_proveedor (como nombre) o su codigo_bip (como clave), los cuales son unicos?

Si no existe se va, si existe muestras sus datos?.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:36.