Foros del Web » Programando para Internet » PHP »

dar Error al tener 2 nombres iguales en tablas i al estar algun campo en blanco

Estas en el tema de dar Error al tener 2 nombres iguales en tablas i al estar algun campo en blanco en el foro de PHP en Foros del Web. Veran estoy empezando en el PHP i quiero realizar un pequeño registro de usuarios al que le voi añadiendo cosas progressivamente le he añadido que ...
  #1 (permalink)  
Antiguo 12/10/2011, 09:16
 
Fecha de Ingreso: octubre-2011
Mensajes: 6
Antigüedad: 12 años, 6 meses
Puntos: 0
dar Error al tener 2 nombres iguales en tablas i al estar algun campo en blanco

Veran estoy empezando en el PHP i quiero realizar un pequeño registro de usuarios al que le voi añadiendo cosas progressivamente le he añadido que cuando algun campo este en blanco ponga faltan campos por rellenar pero aun que esten todos los campos llenos me lo dice y ademas querria añadirle que cuando en la tabla ya exista un nick igual ponga: Error, nick escogido por otro usuario

Aqui les dejo mi formulario:
<html>
<FORM ACTION="registrarmeu.php" METHOD="post">
Nick : <INPUT TYPE="text" NAME="nick" id="nick" SIZE=20 MAXLENGTH=20>
<BR>
Email: <INPUT TYPE="text" NAME="email" id="email" SIZE=28 MAXLENGTH=100>
<BR>
Password: <INPUT TYPE="password" NAME="password" id="password" SIZE=28 MAXLENGTH=20>
<BR>
Nombre: <INPUT TYPE="text" NAME="nombre" id="nombre" SIZE=28 MAXLENGTH=255>
<BR>
<INPUT TYPE="submit" CLASS="boton" VALUE="Registrar">
</FORM>
</html>

y aqui el programa php: ( la base de datos se llama registres i la tabla usuarios)

<?php

$servidor = 'localhost';
$usuari = 'root';
$contrasenya = '';
$conectar = mysql_connect($servidor, $usuari, $contrasenya);
mysql_select_db('registres', $conectar);

if(trim($_POST["nick"]) or trim($_POST["password"]) or trim($_POST["nombre"]) or trim($_POST["email"]) == "") {
echo "Faltan campos por rellenar";
}
elseif($_POST["nick"] != "")
{
$sql = "INSERT INTO usuarios (nick, PASSWORD, nombre, email) VALUES
('".$_POST['nick']."','".$_POST['password']."', '".$_POST['nombre']."', '".$_POST['email']."')";
mysql_query($sql) or die (mysql_error());

echo "Registro realizado con exito";
}
?>
  #2 (permalink)  
Antiguo 12/10/2011, 09:24
 
Fecha de Ingreso: agosto-2011
Ubicación: España
Mensajes: 445
Antigüedad: 12 años, 7 meses
Puntos: 89
Respuesta: dar Error al tener 2 nombres iguales en tablas i al estar algun campo en b

Prueba así:

Código PHP:
Ver original
  1. <?
  2.  $servidor = 'localhost';
  3.  $usuari = 'root';
  4.  $contrasenya = '';
  5.  $conectar = mysql_connect($servidor, $usuari, $contrasenya);
  6.  mysql_select_db('registres', $conectar);
  7.  
  8. if($_POST['nick'] or $_POST['password'] or $_POST['nombre'] or $_POST['email'] == NULL) {
  9. echo "Faltan campos por rellenar";
  10. }
  11. else
  12.  {
  13.  $sql = "INSERT INTO usuarios (nick, PASSWORD, nombre, email) VALUES
  14. ('".$_POST['nick']."','".$_POST['password']."', '".$_POST['nombre']."', '".$_POST['email']."')";
  15.  mysql_query($sql) or die (mysql_error());
  16.  
  17.  echo "Registro realizado con exito";
  18.  }
  19.  ?>

