Sacar un unico dato de un registro en una tabla.

Iniciado por XXXXXX, 20 Junio 2010, 17:00 PM

0 Miembros y 1 Visitante están viendo este tema.

MinusFour

Primeramente, todo este código debería estar en el archivo donde haces el registro. Yo he puesto registrar(); para hacer notar que ahi va el código que usas para registrar al usuario. Y tienes $mail en lugar de $email, uno tiene que cambiarse.

XXXXXX

#21
entonces seria

<?php
 
include ('config.php');
 
$usuario=$_POST['usuario'];
$password=$_POST['password'];
$sexo=$_POST['sexo'];
$mail=$_POST['mail'];
 
// Verificar si existe el email

if(mysql_num_rows(mysql_query("SELECT email FROM tabla WHERE email = '$mail' LIMIT 1")){

// Insertar datos despues de verificar
$db_handle "INSERT INTO `login` (userid, user_pass, sex, email) VALUES ('$usuario','$password','$sexo','$mail')";

mysql_query($db_handle);

}
else{
   echo 
"Error: el email ya está en uso";
}
 
?>


~ Yoya ~

#22
jajaajjaja XDDD.... Que haces man??? por lo menos probar los codigos antes de postearlo xD.
Aunque no es la forma correcta de hacerlo funcionara ya que devolverá 1 si existe... 0 si no existe...

1 = True
0 = False


Y pasara el if a ejecutarse...

Ej:
Código (php) [Seleccionar]

<?php


$conexion 
mysql_connect("localhost""root""pasdjsoaj");
mysql_select_db("ej"$conexion);

echo 
mysql_num_rows(mysql_query("SELECT nombre FROM clientes WHERE nombre = 'yoya' LIMIT 1"))

?>



Devuelve:

1

Aunque la forma mas comoda es la que dice "."]:-*[/quote]

Código (sql) [Seleccionar]
mysql> create table clientes( nombre char(20) Unique);
Query OK, 0 rows affected (0.20 sec)

mysql> insert into clientes (nombre) values ('yoya');
Query OK, 1 row affected (0.14 sec)

mysql> insert into clientes (nombre) values ('yoya');
ERROR 1062 (23000): Duplicate entry 'yoya' for key 'nombre'

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

ahora si que ya me e perdido del todo....

Primero mira que no este duplicado, y luego inserta, entonces.... no veo por ningun lado eso en el primer codigo, y en el segundo, eso es php? o que es?

podrias explicarme un poco como funciona el segundo codigo?

MinusFour

Lo que Yoya quiere decir es que en donde haces:

Código (php) [Seleccionar]
mysql_num_rows(mysql_query("La consulta blablabbla"))

Esto devuelve un valor entero que representa el número de registros que consigues de la consulta. Lo que haciamos era compararlo con 0 (mysql_num_rows(..)  == 0) cosa que a tí se te ha olvidado poner en el último código que pusiste.

Ahora, como tienes un if(mysql_num_rows(..)) lo que hará es evaluar el número como falso o verdadero, donde para php todos los números enteros son verdaderos y el 0 es negativo.

Entonces, si la consulta devuelve que hay un registro con ese email devolvera un número entero diferente de 0 lo cual significa que es positivo. Entonces al evaluar nos queda así.

Código (php) [Seleccionar]

if(1){
registrar();
else{
echo "Error: emáil ya registrado";
}


Lo cual significa que le estás diciendo a php, si existe una persona con ese email dejalo registrarse y si no existe una persona con ese email no lo dejes registrarse y mandale el error.

En pocas palabras, está alrevez. Pon la comparación (el == 0) o cambia el registrar en el else y el echo dentro del if.

Y lo que te ha puesto Yoya después son queries para la creación de una tabla con un campo unique.

XXXXXX

ahora supongo que si,


<?php
$conexion 
mysql_connect("localhost""root""pasdjsoaj");
mysql_select_db("ej"$conexion);
 
echo 
mysql_num_rows(mysql_query("SELECT nombre FROM clientes WHERE nombre = 'yoya' LIMIT 1"));

if(
1){
registrar(); // Aquí que va? tengo que llenar con algo?
}else{
echo 
"Error: emáil ya registrado";
}
?>



no lo e probado, porque no se donde tendria que poner el valor para que luego si esta OK enviara, supongo que donde pone registrar() tendria que poner el codigo de registro correcto?

~ Yoya ~

man, ya lo tienes hecho....
Código (php) [Seleccionar]
<?php
 
include ('config.php');
 
$usuario=$_POST['usuario'];
$password=$_POST['password'];
$sexo=$_POST['sexo'];
$mail=$_POST['mail'];
 
// Verificar si existe el email

if(mysql_num_rows(mysql_query("SELECT email FROM tabla WHERE email = '$mail' LIMIT 1")){

// Insertar datos despues de verificar
$db_handle "INSERT INTO `login` (userid, user_pass, sex, email) VALUES ('$usuario','$password','$sexo','$mail')";

mysql_query($db_handle);

}
else{
   echo 
"Error: el email ya está en uso";
}
 
?>

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

el dreamweaver me dice que tiene 2 errores, en la linea 12 i 20, y en el navegador me dice.

Parse error: syntax error, unexpected '{' in C:\xampp\htdocs\web2\mods\coma\cp\enviareg.php on line 12


falta alguna cosa de "}" estas no?

MinusFour

Cita de: tomeu00 en 24 Junio 2010, 08:57 AM
ahora supongo que si,


<?php
$conexion 
mysql_connect("localhost""root""pasdjsoaj");
mysql_select_db("ej"$conexion);
 
echo 
mysql_num_rows(mysql_query("SELECT nombre FROM clientes WHERE nombre = 'yoya' LIMIT 1"));

if(
1){
registrar(); // Aquí que va? tengo que llenar con algo?
}else{
echo 
"Error: emáil ya registrado";
}
?>



no lo e probado, porque no se donde tendria que poner el valor para que luego si esta OK enviara, supongo que donde pone registrar() tendria que poner el codigo de registro correcto?

A ver, te estás confundiendo. El código era para explicar, no era exactamente código...

Si tu tienes:

Código (php) [Seleccionar]

<?php

if(mysql_num_rows(mysql_query("SELECT * FROM clientes WHERE email = '$email' LIMIT 1"))){
registrar();
]
else{
echo 
"Mensaje de error";
}
?>



El código entrará por el IF únicamente si existe una persona con ese email.

Si lo pones de está forma:

Código (php) [Seleccionar]

<?php
if(mysql_num_rows(mysql_query("SELECT * FROM clientes WHERE email = '$email' LIMIT 1")) == 0){
registrar();
]
else{
echo 
"Mensaje de error";
}
?>



Entrará por el IF únicamente si NO existe una persona con ese email.

Tienes que leer mi post para entender porque. Y no solo estár leyendo y copiando código :/, nada más fijate lo que has copiado:

"SELECT nombre FROM clientes WHERE nombre = 'yoya' LIMIT 1" <-- esta consulta que tiene que ver con tu problema actual? Repito, ponte a leer lo que copias y tratar de entender.

XXXXXX

esque los 2 me estais diciendo cosas distintas y me estoy liando de mala manera, ahora ya no se donde va nada  :-X

y no me limito simplemente a copiar y pegar...

el me puso un codigo, tu me pones otro, o os poneis de acuerdo, o me hago una empanada mental.