Foros del Web » Programando para Internet » PHP »

Verificar existencia de un resgistro en Base de datos

Estas en el tema de Verificar existencia de un resgistro en Base de datos en el foro de PHP en Foros del Web. Hola, tengo un script en el cual inserto datos en un base de datos mysql, pero quiero controlar que no entren registros duplicados, y lo ...
  #1 (permalink)  
Antiguo 16/11/2004, 09:27
Avatar de capuleto  
Fecha de Ingreso: octubre-2003
Ubicación: Cartagena
Mensajes: 219
Antigüedad: 14 años, 2 meses
Puntos: 0
Verificar existencia de un resgistro en Base de datos

Hola, tengo un script en el cual inserto datos en un base de datos mysql, pero quiero controlar que no entren registros duplicados, y lo trato de hacer con una campo en la base de datos llamado inscripciones_identificacion_numero por medio de una consulta a la base de datos pero me arroja el siguiente error..Unknown column 'inscripciones_identificacion_numero' in 'where clause'...creo que todo esta bien...buenoles dejoel script, ojala y me puedan orientar, que necesitoe ntregarlo en la tarde....Gracias y espero su ayuda...chao
Código PHP:
<TD class=contenido vAlign=top align=middle width="80%">
                  <?php

                  
include "./librerias/lib_db.inc";

                  if (isset(
$_GET['error'])){

                    
$error_accion_ms[0]= "No se puede borrar el Usuario, debe existir por lo menos uno.<br>Si desea borrarlo, primero cree uno nuevo.";
                    
$error_accion_ms[1]= "Faltan Datos.";
                    
$error_accion_ms[2]= "Passwords no coinciden.";
                    
$error_accion_ms[3]= "El Nivel de Acceso ha de ser numérico.";
                    
$error_accion_ms[4]= "El Usuario ya está registrado.";

                    
$error_cod $_GET['error'];
                    echo 
"<div align='center'>$error_accion_ms[$error_cod]</div><br>";

                  }

                  
$primer_nombre=$_POST['primer_nombre'];
                  
$segundo_nombre=$_POST['segundo_nombre'];
                  
$primer_apellido=$_POST['primer_apellido'];    
                  
$segundo_apellido=$_POST['segundo_apellido'];
                  
$tipo_identificacion=$_POST['tipo_identificacion'];
                  
$identificacion=$_POST['identificacion'];

                  
//Conexion con el Servidor
                  
$db_conexion=mysql_connect("$sql_host""$sql_usuario""$sql_pass");
                  
# Selecciono la Base de Datos
                  
mysql_select_db($sql_db,$db_conexion);

                  
$usuarios_consulta mysql_query("SELECT inscripciones_id_inscripcion FROM $sql_tabla1 WHERE inscripciones_identificacion_numero='$identificacion'") or die(mysql_error());
                  
$total_encontrados mysql_num_rows ($usuarios_consulta);
                  
mysql_free_result($usuarios_consulta);
                  if (
$total_encontrados != 0) {
                      
header ("Location: $pag?accion=nuevo&error=4");
                      exit;
                      
                  }
                  
                                    
                  
//Ejecucion de la sentencia SQL
                  
mysql_query("INSERT INTO $sql_tabla1 VALUES('','$primer_nombre','$segundo_nombre','$primer_apellido', '$segundo_apellido','$tipo_identificacion','$identificacion')") or die(mysql_error());
                  
# Cierro la Conexion
                  
mysql_close($db_conexion);
                  
                  
?>
                  <div align="center"><b>Registro Insertado</b></div>
                  <div align="center"><a href="lectura.php">Visualizar el contenido de la base</a></div>
                  
                </TD>
Bueno este es el script que recibe los datos...espero ayuda, chao
__________________
...Definitivamente Soy Nadie entre los Sabios....*-*Capuleto*-*
  #2 (permalink)  
Antiguo 16/11/2004, 09:52
Avatar de Titos  
Fecha de Ingreso: agosto-2002
Mensajes: 116
Antigüedad: 15 años, 3 meses
Puntos: 3
A ver

Creo que estas enrollando la vida sin necesidad, Por que no pruebas esto:

Código PHP:
$usuarios_consulta mysql_query("SELECT * FROM $sql_tabla1 WHERE inscripciones_identificacion_numero='$identificacion'") or die(mysql_error()); 
                  
$total_encontrados mysql_num_rows ($usuarios_consulta); 
                  
mysql_free_result($usuarios_consulta); 
                  if (
$total_encontrados != 0) { 
                      
header ("Location: $pag?accion=nuevo&error=4"); 
                      exit; 
                       
                  } 
