Foros del Web » Programando para Internet » PHP »

Evitar información duplicada

Estas en el tema de Evitar información duplicada en el foro de PHP en Foros del Web. Saludos. Estoy tratando de agregar registros a una base de datos y a la vez validar qus si el registro ya existe me devuelva un ...
  #1 (permalink)  
Antiguo 25/01/2010, 14:42
 
Fecha de Ingreso: agosto-2005
Mensajes: 152
Antigüedad: 19 años, 3 meses
Puntos: 0
Evitar información duplicada

Saludos.
Estoy tratando de agregar registros a una base de datos y a la vez validar qus si el registro ya existe me devuelva un mensaje indicando que el registro ya se encuentra en la base de datos.
Buscando por aquí y por allá he visto algunas cosas que he utilizado, pero no me funciona, el código se me ha complicado algo. Este es mi código:
Código PHP:
<?php
// incluimos el archivo de conexion
include ('db_cnx.php');
// recibimos el formulario
if(isset($_POST['enviar']) && $_POST['enviar'] == 'Enviar'){
// comprobamos que el formulario no envie campos vacios
if(!empty($_POST['codigo_emp']) && $_POST['descripcion'] &&
$_POST['comprador1'] && $_POST['identidad1'] && $_POST['comprador2'] && $_POST['identidad2'])
 &&  
$busqueda mysql_query("SELECT codigo_emp FROM datos WHERE codigo_emp='$codigo_emp'"); 
// vemos si hay coincidencias 
if(mysql_num_rows($busqueda)>0) { // ó " !=0 " como se quiera ver 
      // Inciso a:  
      
echo "Está empresa ya existe. Por favor intente con otro.<br>"
      echo 
"<a href=\"javascript:history.back()\">Regresar</a>"
} else { 
      
// Inciso b: 
$sqlInserDat mysql_query("INSERT INTO datos codigo_emp, descripcion, comprador1, identidad1, comprador2, identidad2)
VALUES ('$codigo_emp', '$descripcion', '$comprador1', '$identidad1', '$comprador2', '$identidad2')"
$db_link)
or die(
mysql_error());
echo 
"$codigo_emp ya existente.";{
// creamos la variable y le asignamos el valor a insertar
$codigo_emp $_POST['codigo_emp'];
$descripcion $_POST['descripcion'];
$comprador1 $_POST['comprador1'];
$identidad1 $_POST['identidad1'];
$comprador2 $_POST['comprador2'];
$identidad2 $_POST['identidad2'];
// hacemos el INSERT en la BD
$sqlInsertDat mysql_query("INSERT INTO datos (codigo_emp, descripcion, comprador1, identidad1, comprador2, identidad2)
VALUES ('$codigo_emp', '$descripcion', '$comprador1', '$identidad1', '$comprador2', '$identidad2')"
$db_link)
or die(
mysql_error());
// Paso 1: Recibimos el formulario: 
$codigo_emp $_POST['codigo_emp'];  

// enviamos un mensaje de exito
echo "Los datos fueron guardados correctamente";
}else{
// si el formulario viene vacio
// enviamos un mensaje de error
echo "Debe llenar el formulario";
}
}
?>
<!-- el formulario -->
<form name="datos" action="<?php $_SERVER['PHP_SELF'?>" method="post">
<p>
Nuevo Cliente<br />
<br>
Código de la Empresa:<input type="text" name="codigo_emp" />
<p>
Nombre de la Empresa:<input type="text" name="descripcion" />
<p>
Nombre del Comprador:<input type="text" name="comprador1" />
<p>
Carné de Identidad:<input type="text" name="identidad1" />
<p>
Nombre del Comprador:<input type="text" name="comprador2" />
<p>
Carné de Identidad:<input type="text" name="identidad2" />
<p>
<input type="submit" name="enviar" value="Enviar" />
</p>
</form>
  #2 (permalink)  
Antiguo 25/01/2010, 14:46
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Evitar información duplicada

Solo tienes que añadir una consulta y luego verificarla. Algo así
Código PHP:
Ver original
  1. $r = mysql_query("SELECT * FROM tabla WHERE columna = '".mysql_real_escape_string($_POST["nombre_del_texto"])."'") or die(mysql_error());
  2. if(mysql_num_rows($r)>0){
  3. echo "Ya existe un registro en la base de datos";
  4. }
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 25/01/2010, 15:10
 
Fecha de Ingreso: agosto-2005
Mensajes: 152
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: Evitar información duplicada

Gracias por tu pronta respuesta, pero me parece que tengo problemas en la sintáxis. Pues mira esto:
Código PHP:
<?php
// incluimos el archivo de conexion
include ('db_cnx.php');
$busqueda mysql_query("SELECT codigo_emp FROM datos WHERE codigo_emp='$codigo_emp'"); 
if(isset(
$_POST['enviar']) && $_POST['enviar'] == 'Enviar'){
// comprobamos que el formulario no envie campos vacios
if(!empty($_POST['codigo_emp']) && $_POST['descripcion'] &&
$_POST['comprador1'] && $_POST['identidad1'] && $_POST['comprador2'] && $_POST['identidad2'])
 && if(
mysql_num_rows($busqueda)>0) { // ó " !=0 " como se quiera ver
Pues en la primera línea creo una variable y le asigno el valor de una query, después con mysql_num_rows compruebo lo devuelvo por la consulta asignada a la avariable, si el valor es mayor que 1 es que el registro ya existe, sino lo agrego a la tabla. Ahora me pregunto si es posible una sentencia IF colocada después del operador and (&&)?.
Pues estoy obteniendo el siguiente código de error cuando llamo a la página.
Este es el error: Parse error: syntax error, unexpected T_BOOLEAN_AND in C:\AppServ\www\buscador1\add_datos.php on line 10.
La línea 10 del código es dónde está el and y el if.
Gracias.

Etiquetas: duplicada
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 18:08.