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
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...
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
porque simplemente no le agregas al campo mail y usuario valores unique
Como? explícate mejor por favor.
Solo una observacion....
Lo que estas haciendo aqui:
$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....
emtpy($valor) //Devuelve false;
Cita de: tomeu00 en 8 Agosto 2010, 19:44 PMComo? explícate mejor por favor.
:http://www.ignside.net/man/mysql/indices.php
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.
Tienes que poner el campo mail y usuario como uniques, como te eh dicho...
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....
Claro que también lo podrías hacer desde PHP. Así:
#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:
Yes
Not
Yes
Not