Problema con codigo php ( consulta y ejecucion )

Iniciado por XXXXXX, 8 Agosto 2010, 05:53 AM

0 Miembros y 2 Visitantes están viendo este tema.

XXXXXX

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

Nakp

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...
Ojo por ojo, y el mundo acabará ciego.

XXXXXX

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

~ Yoya ~

porque simplemente no le agregas al campo mail y usuario valores unique
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

XXXXXX


MinusFour

Solo una observacion....

Lo que estas haciendo aqui:

Código (php) [Seleccionar]

$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 (php) [Seleccionar]

emtpy($valor) //Devuelve false;

Shell Root

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

XXXXXX

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.

~ Yoya ~

Tienes que poner el campo mail y usuario como uniques, como te eh dicho...

Código (sql) [Seleccionar]
mysql> describe nombres;
+--------+-------------+------+-----+---------+----------------+
| Field  | Type        | Null | Key | Default | Extra          |
+--------+-------------+------+-----+---------+----------------+
| id     | smallint(6) | NO   | PRI | NULL    | auto_increment |
| nombre | char(15)    | NO   | UNI | NULL    |                |
+--------+-------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

mysql> insert into nombres (nombre) values ('Jose'), ('Lukas'),('jose');
ERROR 1062 (23000): Duplicate entry 'Jose' for key 'nombre'


Asi evito que existan nombres iguales en el campo....
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

Shell Root

Claro que también lo podrías hacer desde PHP. Así:
Código (php) [Seleccionar]
#Connecting to the database
 $conexion = mysql_connect("127.0.0.1", "root", "");
 if (!$conexion){ die('Not connected : ' . mysql_error()); }

#Select Database
 $db_selected = mysql_select_db('db_PoC', $conexion);
 if (!$db_selected) { die ('Can\'t use <b>db_PoC</b> : ' . mysql_error()); }

function fSelectRecord($sQuery){
 # Function select Record
 
 global $conexion;
 
 if(!$sQuery = mysql_query($sQuery, $conexion)){
   return false;
 }else{
   while($sRow = mysql_fetch_array($sQuery, MYSQL_ASSOC)){
 $sReturn[] = $sRow;
}
@mysql_free_result($sQuery);
 }
 return $sReturn[0];
}

function fValidateRecord($sString, $sField){
 # Function to validate the existence of a record
 
 global $conexion;
 
 $sReturnQuery = fSelectRecord("SELECT ".$sField." FROM tbl_usuarios WHERE ".$sField." = '".$sString."';", conexion);

 if($sReturnQuery[$sField] == $sString){
   return 'Yes';
 }else{
   return 'Not';
 }
}

echo fValidateRecord('alex1', 'nombre')."<br>";
echo fValidateRecord('alex5', 'nombre')."<br>";
echo fValidateRecord('alex2@hotmail.cl', 'email')."<br>";
echo fValidateRecord('alex5@hotmail.cl', 'email')."<br>";


Resultado:
Código (PoC) [Seleccionar]
Yes
Not
Yes
Not
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.