También puedes usar strlen para comprobar cuántos caracteres han utilizado en los formularios.
  #3 (permalink)  
Antiguo 12/10/2011, 09:52
 
Fecha de Ingreso: octubre-2011
Mensajes: 6
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: dar Error al tener 2 nombres iguales en tablas i al estar algun campo en b

a parte de esto alguien podria explicarme como hacer para que si en la base de datos ya existe un usuario con el mismo nick ponga: Error, nick escogido por otro usuario
Gracias
  #4 (permalink)  
Antiguo 12/10/2011, 09:55
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: dar Error al tener 2 nombres iguales en tablas i al estar algun campo en b

Eso lo puedes hacer poniendo una llave del tipo unique en ese campo, aunque el mensaje lo debes de controlar en PHP, lo que haces es un select a la tabla por el nick, y si existe muestras el mensaje, en caso de error haces el insert correspondiente.
  #5 (permalink)  
Antiguo 12/10/2011, 10:21
 
Fecha de Ingreso: octubre-2011
Mensajes: 6
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: dar Error al tener 2 nombres iguales en tablas i al estar algun campo en b

he intentado hacerlo poniendo esto pero no me funciona alguien me podria dar el codigo hecho por favor?

Código PHP:
Ver original
  1. <?
  2.  $servidor = 'localhost';
  3.  $usuari = 'root';
  4.  $contrasenya = '';
  5.  $conectar = mysql_connect($servidor, $usuari, $contrasenya);
  6.  mysql_select_db('registres', $conectar);
  7.  
  8. if($_POST["nick"] = "" || $_POST["password"] = "" || $_POST["nombre"] = "" || $_POST["email"] = "") {
  9. echo "Faltan campos por rellenar";
  10. }
  11. $sql= SELECT id FROM usuarios WHERE nick = '$_POST["nick"]';
  12. $result = mysql_query($sql);
  13. elseif($result == $_POST["nick"]){
  14. echo "Error, nick escogido por otro usuario"
  15. }
  16. else {
  17.  $sql = "INSERT INTO usuarios (nick, PASSWORD, nombre, email) VALUES
  18. ('".$_POST['nick']."','".$_POST['password']."', '".$_POST['nombre']."', '".$_POST['email']."')";
  19.  mysql_query($sql) or die (mysql_error());
  20.  
  21.  echo "Registro realizado con exito";
  22.  }
  23.  ?>
  #6 (permalink)  
Antiguo 12/10/2011, 13:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: dar Error al tener 2 nombres iguales en tablas i al estar algun campo en b

Lo siento no doy códigos hechos. El problema que tienes es que estas comparando directamente la variable $result con $_POST['nick'], lo que debes de hacer es un simple mysql_num_rows para ver si hay más de una fila, en cuyo caso es que el nick existe.

