Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/05/2011, 19:03
Avatar de DCienfuegos
DCienfuegos
 
Fecha de Ingreso: febrero-2009
Ubicación: Asturias
Mensajes: 195
Antigüedad: 15 años, 2 meses
Puntos: 3
Como evitar que se inserten duplicados mediante formulario

Hola buenas, estoy creando un sistema de recogida de firmas lo tengo todo funcionando lo unico que una cosa que tengo implementada ya que no se como hacerla y es que no se permita introducir duplicados, es decir, que no se pueda poner un dni dos veces por ejemplo, ni un nombre, para evitar dobles firmas.

Os dejo el codigo que utilice y a ver si alguien que sepa hacerlo me hecha un cable, gracias.

Y de paso si alguien quiere hacer algo similar que me aviso y le paso la sql ;)

Código PHP:
 <?php

        
// datos para la db
    
$dbhost='';
    
$dbusername='';
    
$dbuserpass='';
    
$dbname='';
    
// Conexin a la base de datos
    
mysql_connect ($dbhost$dbusername$dbuserpass);
    
mysql_select_db($dbname) or die("No se puede seleccionar la base de datos");

    
//Ip cliente: 
    
@$pfw_ip$_SERVER['REMOTE_ADDR'];    


    
//SI SE HA PULSADO ENVIAR, SE COMPRUEBAN LOS DATOS INSERTADOS
    
if(isset($_POST['enviarCorreo'])){
        
//se muestra el formulario de nuevo
        
            
        
if(!$nombre=filter_input(INPUT_POST,"nombre",FILTER_SANITIZE_STRING))
            
$errores[]="El campo nombre no puede estar vacio.";            
            
        
$dni=filter_input(INPUT_POST,"dni",FILTER_SANITIZE_STRING);
        if(
$dni=="")
            
$errores[]="El campo DNI no puede estar vacio";
            
    
        
        if(isset(
$errores)){
            
?>
            <br /><span class="rojo"><b>No puede firmar</b></span><b><span class='rojo'> 
debido a los siguientes errores:  </span></b>
                
            <?php    
            
echo "<ul class='errores'>";
            foreach(
$errores as $error)
                echo 
'<li>'.$error.'</li>';
            echo 
'</ul>';
            
            
            
?>
            </p>
            <form name="formularioContacto" action="index.php" method="post">
                <p>&nbsp;</p>
                <table class="formulario">                
                    <tr><td class="izquierda">Nombre Completo:</td><td><input type="text"  name="nombre" value="<?php echo $nombre;?>" size="50"/></td></tr>
                    <tr><td class="izquierda">DNI:</td><td><input type="text" value="<?php echo $dni;?>"  name="dni"  size="9"/></td></tr>
                    <tr><td class="izquierda"></td><td><input type="submit" name="enviarCorreo" value="Firmar" /><input name='limpiar' type='reset' value='Limpiar' /></td></tr>

            
                </table>
            </form>
        <?php

        
    
        
}
        
//SI NO HAY ERRORES Y SE HA PULSADO EN ENVIAR, SE GUARDA EN LA DB Y SE IMPRIME MENSAJE DE EXITO
        
else{        
            
//Todo parece correcto procedemos con la inserccion
            
$query "INSERT INTO firmas (nombre, dni) VALUES('$nombre','$dni')";
            
mysql_query($query) or die(mysql_error());

            echo 
"<br /><b><span class='blanco'>GRACIAS POR FIRMAR </span></b>";
                
        }
    }



    
    
//SI NO SE HA PULSADO ENVIAR SE MUESTRA EL FORMULARIO 
    
else{?>
        <form name="formularioContacto" action="index.php" method="post">
        <p>&nbsp;</p>
        <table class="formulario" bgcolor="#64A3CF" style="border: 1px dashed #FFFFFF">                    
              <tr><td class="izquierda"><font size="2">Nombre Completo:</font></td><td><input type="text"  name="nombre" value="<?php echo $nombre;?>" size="50"/></td></tr>
                    <tr><td class="izquierda"><font size="2">DNI:</font></td><td>
          <input type="text" value="<?php echo $dni;?>"  name="dni"  size="9"/></td></tr>
              <tr><td class="izquierda"></td><td><input type="submit" name="enviarCorreo" value="Firmar" /></td></tr>            
                </table>
        </form>
        <?php
    
}


    
?>

Os pegue el codigo entero aunque creo que con esta parte ya os valdria (no estoy seguro)

Código PHP:
        if(!$nombre=filter_input(INPUT_POST,"nombre",FILTER_SANITIZE_STRING)) 
            $errores[]="El campo nombre no puede estar vacio.";             
             
        $dni=filter_input(INPUT_POST,"dni",FILTER_SANITIZE_STRING); 
        if($dni=="") 
            $errores[]="El campo DNI no puede estar vacio"; 
             
     
         
        if(isset($errores)){ 
            ?> 
            <br /><span class="rojo"><b>No puede firmar</b></span><b><span class='rojo'>  
debido a los siguientes errores:  </span></b> 
                 
            <?php     
            
echo "<ul class='errores'>"
            foreach(
$errores as $error
                echo 
'<li>'.$error.'</li>'
            echo 
'</ul>'
             
             
            
?>