Foros del Web » Programando para Internet » PHP »

Ver si existe un registro antes de insertar

Estas en el tema de Ver si existe un registro antes de insertar en el foro de PHP en Foros del Web. Hola tengo un formulario de registro de personas y quiero hacer que antes de guardar los datos verifique en la base de datos si la ...
  #1 (permalink)  
Antiguo 05/10/2012, 13:28
 
Fecha de Ingreso: marzo-2008
Mensajes: 94
Antigüedad: 16 años, 8 meses
Puntos: 0
Ver si existe un registro antes de insertar

Hola tengo un formulario de registro de personas y quiero hacer que antes de guardar los datos verifique en la base de datos si la persona existe o no, a traves del rut.

Código PHP:
<?php 
$state 
false;
if (
$_POST['action'] == "add") { 
    
$cnx mysql_connect("localhost""root""1234");
    
mysql_select_db("htp"$cnx);
    
    
$rut $_POST['rut'];
    
$consul ="SELECT rut FROM usuario WHERE rut = '".$rut."'";
    
$result mysql_query($consul,$cnx);
 
    if (
mysql_num_rows($result) > 0) {
        echo 
" <script> 
        alert('Error, El rut ya existe'); 
        </script> "
;
        
    } else {
    
    
$sql "INSERT INTO usuario (rut, nombre, apellido, direccion, sexo, region, comuna, telefono, email) ";
    
$sql.= "VALUES ('".$_POST['rut']."', '".$_POST['nombre']."', '".$_POST['apellido']."','".$_POST['direc']."',  '".$_POST['sexo']."','".$_POST['region']."','".$_POST['comuna']."','".$_POST['telefono']."','".$_POST['email']."')";
       
$sql mysql_query($sql$cnx) or die(mysql_error());
    
$state true;
}
}

?>
por alguna razon no se esta ejecutando el IF donde hace la verificacion, pasa directo al insert.
alguien me puede ayudar?

gracias
  #2 (permalink)  
Antiguo 05/10/2012, 13:30
Avatar de malakian  
Fecha de Ingreso: septiembre-2010
Ubicación: $malakian->Colombia();
Mensajes: 469
Antigüedad: 14 años, 2 meses
Puntos: 45
Respuesta: Ver si existe un registro antes de insertar

prueba a imprimir la consulta para ver si los datos estan llegando

Código PHP:
Ver original
  1. echo $consul;
__________________
Guitar Loco, Desarrollador Web PHP
Sigueme: @jose1x
  #3 (permalink)  
Antiguo 05/10/2012, 13:36
 
Fecha de Ingreso: marzo-2008
Mensajes: 94
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Ver si existe un registro antes de insertar

SELECT rut FROM usuario WHERE rut = '16.048.063-7'

eso devuelve, al menos captura la variable rut
  #4 (permalink)  
Antiguo 08/10/2012, 08:12
 
Fecha de Ingreso: marzo-2008
Mensajes: 94
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Ver si existe un registro antes de insertar

alguien me puede decir que estoy haciendo mal?
  #5 (permalink)  
Antiguo 08/10/2012, 08:30
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 13 años
Puntos: 67
Respuesta: Ver si existe un registro antes de insertar

Has dicho que no te ejecuta el if, que te pasa directamente al insert, eso es mentira, el if si te lo está ejecutando, ya que el inserte está dentro del else, lo único que la condición que le has puesto al if te devuelve false, por algún motivo.
Pon algunas lineas de control para ver el fallo, por ejemplo:
Código PHP:
<?php 
$state 
false;
if (
$_POST['action'] == "add") { 
    
$cnx mysql_connect("localhost""root""1234");
    
mysql_select_db("htp"$cnx);
    
    
$rut $_POST['rut'];
    
$consul ="SELECT rut FROM usuario WHERE rut = '".$rut."'";

    
$result mysql_query($consul,$cnx) or die(mysql_error());
    echo 
mysql_num_rows($result);
    
//Si no sucede nada extraño y no tira ningún fallo, prueba: $result = mysql_query($consul) or die(mysql_error());

    
if (mysql_num_rows($result) > 0) {
        echo 
" <script> 
        alert('Error, El rut ya existe'); 
        </script> "
;
        
    } else {
    
    
$sql "INSERT INTO usuario (rut, nombre, apellido, direccion, sexo, region, comuna, telefono, email) ";
    
$sql.= "VALUES ('".$_POST['rut']."', '".$_POST['nombre']."', '".$_POST['apellido']."','".$_POST['direc']."',  '".$_POST['sexo']."','".$_POST['region']."','".$_POST['comuna']."','".$_POST['telefono']."','".$_POST['email']."')";
       
$sql mysql_query($sql$cnx) or die(mysql_error());
    
$state true;
}
}
  #6 (permalink)  
Antiguo 08/10/2012, 10:15
 
Fecha de Ingreso: junio-2007
Ubicación: en una casa
Mensajes: 42
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Ver si existe un registro antes de insertar

revisa este post.... posiblemente te puedas ayudar... en muy poco codigo, solo realizas antes una busqueda, si encuentran uno igual, enviar mensaje... de lo contrario que continue con el programa...

link: http://www.forosdelweb.com/f18/evitar-registros-duplicados-enviando-id-pagina-otra-pagina-donde-consulto-1016684/

saludos
  #7 (permalink)  
Antiguo 08/10/2012, 14:06
 
Fecha de Ingreso: marzo-2008
Mensajes: 94
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Ver si existe un registro antes de insertar

Cita:
Iniciado por zalito12 Ver Mensaje
Has dicho que no te ejecuta el if, que te pasa directamente al insert, eso es mentira, el if si te lo está ejecutando, ya que el inserte está dentro del else, lo único que la condición que le has puesto al if te devuelve false, por algún motivo.
Pon algunas lineas de control para ver el fallo, por ejemplo:
Código PHP:
<?php 
$state 
false;
if (
$_POST['action'] == "add") { 
    
$cnx mysql_connect("localhost""root""1234");
    
mysql_select_db("htp"$cnx);
    
    
$rut $_POST['rut'];
    
$consul ="SELECT rut FROM usuario WHERE rut = '".$rut."'";

    
$result mysql_query($consul,$cnx) or die(mysql_error());
    echo 
mysql_num_rows($result);
    
//Si no sucede nada extraño y no tira ningún fallo, prueba: $result = mysql_query($consul) or die(mysql_error());

    
if (mysql_num_rows($result) > 0) {
        echo 
" <script> 
        alert('Error, El rut ya existe'); 
        </script> "
;
        
    } else {
    
    
$sql "INSERT INTO usuario (rut, nombre, apellido, direccion, sexo, region, comuna, telefono, email) ";
    
$sql.= "VALUES ('".$_POST['rut']."', '".$_POST['nombre']."', '".$_POST['apellido']."','".$_POST['direc']."',  '".$_POST['sexo']."','".$_POST['region']."','".$_POST['comuna']."','".$_POST['telefono']."','".$_POST['email']."')";
       
$sql mysql_query($sql$cnx) or die(mysql_error());
    
$state true;
}
}
tienes razon el if se ejecuta, hice lo que me dijiste y
echo mysql_num_rows($result); devuelve "0".
  #8 (permalink)  
Antiguo 10/10/2012, 08:10
 
Fecha de Ingreso: marzo-2008
Mensajes: 94
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Ver si existe un registro antes de insertar

GRACIAS, ya lo solucine con lo que me dijeron.

Etiquetas: formulario, mysql, registro, sql, 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 21:45.