elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Problema con Is_resource
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con Is_resource  (Leído 1,604 veces)
zered

Desconectado Desconectado

Mensajes: 38


Ver Perfil
Problema con Is_resource
« en: 5 Diciembre 2012, 05:45 am »

Hola, como estan? Estoy aprendiendo a programar en PHP y como primer ejemplo quise hacer un sistema de registro en una base de datos. Primero lo hice sin que chequeara si se repetia el nombre de usuario (o nick) y funciono perfecto. Pero ahora que quiero que chequee si se repite, no esta funcionando como quisiera.

Es muy simple y seguramente hay cosas que seria mejor que haga de otras formas pero como dije, recien hace 2 dias estoy con PHP.

Código
  1. <?php
  2.  
  3. #Defino una variable para simplificar ($conexion).
  4. $conexion = mysql_connect("localhost", "root", "") or die ("Fallo en el establecimiento de la conexión");
  5.  
  6. #Selecciono la base de datos.
  7. mysql_select_db("registro", $conexion) or die ("Error en la selección de la base de datos");
  8.  
  9. #Chequeo si se repite el nick del usuario.
  10. $busqueda=("SELECT nick FROM jugadores WHERE 'nick'='$_POST[nick_]'");
  11. $resultado=mysql_query($busqueda, $conexion);
  12.  
  13. if (is_resource($resultado))
  14. {
  15. echo "Ese nombre de usuario ya se encuentra usado";
  16. }
  17. else
  18. {
  19. mysql_query("INSERT INTO jugadores (nick, contraseña, mail, nombre)
  20. VALUES ('$_POST[nick_]', '$_POST[contraseña_]', '$_POST[mail_]', '$_POST[nombre_]')", $conexion);
  21. }
  22.  
  23. ?>
  24.  

El problema es que este codigo me devuelve "Ese nombre de usuario ya se encuentra usado" para cualquier nick, tanto los repetidos como los que no lo estan.
Agradeceria mucho si me dan una mano y perdon si hay errores muy basicos!


En línea

RevangelyonX

Desconectado Desconectado

Mensajes: 245


Ver Perfil WWW
Re: Problema con Is_resource
« Respuesta #1 en: 6 Diciembre 2012, 01:29 am »

Hola,

Esto es que porque mysql_query te devuelve un resource aunque no exista

en www.php.net:

reject note Return Values

For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query() returns a resource on success, or FALSE on error.

Al no devolver un error, devuelve un resource y por lo tanto el IF es válido.

tienes que analizar el resultado de mysql_query y ver si tiene datos:

Código:
$resultado=mysql_query($busqueda, $conexion);

if (sizeof(mysql_fetch_assoc($resultado)) > 0){
/*Hay más de 0 valores, es decir, existe*/
die("Sorry, nicks exists");
}....
...

Salu2


En línea

Just Linux
OSCP certified
cassiani


Desconectado Desconectado

Mensajes: 978


« Anterior | Próximo »


Ver Perfil WWW
Re: Problema con Is_resource
« Respuesta #2 en: 6 Diciembre 2012, 01:36 am »

zered, Guiate de la ayuda oficial
Código:
http://php.net/mysql_query

ojo a las sugerencias que te da el sitio.

puedes usar mysql_num_rows para evaluar,
Código:
$número_filas = mysql_num_rows($resultado);
echo "$número_filas Filas\n";
En línea

zered

Desconectado Desconectado

Mensajes: 38


Ver Perfil
Re: Problema con Is_resource
« Respuesta #3 en: 6 Diciembre 2012, 16:05 pm »

Gracias por la ayuda, al final termine utilizando mysql_num_rows. El codigo me quedo asi por el momento:

Código
  1. <?php
  2.  
  3. #Defino una variable para simplificar ($conexion).
  4. $conexion = mysql_connect("localhost", "root", "") or die ("Fallo en el establecimiento de la conexión");
  5.  
  6. #Selecciono la base de datos dentro del host.
  7. mysql_select_db("registro", $conexion) or die ("Error en la selección de la base de datos");
  8.  
  9. #Defino variable a partir de los datos obtenidos en registro.html.
  10. $nick= $_POST['nick_'];
  11.  
  12.  
  13.  
  14. $resultado=mysql_query("SELECT * FROM jugadores WHERE nick='$nick'", $conexion);
  15. $usuario_existente=mysql_num_rows($resultado);
  16.  
  17. #Escapo variables para evitar inyecciones sql. Esto falta
  18.  
  19. if ($usuario_existente>0){
  20. echo "Ese nick ya se encuentra registrado";
  21. }
  22. else
  23. {
  24. mysql_query("INSERT INTO jugadores (nick, contraseña, mail, nombre)
  25. VALUES ('$_POST[nick_]', '$_POST[contraseña_]', '$_POST[mail_]', '$_POST[nombre_]')", $conexion);
  26. echo "Registrado de forma satisfactoria. Ahora puede iniciar sesion.";
  27. }
  28.  
  29. ?>
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema BlueZScanner y problema de conexión
Hacking Mobile
Kasswed 3 6,335 Último mensaje 6 Mayo 2006, 22:04 pm
por Gospel
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines