Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Denegar INSERT para info duplicada

Estas en el tema de Denegar INSERT para info duplicada en el foro de Bases de Datos General en Foros del Web. Estimados compañeros, les agradesco de antemano por tomarse la molestia de leer este tema. Les cuento mi problema, estoy desarrollando un sistema para ingresar fichas ...
  #1 (permalink)  
Antiguo 20/07/2004, 23:06
 
Fecha de Ingreso: septiembre-2003
Mensajes: 14
Antigüedad: 20 años, 8 meses
Puntos: 0
Denegar INSERT para info duplicada

Estimados compañeros, les agradesco de antemano por tomarse la molestia de leer este tema.

Les cuento mi problema, estoy desarrollando un sistema para ingresar fichas de pacientes, va todo bien, pero me asalto la duda... existe alguna forma de poder denegar el ISERT de un nuevo paciente, si es que este ya existe en la base de datos ? ....

Saludos !
  #2 (permalink)  
Antiguo 21/07/2004, 00:26
Avatar de peloteitor  
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 849
Antigüedad: 20 años, 5 meses
Puntos: 1
Eso lo solucionas poniendo los campos que no quieres que tengan informacion duplicada como "unique"
__________________
El sexo sin amor es una experiencia vacía. Pero como experiencia vacía es una de las mejores.

Woody Allen
  #3 (permalink)  
Antiguo 21/07/2004, 01:04
 
Fecha de Ingreso: septiembre-2003
Mensajes: 14
Antigüedad: 20 años, 8 meses
Puntos: 0
si eso hice pero me tir un error de mysql .. lo cual hasta el momento es lo conseguido.. pero lo que deseo es que con un script php (no sabia exactamente donde poner este mensaje) poder revisar y en la pagina dar un mensaje el usuario existe o la ficha ha sido creada
  #4 (permalink)  
Antiguo 21/07/2004, 02:19
Avatar de peloteitor  
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 849
Antigüedad: 20 años, 5 meses
Puntos: 1
pues haces primero un select para ver si existe el usuario:
si existe pones el mensaje de error
sino existe haces el insert y despues pones el mensaje de ficha creada
__________________
El sexo sin amor es una experiencia vacía. Pero como experiencia vacía es una de las mejores.

Woody Allen
  #5 (permalink)  
Antiguo 21/07/2004, 03:19
Avatar de Vice  
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 20 años, 9 meses
Puntos: 2
Cuando haces un insert y no se cumple un indice único o una primary key, siempre te devuelve el mismo código de error, por lo que con hacer el insert y ver que código de error te devuelve el mysql, ya sabes lo que tienes que decir, no hace falta que hagas una búsqueda y después el insert o el mensaje de error.
¿Se entiende la idea?, espero que si.
Un saludo.
  #6 (permalink)  
Antiguo 21/07/2004, 03:54
Avatar de peloteitor  
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 849
Antigüedad: 20 años, 5 meses
Puntos: 1
pos eso es lo que yo decia al principio.
de toas formas maxdewinter dices q t da un error. Podrías poner el código y el error y así nos sería más fácil ayudarte.
__________________
El sexo sin amor es una experiencia vacía. Pero como experiencia vacía es una de las mejores.

Woody Allen
  #7 (permalink)  
Antiguo 21/07/2004, 12:11
 
Fecha de Ingreso: septiembre-2003
Mensajes: 14
Antigüedad: 20 años, 8 meses
Puntos: 0
haber me explico mejor ya hice aqullo del unique y me devuelve el error 1062, hasta aqui todo muy bien, ahora lo queme gustaria es si ustedes conocen algun codigo php, para sin necesidad de obtener el error 1062, antes de realizar el insert, el script vea si es que existe ya el record a insertar, si existe que no lo inserte y y devuelva una pagina, si no existe que continue con el insert. He provado varios, pero al parecer no estan buenos los codigos o estanincompletos por lo que no resultan, si ustedes conocen alguno se los agradeceria.
  #8 (permalink)  