Por que lo que veo que estas asiendo mal es que estas haciendo un llamado al campo especifico "inscripciones_id_inscripcion" y en la consulta le estas diciendo ( inscripciones_identificacion_numero='$identificaci on' ) ósea en todo caso la consulta seria así:


Código PHP:
$usuarios_consulta mysql_query("SELECT inscripciones_identificacion_numero FROM $sql_tabla1 WHERE inscripciones_identificacion_numero='$identificacion'") or die(mysql_error()); 
                  
$total_encontrados mysql_num_rows ($usuarios_consulta); 
                  
mysql_free_result($usuarios_consulta); 
                  if (
$total_encontrados != 0) { 
                      
header ("Location: $pag?accion=nuevo&error=4"); 
                      exit; 
                       
                  } 
Saludos
__________________
Saludos a [email protected] :adios:
  #3 (permalink)  
Antiguo 16/11/2004, 12:09
Avatar de capuleto  
Fecha de Ingreso: octubre-2003
Ubicación: Cartagena
Mensajes: 219
Antigüedad: 14 años, 2 meses
Puntos: 0
No funciona ahora sale esto
Unknown column 'inscripciones_identificacion_numero' in 'where clause'
ayuda por favor....nada que sale..
__________________
...Definitivamente Soy Nadie entre los Sabios....*-*Capuleto*-*
  #4 (permalink)  
Antiguo 16/11/2004, 12:16
Avatar de Titos  
Fecha de Ingreso: agosto-2002
Mensajes: 116
Antigüedad: 15 años, 3 meses
Puntos: 3
cual es la estructura de tu base de datos? osea en que campo metes el resultado de la variable $identificacion ????
__________________
Saludos a [email protected] :adios:

Última edición por Titos; 16/11/2004 a las 12:18
  #5 (permalink)  
Antiguo 16/11/2004, 12:19
Avatar de ignacio_giri  
Fecha de Ingreso: febrero-2003
Ubicación: Argentina, Rosario
Mensajes: 585
Antigüedad: 14 años, 9 meses
Puntos: 0
WHERE inscripciones_identificacion_numero='$identificaci on'")

no sera? WHERE inscripciones_identificacion_numero='$identificaci on'")

ó

WHERE inscripciones_identificacion_numero='$inscripcione s_identificacion_numero'")
__________________
Ignacio
  #6 (permalink)  
Antiguo 16/11/2004, 12:20
Avatar de ignacio_giri  
Fecha de Ingreso: febrero-2003
Ubicación: Argentina, Rosario
Mensajes: 585
Antigüedad: 14 años, 9 meses
Puntos: 0
ahhh, que pasa? no lo muestra bien!! no se entiende!
__________________
Ignacio
  #7 (permalink)  
Antiguo 16/11/2004, 12:21
Avatar de Titos  
Fecha de Ingreso: agosto-2002
Mensajes: 116
Antigüedad: 15 años, 3 meses
Puntos: 3
cual es el nombre del campo en tu bd donde vas a meter $identificacion ?
__________________
Saludos a [email protected] :adios:
  #8 (permalink)  
Antiguo 16/11/2004, 12:22
Avatar de Titos  
Fecha de Ingreso: agosto-2002
Mensajes: 116
Antigüedad: 15 años, 3 meses
Puntos: 3
te voy hacer una pregunta muy simple en tu base de datos existe un campo de nombre (inscripciones_identificacion_numero) ????
__________________
Saludos a [email protected] :adios:
  #9 (permalink)  
Antiguo 16/11/2004, 13:36
Avatar de capuleto  
Fecha de Ingreso: octubre-2003
Ubicación: Cartagena
Mensajes: 219
Antigüedad: 14 años, 2 meses
Puntos: 0
nada

esta es mi estructura de la tabla:
Código:
CREATE TABLE registros (
  inscripciones_id_inscripcion smallint(6) unsigned NOT NULL auto_increment,
  inscripciones_primer_nombre varchar(20) NOT NULL default '',
  inscripciones_segundo_nombre varchar(20) default NULL,
  inscripciones_primer_apellido varchar(20) NOT NULL default '',
  inscripciones_segundo_apellido varchar(20) default NULL,
  inscripciones_tipo_identificacion varchar(30) NOT NULL default '',
  inscripciones_identificacion_numero  varchar(20) NOT NULL default '',
  PRIMARY KEY  (inscripciones_id_inscripcion)
) TYPE=MyISAM;
Claro existen los campo que les digo....
__________________
...Definitivamente Soy Nadie entre los Sabios....*-*Capuleto*-*
  #10 (permalink)  
Antiguo 16/11/2004, 13:49
Avatar de capuleto  
Fecha de Ingreso: octubre-2003
Ubicación: Cartagena
Mensajes: 219
Antigüedad: 14 años, 2 meses
Puntos: 0
Código:
Unknown column 'inscripciones_identificacion_numero' in 'where clause'
Por partes..el formulario que toma la variable identificacion:
Código PHP:
<tr valign="top"
                      <