ej:
Código PHP:
Ver original
  1. $result = mysql_query(/**);
  2. if (mysql_num_rows($result) > 0) {
  3.       echo "error nick existe";
  4. }

Saludos.
  #7 (permalink)  
Antiguo 13/10/2011, 08:09
 
Fecha de Ingreso: octubre-2011
Mensajes: 18
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: dar Error al tener 2 nombres iguales en tablas i al estar algun campo en b

Buenas yo tambien soy nuevo en PHP y estoy haciendo el mismo tipo de formulario. Siguiendo un poco lo que he visto aqui he ido escribiendo el código. Me funciona todo menos lo de dar error si se intenta insertar un usuario que ya existe en la tabla. Lo he revisado y creo que esta bien. Alguien ve algun error? O me podria dar algun consejo que me ayudara a arreglarlo?
Si sirve de ayuda me dice que hay un error en la linea 12.

Código PHP:
Ver original
  1. <?
  2.  
  3. $servidor = 'localhost';
  4. $usuari = 'root';
  5. $contrasenya = '26121994';
  6. $conectar = mysql_connect($servidor, $usuari, $contrasenya);
  7. mysql_select_db('Clients', $conectar);
  8.  
  9. if($_POST["usuari"] == "" or $_POST["contrasenya"] == "" or $_POST["correu"] == "") {
  10. echo "Faltan campos por rellenar";
  11. }
  12. $sql = SELECT * FROM Clients WHERE Usuari = '$_POST["usuari"]';
  13. $result = mysql_query($sql);
  14. elseif(mysql_num_rows($result) > 0){
  15. echo "Error, usuario escogido por otro usuario"
  16. }
  17. else
  18. {
  19. $sql = "INSERT INTO Clients (Usuari, Contrasenya, Correu) VALUES
  20. ('".$_POST['usuari']."','".$_POST['contrasenya']."', '".$_POST['correu']."')";
  21.  
  22. echo "Registro realizado con exito";
  23. }
  24. ?>
  #8 (permalink)  
Antiguo 13/10/2011, 08:33
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: dar Error al tener 2 nombres iguales en tablas i al estar algun campo en b

Te falta un ; después del echo, por eso te da error, si eres principante, antes de empezar a programar te recomiendo aprendas muy bien la sintaxis de PHP, cada condición/acción debe tener un ; que la termine, no es como Visual Basic que no necesita un caracter para terminar.
  #9 (permalink)  
Antiguo 13/10/2011, 09:01
 
Fecha de Ingreso: octubre-2011
Mensajes: 18
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: dar Error al tener 2 nombres iguales en tablas i al estar algun campo en b

No es por el ;
Eso es que lo he copiado mal.
El error esta en otro sitio.
  #10 (permalink)  
Antiguo 13/10/2011, 09:04
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: dar Error al tener 2 nombres iguales en tablas i al estar algun campo en b

A tu consulta $sql le faltan las comillas, lo puedes ver claramente en el highlight, te recomiendo trabajar con un editor como Notepad++ que pueda resaltar el código, así podrías ver estos errores.

Saludos.
  #11 (permalink)  
Antiguo 13/10/2011, 09:08
 
Fecha de Ingreso: agosto-2011
Ubicación: España
Mensajes: 445
Antigüedad: 12 años, 7 meses
Puntos: 89
Respuesta: dar Error al tener 2 nombres iguales en tablas i al estar algun campo en b

Prueba así:

Código PHP:
Ver original
  1. $sql = "SELECT * FROM Clients WHERE Usuari ='".$_POST["usuari"]."'";
  #12 (permalink)  
Antiguo 13/10/2011, 09:12
 
Fecha de Ingreso: octubre-2011
Mensajes: 18
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: dar Error al tener 2 nombres iguales en tablas i al estar algun campo en b

Pos he colocado las comillas y sigue sin funcionar.
No encuentras algun otro error.
Gracias
  #13 (permalink)  
Antiguo 13/10/2011, 09:13
 
Fecha de Ingreso: agosto-2011
Ubicación: España
Mensajes: 445
Antigüedad: 12 años, 7 meses
Puntos: 89
Respuesta: dar Error al tener 2 nombres iguales en tablas i al estar algun campo en b

Cita:
Iniciado por sotos2 Ver Mensaje
Pos he colocado las comillas y sigue sin funcionar.
No encuentras algun otro error.
Gracias
¿Sigue mostrando error en la línea 12?
  #14 (permalink)  
Antiguo 13/10/2011, 09:14
 
Fecha de Ingreso: octubre-2011
Mensajes: 18
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: dar Error al tener 2 nombres iguales en tablas i al estar algun campo en b

No, simplemente se queda en blanco sin poner donde esta el error.
  #15 (permalink)  
Antiguo 13/10/2011, 09:17
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: dar Error al tener 2 nombres iguales en tablas i al estar algun campo en b

Activa tu reporte de errores: error_reporting(E_ALL); ini_set('display_errors', 1);
  #16 (permalink)  
Antiguo 13/10/2011, 09:23
 
Fecha de Ingreso: agosto-2011
Ubicación: España
Mensajes: 445
Antigüedad: 12 años, 7 meses
Puntos: 89
Respuesta: dar Error al tener 2 nombres iguales en tablas i al estar algun campo en b

¿Has comprobado que esté llegando bien la información desde el formulario? Si haces:
Código PHP:
Ver original
  1. echo $_POST["usuari"];
¿Recibe bien los datos del form?
  #17 (permalink)  
Antiguo 18/10/2011, 14:55
 
Fecha de Ingreso: octubre-2011
Mensajes: 18
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: dar Error al tener 2 nombres iguales en tablas i al estar algun campo en b

Buenas, he estado intentando rehacer el código para intentar que funcionara de una vez por todas, pero me sigue sin funcionar.
Este es el código que he escrito. Podrian decirme si ven algun fallo.


Código PHP:
Ver original
  1. <?
  2.      
  3.     $servidor = 'localhost';
  4.     $usuari = 'root';
  5.     $contrasenya = '26121994';
  6.     $conectar = mysql_connect($servidor, $usuari, $contrasenya);
  7.     mysql_select_db('Clients', $conectar);
  8.    
  9.     $sql = "SELECT * FROM Clients WHERE Usuari = '$_POST["usuari"]'";
  10.     $result = "mysql_query($sql)";
  11.      
  12.     if($_POST["usuari"] == "" or $_POST["contrasenya"] == "" or $_POST["correu"] == "" && "mysql_num_rows($result) > 0") {
  13.     echo "rellena los campos y/o el usuario ya existe";
  14.     }
  15.    
  16.     else
  17.     {
  18.     $sql = "INSERT INTO Clients (Usuari, Contrasenya, Correu) VALUES
  19.     ('".$_POST['usuari']."','".$_POST['contrasenya']."', '".$_POST['correu']."')";
  20.     mysql_query($sql) or die (mysql_error());
  21.      
  22.     echo "Registro realizado con exito";
  23.     }
  24.     ?>
  #18 (permalink)  
Antiguo 18/10/2011, 15:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: dar Error al tener 2 nombres iguales en tablas i al estar algun campo en b

Lee lo siguiente:

http://www.forosdelweb.com/f18/como-...1/#post2414268

También es incorrecto hacer esto:
$result = "mysql_query($sql)";

Eso no hace más que asignar mysql_query($sql) a la variable $result, la forma correcta es:

$result = mysql_query($sql);

Aplica lo mismo para mysql_num_rows() no debes de poner todo entre comillas así nadamas.

Te invito a que leas un manual básico de PHP, ya que los problemas que tienes los podrías resolver de una forma muy sencilla si tuvieras las bases.
  #19 (permalink)  
Antiguo 18/10/2011, 17:04
 
Fecha de Ingreso: agosto-2011
Ubicación: la paz
Mensajes: 83
Antigüedad: 12 años, 8 meses
Puntos: 4
Respuesta: dar Error al tener 2 nombres iguales en tablas i al estar algun campo en b

sotos2 hice algunas modificaciones y correji algunas cosas pero espero te sirva, ojo lo hice a ojo de buencubero jaja osea no lo prove man pero si hay algo mal espero investigues a partir de esa base



Código PHP:
Ver original
  1. <?
  2. * * *
  3. * * $servidor = 'localhost';
  4. * * $usuari = 'root';
  5. * * $contrasenya = '26121994';
  6. * * $conectar = mysql_connect($servidor, $usuari, $contrasenya);
  7. * * mysql_select_db('Clients', $conectar);
  8. * * $usuario=$_POST['usuari'];
  9.     $contrasena=$_POST['contrasenya'];
  10.     $correo=$_POST['correu'];
  11. * * $sql = "SELECT * FROM Clients WHERE Usuari = $usuario";
  12. * * $result = mysql_query($sql);
  13. * * *
  14. * * if(($usuario or $contrasena  or $correo == NULL) && mysql_num_rows($result)>0) {
  15. * * echo "rellena los campos y/o el usuario ya existe";
  16. * * }
  17. * *
  18. * * else
  19. * * {
  20. * * $sql = "INSERT INTO Clients (Usuari, Contrasenya, Correu) VALUES
  21. * * ('$usuario','$contraseña','$correo')";
  22. * * mysql_query($sql) or die (mysql_error());
  23. * * *?>    
  24.                 <script>
  25.                     alert ("Registro exitoso");
  26.                 </script>
  27.             <?php
  28. * *
  29. * * }
  30. * * ?>
  #20 (permalink)  
Antiguo 29/10/2011, 05:03
 
Fecha de Ingreso: octubre-2011
Mensajes: 18
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: dar Error al tener 2 nombres iguales en tablas i al estar algun campo en b

Buenas lo de las comillas no es, porque lo he probado sin o con, de todas las maneras.
El verdadero problemas que tengo es con los ifs primero escribí esto:

Código PHP:
Ver original
  1. 1.  <?
  2. 2.   
  3. 3.  $servidor = 'localhost';
  4. 4.  $usuari = 'root';
  5. 5.  $contrasenya = '26121994';
  6. 6.  $conectar = mysql_connect($servidor, $usuari, $contrasenya);
  7. 7.  mysql_select_db('Clients', $conectar);
  8. 8.   
  9. 9.  if($_POST["usuari"] == "" or $_POST["contrasenya"] == "" or $_POST["correu"] == "") {
  10. 10. echo "Faltan campos por rellenar";
  11. 11. }
  12. 12. $sql = SELECT * FROM Clients WHERE Usuari = '$_POST["usuari"]';
  13. 13. $result = mysql_query($sql);
  14. 14. elseif(mysql_num_rows($result) > 0){
  15. 15. echo "Error, usuario escogido por otro usuario";
  16. 16. }
  17. 17. else
  18. 18. {
  19. 19. $sql = "INSERT INTO Clients (Usuari, Contrasenya, Correu) VALUES
  20. 20. ('".$_POST['usuari']."','".$_POST['contrasenya']."', '".$_POST['correu']."')";
  21. 21. mysql_query($sql) or die (mysql_error());
  22. 22.  
  23. 23. echo "Registro realizado con exito";
  24. 24. }
  25. 25. ?>


El problema era que si el primer if se cumplia i el elseif no, se insertaban igualmente los registros. Entonces se me insertaban en la tabla solo el nombre del usuario o solo la contraseña ...


A continuación lo hice de esta manera. Tal como lo he hecho no funciona, no es question de comillas, tiene que ser una cuestion d'estructura, supongo.
Agradeceria cualquier respuesta que me puediera resolver el problema que tengo.

Código PHP:
Ver original
  1. <?
  2.      
  3.     $servidor = 'localhost';
  4.     $usuari = 'root';
  5.     $contrasenya = '26121994';
  6.     $conectar = mysql_connect($servidor, $usuari, $contrasenya);
  7.     mysql_select_db('Clients', $conectar);
  8.    
  9.     $sql = SELECT * FROM Clients WHERE Usuari = '$_POST["usuari"]';
  10.     $result = mysql_query($sql);
  11.      
  12.     if($_POST["usuari"] == "" or $_POST["contrasenya"] == "" or $_POST["correu"] == "" && mysql_num_rows($result) > 0) {
  13.     echo "rellena los campos y/o el usuario ya existe";
  14.     }
  15.    
  16.     else
  17.     {
  18.     $sql = "INSERT INTO Clients (Usuari, Contrasenya, Correu) VALUES
  19.     ('".$_POST['usuari']."','".$_POST['contrasenya'].', '".$_POST['correu']."')";
  20.     mysql_query($sql) or die (mysql_error());
  21.      
  22.     echo "Registro realizado con exito";
  23.     }
  24.     ?>

Etiquetas: html, iguales, mysql, nombres, registro, sql, tabla, tener, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:25.