Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: XXXXXX en 8 Agosto 2010, 05:53 am



Título: Problema con codigo php ( consulta y ejecucion )
Publicado por: XXXXXX en 8 Agosto 2010, 05:53 am
Antes que nada explicare la función del codigo.

Esto funciona a través de un formulario, la cosa es que tiene que comprobar que no existan otros "duplicados" del mail y el usuario, y bien, me e encallado, ya que e probado mil formas y no funciona, o directamente me tira siempre para el if, exista o no duplicado o no me funciona, o se salta la comprobación.

La cosa es que tiene que comprobar que no existan duplicados, y luego pasar a insertar ( esa parte si funciona )

Citar
$valor =  "SELECT * FROM `login` WHERE ('userid='$usuario', email='$mail')";
/* Si existe algun correo, el valor de la variable $valor sera 1,
Si no existe algun correo, el valor de la variable $valor sera 0
*/
 
if(!empty($valor)){//Si la variable $valor contiene algun valor se ejecuta el if
//Recordando que 0 es un valor nulo o mejor dicho nada y como 0 no es nada
//no se ejecuta el if....
echo "el usuario <b><font color='red' >''" . $usuario . "''</font></b>";
echo " o el Email <b><font color='red' >''" . $mail . "''</font></b> ya estan en uso";
echo "Intenta con otro nombre o email, para regresar click aquí";

}//Fin del if y entra el else
else{//En caso que el if falle se ejecuta el else
mysql_query("INSERT INTO `login` (userid, user_pass, sex, email) VALUES ('$usuario','$password','$sexo','$mail')");
echo " tu cuenta a sido registrada satisfactoriamente, ahora puedes loguearte <b><font color='red' >" . $usuario . "</font></b> haciendo click aqui";
//Hacemos la consulta insertando los datos...
}//Fin del else

saludos y gracias por adelantado


Título: Re: Problema con codigo php ( consulta y ejecucion )
Publicado por: Nakp en 8 Agosto 2010, 06:36 am
ese es el codigo completo? alguna vez realizas la consulta? lo que te devuelve esa query no era un resultset? pueden ser 2 filas :P el id y correo existen pero son de distinto usuario...


Título: Re: Problema con codigo php ( consulta y ejecucion )
Publicado por: XXXXXX en 8 Agosto 2010, 18:29 pm
Antes tenia este codigo...

$valor = mysql_num_rows(mysql_query("SELECT * FROM `login` WHERE userid = '$usuario'"));

pero solo me sirve para uno, y yo tengo que hacer 2 comprovaciones


Título: Re: Problema con codigo php ( consulta y ejecucion )
Publicado por: ~ Yoya ~ en 8 Agosto 2010, 18:58 pm
porque simplemente no le agregas al campo mail y usuario valores unique


Título: Re: Problema con codigo php ( consulta y ejecucion )
Publicado por: XXXXXX en 8 Agosto 2010, 19:44 pm
Como? explícate mejor por favor.



Título: Re: Problema con codigo php ( consulta y ejecucion )
Publicado por: MinusFour en 8 Agosto 2010, 19:49 pm
Solo una observacion....

Lo que estas haciendo aqui:

Código
  1. $valor =  "SELECT * FROM `login` WHERE ('userid='$usuario', email='$mail')";

Esto ni siquiera es una consulta, esto es meramente un string. (No se ejecuta nada)

Por lo tanto....

Código
  1. emtpy($valor) //Devuelve false;
  2.  


Título: Re: Problema con codigo php ( consulta y ejecucion )
Publicado por: Shell Root en 8 Agosto 2010, 20:43 pm
Como? explícate mejor por favor.
:http://www.ignside.net/man/mysql/indices.php


Título: Re: Problema con codigo php ( consulta y ejecucion )
Publicado por: XXXXXX en 8 Agosto 2010, 22:33 pm
Pero diganme..

$valor = mysql_num_rows(mysql_query("SELECT * FROM `login` WHERE userid = '$usuario'"));

este no sirve? ( me funciona para 1 )

pero si tendria que poner para que comprobara 2 cosas, como me lo montaria?

lo del otro ya vi que no lleva a ningun lado.


Título: Re: Problema con codigo php ( consulta y ejecucion )
Publicado por: ~ Yoya ~ en 8 Agosto 2010, 23:06 pm
Tienes que poner el campo mail y usuario como uniques, como te eh dicho...

Código
  1. mysql> DESCRIBE nombres;
  2. +--------+-------------+------+-----+---------+----------------+
  3. | FIELD  | TYPE        | NULL | KEY | DEFAULT | Extra          |
  4. +--------+-------------+------+-----+---------+----------------+
  5. | id     | SMALLINT(6) | NO   | PRI | NULL    | AUTO_INCREMENT |
  6. | nombre | CHAR(15)    | NO   | UNI | NULL    |                |
  7. +--------+-------------+------+-----+---------+----------------+
  8. 2 ROWS IN SET (0.00 sec)
  9.  
  10. mysql> INSERT INTO nombres (nombre) VALUES ('Jose'), ('Lukas'),('jose');
  11. ERROR 1062 (23000): Duplicate entry 'Jose' FOR KEY 'nombre'
  12.  

Asi evito que existan nombres iguales en el campo....


Título: Re: Problema con codigo php ( consulta y ejecucion )
Publicado por: Shell Root en 9 Agosto 2010, 01:30 am
Claro que también lo podrías hacer desde PHP. Así:
Código
  1. #Connecting to the database
  2.  $conexion = mysql_connect("127.0.0.1", "root", "");
  3.  if (!$conexion){ die('Not connected : ' . mysql_error()); }
  4.  
  5. #Select Database
  6.  $db_selected = mysql_select_db('db_PoC', $conexion);
  7.  if (!$db_selected) { die ('Can\'t use <b>db_PoC</b> : ' . mysql_error()); }
  8.  
  9. function fSelectRecord($sQuery){
  10.  # Function select Record
  11.  
  12.  global $conexion;
  13.  
  14.  if(!$sQuery = mysql_query($sQuery, $conexion)){
  15.    return false;
  16.  }else{
  17.    while($sRow = mysql_fetch_array($sQuery, MYSQL_ASSOC)){
  18.  $sReturn[] = $sRow;
  19. }
  20. @mysql_free_result($sQuery);
  21.  }
  22.  return $sReturn[0];
  23. }
  24.  
  25. function fValidateRecord($sString, $sField){
  26.  # Function to validate the existence of a record
  27.  
  28.  global $conexion;
  29.  
  30.  $sReturnQuery = fSelectRecord("SELECT ".$sField." FROM tbl_usuarios WHERE ".$sField." = '".$sString."';", conexion);
  31.  
  32.  if($sReturnQuery[$sField] == $sString){
  33.    return 'Yes';
  34.  }else{
  35.    return 'Not';
  36.  }
  37. }
  38.  
  39. echo fValidateRecord('alex1', 'nombre')."<br>";
  40. echo fValidateRecord('alex5', 'nombre')."<br>";
  41. echo fValidateRecord('alex2@hotmail.cl', 'email')."<br>";
  42. echo fValidateRecord('alex5@hotmail.cl', 'email')."<br>";

Resultado:
Código
  1. Yes
  2. Not
  3. Yes
  4. Not