td width="25%" class="td2" valign="middle">N&ordm;. Identificaci&oacute;n:</td>
                      <
td width="75%" align="left" class="td2"> <input type="text" name="identificacion" size="20" maxlength="20" class="pet-imput"
en el que la recibo con
Código PHP:
$identificacion=$_POST['identificacion']; 
y despues pregunto si eso existe:
Código PHP:
$db_conexion=mysql_connect("$sql_host""$sql_usuario""$sql_pass");
                  
# Selecciono la Base de Datos
                  
mysql_select_db($sql_db,$db_conexion);
//Si no existe
$usuarios_consulta mysql_query("SELECT * FROM $sql_tabla1 WHERE inscripciones_identificacion_numero='$identificacion'") or die(mysql_error()); 
                  
$total_encontrados mysql_num_rows ($usuarios_consulta); 
                  
mysql_free_result($usuarios_consulta); 
                  if (
$total_encontrados != 0) { 
                      echo 
"Esta mal";                        
                  } 
//Si no existe inseto el registro
mysql_query("INSERT INTO $sql_tabla1 VALUES('','$primer_nombre','$segundo_nombre','$primer_apellido', '$segundo_apellido','$tipo_identificacion','$identificacion')") or die(mysql_error());
                  
# Cierro la Conexion
                  
mysql_close($db_conexion);
?> 
alli esta que pasara....
__________________
...Definitivamente Soy Nadie entre los Sabios....*-*Capuleto*-*
  #11 (permalink)  
Antiguo 16/11/2004, 15:02
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
Asegurate de que la variable $sql_tabla1 contenga el valor "registros", que es la tabla que contiene el campo inscripciones_identificacion_numero, de lo contrario estarás haciendo un select sobre otra tabla.
  #12 (permalink)  
Antiguo 17/11/2004, 08:03
Avatar de Titos  
Fecha de Ingreso: agosto-2002
Mensajes: 116
Antigüedad: 15 años, 3 meses
Puntos: 3
Por que no haces una prueba asi:

Código PHP:
$usuarios_consulta mysql_query("SELECT * FROM registros WHERE inscripciones_identificacion_numero='$identificacion'") or die(mysql_error()); 
                  
$total_encontrados mysql_num_rows ($usuarios_consulta); 
                  
mysql_free_result($usuarios_consulta); 
                  if (
$total_encontrados != 0) { 
                      echo 
"Esta mal";                         
                  } else { 
//Si no existe inserto el registro 
mysql_query("INSERT INTO registros VALUES('','$primer_nombre','$segundo_nombre','$pri  mer_apellido', '$segundo_apellido','$tipo_identificacion','$identificacion')") or die(mysql_error()); 
}
                  
# Cierro la Conexion 
                  
mysql_close($db_conexion); 
__________________
Saludos a [email protected] :adios:
  #13 (permalink)  
Antiguo 19/11/2004, 10:36
Avatar de capuleto  
Fecha de Ingreso: octubre-2003
Ubicación: Cartagena
Mensajes: 219
Antigüedad: 14 años, 2 meses
Puntos: 0
Solucionado

Bueno imaginense, que el nombre de este campo inscripciones_identificacion_numero, lo cambie por inscripciones_numero y problema solucionado, me parece que mysql, no agunata nombres de campo demasiado largos, pues este tiene 35 y el actual tiene 20, sera que no acepta mas de 30 pienso yo pues no revisado la documentacion..pero ya el problema se soluciono, en verdad todo lo que estaba haciendo lo estaba haciendo bien, y además gracias por sus buenas y excelentes recomendaciones..chao..Saludos desde Cartagena, Colombia
__________________
...Definitivamente Soy Nadie entre los Sabios....*-*Capuleto*-*
  #14 (permalink)  
Antiguo 20/11/2004, 22:42
Avatar de Titos  
Fecha de Ingreso: agosto-2002
Mensajes: 116
Antigüedad: 15 años, 3 meses
Puntos: 3
Me dejaste cabezon voy a buscar eso saludos
__________________
Saludos a [email protected] :adios:
  #15 (permalink)  
Antiguo 20/11/2004, 23:50
Avatar de capuleto  
Fecha de Ingreso: octubre-2003
Ubicación: Cartagena
Mensajes: 219
Antigüedad: 14 años, 2 meses
Puntos: 0
ok

Bueno creo que la razon es la quye te comento anteriormente, por el tamaño delos campos, si enuentras algo, espero y lo postees, Chao man...
__________________
...Definitivamente Soy Nadie entre los Sabios....*-*Capuleto*-*
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 20:52.