Foros del Web » Programando para Internet » PHP »

validar que no exista documento

Estas en el tema de validar que no exista documento en el foro de PHP en Foros del Web. Buenas, recurro a ustedes estoy haciendo un ejercicio que se basa en cargar personas en una tabla, y validar que no este cargada dicha persona ...
  #1 (permalink)  
Antiguo 07/07/2012, 15:01
 
Fecha de Ingreso: septiembre-2010
Mensajes: 82
Antigüedad: 13 años, 7 meses
Puntos: 0
validar que no exista documento

Buenas, recurro a ustedes estoy haciendo un ejercicio que se basa en cargar personas en una tabla, y validar que no este cargada dicha persona atraves del documento si el documento existe que vuelva a la pagina de carga les dejo el codigo que realize yo, me detecta que esta cargado pero igualmente me lo carga como puedo hacer?

<?php
$nombre= $_POST["txtnombre"];
$apellido= $_POST["txtapellido"];

$doc= $_POST["txtdocumento"];
$cat= $_POST["sltcategoria"];

$consultaD=mysql_query("SELECT * FROM personas");
while($rowD=mysql_fetch_array($consultaD))
{

if($rowD["per_documento"] == $doc)
{
echo "Ya existe una persona con ese número de DNI: <b>$doc</b><br>";
echo "Haga <a href=usuarios.php>click</a> para volver a intentarlo";
break;
}


}
mysql_query("INSERT INTO personas (per_nombre, per_apellido, per_documento, cat_codigo) VALUES ('$nombre', '$apellido', '$doc', '$cat')");

echo "<br>";
?>
  #2 (permalink)  
Antiguo 07/07/2012, 15:20
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: validar que no exista documento

Si haces la consulta correcta, a nivel de SQL, el código PHP se te simplificará:
Código SQL:
Ver original
  1. SELECT COUNT(per_documento) docs
  2. FROM personas
  3. WHERE per_documento = valorbuscado
Eso devolvería uno (1) o cero (0) dependiendo si encuentra o no el documento.
Ergo, el código se simplifica:

Código PHP:
Ver original
  1. <?php
  2.     $nombre= $_POST["txtnombre"];
  3.     $apellido= $_POST["txtapellido"];
  4.  
  5.     $doc= $_POST["txtdocumento"];
  6.     $cat= $_POST["sltcategoria"];
  7.     $qry = "SELECT COUNT(per_documento) docs FROM personas WHERE per_documento = $doc";
  8.  
  9.     $consultaD=mysql_query($qry);
  10.     if($consultaD)
  11.         {
  12.         $rowD=mysql_fetch_array($consultaD);
  13.         if($rowD["docs"] > 0)
  14.             {
  15.             echo "Ya existe una persona con ese número de DNI: <b>$doc</b><br>";
  16.             echo "Haga <a href=usuarios.php>click</a> para volver a intentarlo";
  17.             break;
  18.             }
  19.         }
  20.     else
  21.         {
  22.         $qry = "INSERT INTO personas (per_nombre, per_apellido, per_documento, cat_codigo) ");
  23.         $qry .= "VALUES ('$nombre', '$apellido', '$doc', '$cat')"
  24.         mysql_query($qry);
  25.         }
  26.     echo "<br>";
  27. ?>

Tip 1: Usa variables para cargar las sentencias. Resulta mucho más simple modificar una variable, que buscar el bloque completo donde está el error. Además, mantiene más limpio el código PHP. Lo hace más legible.
Tip 2: Trata de armas las consultas de SQL en varios renglones, de modo que resulten más simples de leer.
Tip 3: Escribe los códigos de forma estructurada. Facilita la lectura.
Tip 4: Usa las etiquetas (Highlights) que provee el bloque de escritura para hacer que en el Foro el código se vea mejor.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 07/07/2012 a las 15:27
  #3 (permalink)  
Antiguo 07/07/2012, 15:32
 
Fecha de Ingreso: septiembre-2010
Mensajes: 82
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: validar que no exista documento

pero no me carga nada directamente ahora aunke no este usando ese codigo

SELECT COUNT(per_documento) docs
FROM personas
WHERE per_documento = valorbuscado


el docs de la primer linea de donde lo sacaste?
  #4 (permalink)  
Antiguo 07/07/2012, 15:36
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: validar que no exista documento

Es un alias generado en la consulta SQL para la columna resultado.
Si te vas a meter a jugar con SQL te conviene leer un manual basico de base de datos y SQL. No es un lenguaje de programación sino de consultas, y tiene sus propias reglas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 07/07/2012, 15:41
 
Fecha de Ingreso: septiembre-2010
Mensajes: 82
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: validar que no exista documento

si yase, pero no me anda lo que me pasaste no me carga ninguna personas en la base datos, pero si detecta si esta no carga nada eso esta bien
  #6 (permalink)  
Antiguo 07/07/2012, 15:47
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: validar que no exista documento

Entonces el razonamiento es:
1) Si verifica la existencia correctamente, el SELECT anda bien.
2) Si no inserta, es que alguna parte relativa al UPDATE no está bien.
3) Puede ser que el ELSE esté en una parte incorrecta. ¿Lo verificaste o simplemente hiciste copy+paste?
Respuesta: No revisaste, y HAY un error.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 07/07/2012, 15:48
 
Fecha de Ingreso: septiembre-2010
Mensajes: 82
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: validar que no exista documento

el else probre de ponerlo asi


mysql_query("INSERT INTO personas (per_nombre, per_apellido, per_documento, cat_codigo) VALUES ('$nombre', '$apellido', '$doc', '$cat')");


pero tp funciona
  #8 (permalink)  
Antiguo 07/07/2012, 16:13
 
Fecha de Ingreso: septiembre-2010
Mensajes: 82
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: validar que no exista documento

ya esta ya lo resolvi el error estaba en el cierre del primer if habia que cerrarlo al final de todo yl el else puse el que deje en el comentario de arriba. aca dejo el codigo terminado

$qry = "SELECT COUNT(per_documento) docs FROM personas WHERE per_documento = $doc";

$consultaD=mysql_query($qry);
if($consultaD)
{
$rowD=mysql_fetch_array($consultaD);
if($rowD["docs"] > 0)
{
echo "Ya existe una persona con ese número de DNI: <b>$doc</b><br>";
echo "Haga <a href=usuarios.php>click</a> para volver a intentarlo";
}

else
{
mysql_query("INSERT INTO personas (per_nombre, per_apellido, per_documento, cat_codigo) VALUES ('$nombre', '$apellido', '$doc', '$cat')");
}
}
echo "<br>";

Etiquetas: mysql, sql, tabla, usuarios
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 03:54.