Antiguo 22/07/2004, 01:39
Avatar de Vice  
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 20 años, 9 meses
Puntos: 2
Lo que pides no es tan complicado como para tener que buscar soluciones por la red, mejor te lo construyes tú mismo.
En este caso tienes que hacer lo que te dice Peloteitor en su segundo mensaje: un select de búsqueda previo para comprobar la existencia del código y si encuentra el registros muestras un mensaje de error, sino lo encuetra lo insertas.

$select = "select * from tabla where codigo=$valor_buscado ";
$resultado = mysql_query($select);
if ( mysql_num_rows($resultado) )
{
lo ha encotrado, mensaje/página de error
}
else
{ no lo ha encontrado, haces el insert }

...


Pero sinceramente, me parece más óptimo usar el método de captura de error.
  #9 (permalink)  
Antiguo 22/07/2004, 04:33
 
Fecha de Ingreso: septiembre-2003
Mensajes: 14
Antigüedad: 20 años, 8 meses
Puntos: 0
Vice Agradecido! busco soluciones ne la red, porque estoy aprendiendo a programar en php, y derrepente necesitoun empujoncito ! para poder seguiR =)

por otro lado he intentado el codigo que me haz dado.. pero no me funcion aqui les doy el codigo que estoy usando si no es mucha la patudez, si ustede spudieran ayudarme y decirme que es lo qu estoy haciendo mal.. y a que luego de intentar muuuuchas veces (como debe ser) no he conseguido nada =) Agreadecido siempre

maxdewinter

Código:
<?
require "includes/cmed_db.inc.php";
$cmed_db = cmed_connect_db();
$sql = "select * from pacientes where rut = '$rut'"; 
$result = mysql_query ($sql, $cmed_db) or cmed_mysql_die(); 
if ( mysql_num_rows($result, $cmed_db)) 
{
print ('<html>
<head>
<title>xxx</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
El usuario Existe por lo que no sera ingresado 
</body>
</html>');
} 
else 
{
require "includes/cmed_db.inc.php";
$cmed_db = cmed_connect_db();
$sql = "INSERT INTO pacientes (id, rut, email) 
        VALUES ('$id', '$rut', '$email')"; 
$result = mysql_query ($sql, $cmed_db) or cmed_mysql_die();
print ('<html>
<head>
<title>xxxo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
EL usuario HA sido ingresado 
</body>
</html>');
}?>
PS: OJO!! los includes estan funcionando a la perfeccion ya que los ocupo para otra pagina y no tienen problemas (ya los he probado solo haciendo insert y todo ok)
  #10 (permalink)  
Antiguo 22/07/2004, 07:03
Avatar de peloteitor  
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 849
Antigüedad: 20 años, 5 meses
Puntos: 1
Código:
<?
require "includes/cmed_db.inc.php";
$cmed_db = cmed_connect_db();
$sql = "select * from pacientes where rut = '$rut'"; 
$result = mysql_query ($sql, $cmed_db) or cmed_mysql_die(); 
if ( mysql_num_rows($result, $cmed_db)>0) 
{
print ('<html>
<head>
<title>xxx</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
El usuario Existe por lo que no sera ingresado 
</body>
</html>');
} 
else 
{
require "includes/cmed_db.inc.php";
$cmed_db = cmed_connect_db();
$sql = "INSERT INTO pacientes (id, rut, email) 
        VALUES ('$id', '$rut', '$email')"; 
$result = mysql_query ($sql, $cmed_db) or cmed_mysql_die();
print ('<html>
<head>
<title>xxxo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
EL usuario HA sido ingresado 
</body>
</html>');
}?>
Creo que no falta nada más.
__________________
El sexo sin amor es una experiencia vacía. Pero como experiencia vacía es una de las mejores.

Woody Allen
  #11 (permalink)  
Antiguo 22/07/2004, 11:49
 
Fecha de Ingreso: septiembre-2003
Mensajes: 14
Antigüedad: 20 años, 8 meses
Puntos: 0
Agradecido siempre amigo.. pero por alguna razon ... =( no me funciona ...

he intentado pasar las variables por url, pero aun asi no los toma ... GRacias de todas maneras =)
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 10:59.