Comunidad de diseño web y desarrollo en internet online

diferentes valores en mysql

Citar            
MensajeEscrito el 31 Jul 2012 02:26 am
hola, mi duda es la siguiente que tengo que poner en una tabla mysql
para que por ej, no pueda haber dos nombres iguales ingresados?
gracias.

Por skaterseba

Claber

170 de clabLevel



 

firefox
Citar            
MensajeEscrito el 01 Ago 2012 06:24 pm
Tienes que comparar todos los valores de las tablas y que no se vaya repitiendo... algo asi ;)

Código PHP :

//HACE UNA CONSULTA A TODOS LOS CAMPOS PARA OBTENER EL ULTIMO ID REGISTRADO
$myquery = mysql_query("SELECT * FROM PERSON ORDER BY IDPERSON");

//SI FALLA LA CONSULTA MANDA UN ERROR
if(!$myquery)
   die('Consulta no Valida: '.mysql_error());
   
   //ESTA ES UNA VARIABLE DE CONTROL, PERMANECERA EN false HASTA QUE EL NOMBRE Y APELLIDOS SE REPITAN (COSA QUE NO DEBE OCURRIR)
   $duplicado = false;   
   
   
   //SI LA CONSULTA ARROJO 1 VALOR O MAS REALIZA LO SIGUENTE
   if(mysql_num_rows($myquery) != 0)
   {
      //MIENTRAS HAYA VALORES, SE IMPRIMEN CADA UNO DE ELLOS
      while ($myresult = mysql_fetch_array($myquery))
      {
         //CONTADOR DE REPETICIONES
         //SE INICIA EN CERO E INDICA QUE NO HAY CAMPOS REPETIDOS
         $checkrepeated = 0;
         
         //COMPARA SI INSERTNAME LLEVA UN VALOR Y (&&) SI ES IGUAL A UN VALOR EXISTENTE SUMA +1 A $checkrepeated
         if(isset($_POST["insertname"]) && $myresult['NAME'] == $_POST["insertname"])
            $checkrepeated++;
            
         //lo MISMO PERO PARA LASTNAME
         if(isset($_POST["insertlastname"]) && $myresult["LASTNAME"] == $_POST["insertlastname"])
            $checkrepeated++;
            
         //LO MISMO PARA MOMMAIDEN
         if(isset($_POST["insertmommaidenname"]) && $myresult["MOMMAIDENNAME"] == $_POST["insertmommaidenname"])
            $checkrepeated++;
         
         //SI LA CUENTA DE CAMPOS REPETIDOS LLEGA A 3 SIGNIFICA QUE ESTA DUPLICADO
         //CAMBIA LA VARIABLE DUPLICADO A true   
         if($checkrepeated == 3)
            $duplicado = true;
         
         //SI ESTA DUPLICADO MANDA UN MENSAJE Y CORTA EL CICLO CON break ASI NO SE HAYA TERMINADO
         if($duplicado == true)
            {
            echo "El registro es un duplicado, inserta nuevos datos<br>";
            break;
            }
            
         //EN ESTE PUNTO EL PROGRAMA SABE QUE NO ESTA DUPLICADO Y ALMACENA EL IDPERSON DEL ULTIMO REGISTRO
         $nuevoID = $myresult["IDPERSON"];
      }
      //LO CAMBIO A ENTERO POR QUE VIENE COMO UN TEXTO
      setType($nuevoID,"integer");
      
      //LE SUMO 1  ESTO ES POR QUE SI EL ULTIMO ES 32, EL NUEVO ID SERA 33 Y ASI CON X CANTIDAD DE REGISTROS
      $nuevoID++;
   }
   
   //COMPRUBA SI DUPLICADO ESTA EN false Y QUE LOS DATOS AL INICIO SE HAYAN INSERTADO LOS 4
   //SI ALGUNA DE LAS DOS NO ES VERDAD, NO REALIZA NADA
   if($duplicado == false && $datos == 4)
      {
      //TOMA LAS VARIABLES
      $name = $_POST["insertname"];
      $lastname = $_POST["insertlastname"];
      $mommaiden = $_POST["insertmommaidenname"];
      $birthday = $_POST["insertbirthday"];
      echo "Datos a Isertar: $nuevoID - $name $lastname $mommaiden<br>";
      
      //REALIZA LA CONSULTA
      $insertquery = mysql_query("INSERT INTO PERSON VALUES($nuevoID,'$name','$lastname','$mommaiden','$birthday','','')");
      
      //SI LA CONSULTA SE EJECUTA CORRECTAMENTE ENVIA UN MENSAJE
      if($insertquery)
         echo "<strong>Nuevo Registro Ingresado Correctamente</strong>";
      //SI NO FUNCIONA ENVIA EL ERROR
      else
         die("Consulta Invalida".mysql_error());
      }
   //EN CASO DE QUE LOS 4 VALORES INICIALES ESTEN VACIOS O EN EL VALOR POR DEFECTO
   //SOLICITA LLENARLOS
   else
      echo "<br>//Rellena todos los campos"

Por elporfirio

Claber

652 de clabLevel

1 tutorial

Genero:Masculino  

FullStack Web Developer

firefox
Citar            
MensajeEscrito el 01 Ago 2012 09:17 pm
mmm, no sera mejor ponerlo en la tabla , digo al momento de crearla darle el atributo, UNIQUE

Código :

CREATE TABLE mi_tabla(
  ID BIGINT AUTO_INCREMENT, 
  mi_columna VARCHAR(128) NOT NULL UNIQUE, 
  PRIMARY KEY(ID)
);

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 01 Ago 2012 11:24 pm
Eso es bueno para los ID, pero cuando tienes varios Juanes, o varios Ignacios chavez... 2 de los 3 valores pueden repetirse.

Nombre + Apellido
Nombre + Apellido Materno
Apellido Materno + Apellido

Por elporfirio

Claber

652 de clabLevel

1 tutorial

Genero:Masculino  

FullStack Web Developer

firefox
Citar            
MensajeEscrito el 02 Ago 2012 12:29 pm
¿Y como determinas que no se trata de la misma persona?, Porque es perfectamente posible que haya más de un Juan Perez.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 02 Ago 2012 07:10 pm

elporfirio escribió:

Eso es bueno para los ID, pero cuando tienes varios Juanes, o varios Ignacios chavez... 2 de los 3 valores pueden repetirse.

Nombre + Apellido
Nombre + Apellido Materno
Apellido Materno + Apellido

has mas descriptiva tu pregunta, por que , haber este ejemplo

Código :

Nombres          -    Apellido Patterno    -   Apellido Materno
maria           +   chambi                +  mesteses
maria           +   menesteses           +  chambi
maria del pilar +   chambi               +

tienes que ponerte varios casos, y adecuar el control, que le quieras dar,

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.