Foros del Web » Programando para Internet » PHP »

Comprobar datos de un form con BD

Estas en el tema de Comprobar datos de un form con BD en el foro de PHP en Foros del Web. Hola Sres. Este es la cuestion ahora: Tengo un formulario de inscripcion, una tabla suscritos donde alamacenare los datos del formulario y mi tabla clientes ...
  #1 (permalink)  
Antiguo 17/11/2004, 12:33
 
Fecha de Ingreso: noviembre-2004
Mensajes: 25
Antigüedad: 19 años, 5 meses
Puntos: 0
Sonrisa Comprobar datos de un form con BD

Hola Sres.
Este es la cuestion ahora:
Tengo un formulario de inscripcion, una tabla suscritos donde alamacenare los datos del formulario y mi tabla clientes con todos los usuarios... ok.
La cuestion es que al enviar compare por ejemplo 3 campos (codmatricula, apepaterno, docidentidad) del formulario, con los que ya estan en la tabla clientes, si los tres campos son iguales tons los datos se almacenan en suscritos y le envia un mail de confirmacion... inclusive en el mail se le puede enviar una contraseña "X" para que acceda a un servicio "X".
Porfas sres. a ver si me dan una manito con eso que me ta poniendo de colores... se los agradezco...
Saludos
Jorge
  #2 (permalink)  
Antiguo 17/11/2004, 14:25
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Vamos por partes ..

* ¿Sabes hacer consultas SQL condicionales a tu BD .. de la cual no dices la que usas concretamente: Mysql, otra?

Si no es así .. te recomendaría leer manuales de SQL:
www.mysql-hispano.com

Debes usar consultas SQL tipo:
SELECT * FROM tabla WHERE campo1='$campo1' AND campo2='$campo2' ... etc ..

Para luego usar funciones como (para Mysql ..):

mysql_num_rows() para ver que numero de registros arrojó tu consulta a tu BD .. Ahí esperas o 0 o 1 . .nada más.

www.php.net/mysql

El e-mail de "confirmación" ... no dices si ya sabes usar la función mail() o no .. en tal caso:
www.php.net/mail

Al crear tu registro, usa un campo extra tipo "flag" para indicar si ese registro está validado o no .. en principio debe crearse en tu "INSERT" a tu BD como "no validado", para que al validarse .. lo puedas pasar de estado ..

Bajo la misma filosofía .. en tu "login" al sistema una de las comparaciones extra será ese campo para la consulta SQL condicional que tendras que hacer bajo ese "usuario y contraseña" .. ahora añadiras...y si está "validado".

Para enviar esa "confirmación" tendrás que enviarlo en HTML para poder meter un link ahí "clickeable". En ese link vas a "apuntar" a un script tuyo que va a realizar la validación tipo:

http://www.tal.tal/validar.php?codigo=86asdf76df

Ese "código" lo puedes generar con una función de una FAQ que veras en este foro PHP.

Tu .. "validar.php" lo que hará es pasar ese "flag" del estado "no confirmado" al "confirmado" bajo un "UPDATE" a ese campo bajo la condición de ese "Código" que has guardado en ese registro al crearlo.

Como veras no es complicado .. pero si laborioso . así que tendrás que ir centrandote en lo que sabes y lo que no sepas . .con algo más "claro" preguntas en el foro .. La ideal general ya la tienes ...

Un saludo,
  #3 (permalink)  
Antiguo 17/11/2004, 15:22
 
Fecha de Ingreso: noviembre-2004
Mensajes: 25
Antigüedad: 19 años, 5 meses
Puntos: 0
a ver

Gracias por el dato...
Mira si se del manejo de las funciones... weno al mennos las he hecho pero separdo... es decir, enviar un mail de confirmacion... insertar datos en la BD (mysql)... etc.
Pero kiero juntarlo y no me sale... me sale las paginas en blanco... mi error kiza este al juntarlo... la verdad, no se como hacerlo. O de hecho me falta agregar algo... weno no se...
Tengo y se de los codigos "basicos" pa insertar o mandar mail... El problem esta q debo comparar los campos (3) con los ya ingresados en otra tabla... i si ta OK recien inserta y envia mail...
te agradezco de nuevo el tiempo q te tomas... y si hay algo pa guiarme, chevere...
Saludos
Jorge
  #4 (permalink)  
Antiguo 17/11/2004, 15:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues entonces .. Pon el código que ya tienes hecho y explica los errores que tengas .. Es lo más rápido para obtener respuestas acertadas .. sino como veras algunos como yo nos vamos por las ramas explicando cosas que tal vez tu ya sabes hacer.

Si ya ves que el proceso tiene X partes .. vamos por partes (valga la rebundancia) y solucionando uno ... por uno.

Empieza por el código de validación que comentas . .pon el código que estés trabajando actualmente y explica el problema puntual de esa parte sólo ..y de ahí el siguiente punto y así con el resto ..

Un saludo,
  #5 (permalink)  
Antiguo 17/11/2004, 15:57
 
Fecha de Ingreso: noviembre-2004
Mensajes: 25
Antigüedad: 19 años, 5 meses
Puntos: 0
Te envio mi codigo:

Código PHP:
<html>
<body style="font-family:Arial; font-size:12px">
<?
require("config.inc.php");

// MENSAJE PARA MAIL
$mensaje "<html><head><title>Suscripción satisfactoria</title></head><body>";
$mensaje .= "<b>Sr(ta). "$HTTP_POST_VARS['apepat'] ."</b><br>Su suscripción se realizó con éxito.<br>";
$mensaje .= "Con estos datos podrá ingresar a la Bolsa de Trabajo de la Facultad.<br>";
$mensaje .= "<b>Usuario: </b>"$HTTP_POST_VARS['emailp'] ."<br><b>Password: </b>"$HTTP_POST_VARS['dnicip'] ."</body></html>"// FIN

$db_conexion=mysql_connect($sql_host,$sql_usuario,$sql_pass) or die(mysql_error());
mysql_select_db($sql_db,$db_conexion);

// DATOS PERSONALES DEL FORMULARIO
$apepat=$_REQUEST['apepat']; $apemat=$_REQUEST['apemat']; $nombres=$_REQUEST['nombres'];
$dnicip=$_REQUEST['dnicip']; $fecnac=$_REQUEST['fecnac']; $sexo=$_REQUEST['sexo'];
$domicilio=$_REQUEST['domicilio']; $fonocasa=$_REQUEST['fonocasa']; $celular=$_REQUEST['celular'];
$distrito=$_REQUEST['distrito']; $provincia=$_REQUEST['provincia']; $dpto=$_REQUEST['dpto']; $emailp=$_REQUEST['emailp'];
// DATOS ACADEMICOS DEL FORMULARIO
$semegreso=$_REQUEST['semegreso']; $codcli=$_REQUEST['codcli'];
// DATOS LABORALES DEL FORMULARIO 
$empresa=$_REQUEST['empresa']; $cargo=$_REQUEST['cargo']; $fonoemp=$_REQUEST['fonoemp'];
$anexo=$_REQUEST['anexo']; $fax=$_REQUEST['fax']; $emaile=$_REQUEST['emaile'];
$desempena=$_REQUEST['desempena']; $interesa=$_REQUEST['interesa'];
// FIN 
$consulta=mysql_query("SELECT dnicip FROM cliente1 WHERE dnicip = '$dnicip'");
$num=mysql_num_rows($consulta); // sin son iguales $num = 1

if($num!=0)
// Si DNI ingresado es diferente al almacenado, osea no esta en la BD = la consulta es 0
{mysql_query("INSERT INTO suscritos VALUES('$apepat','$apemat','$nombres','$dnicip','$fecnac','$sexo','$domicilio','$fonocasa','$celular','$distrito','$provincia','$dpto','$emailp','$semegreso','$codcli','$empresa','$cargo','$fonoemp','$anexo','$fax','$emaile','$desempena','$interesa')");

mail($emailp,"Suscripcion Derecho USMP",$mensaje,"FROM: Derecho USMP <[email protected]>");
echo 
"<p><b>Inscripción Satisfactoria</b></p>";
echo 
"<p>Sr(a). <b style='color:blue'>",$apepat,"</b>.<br>Le enviaremos la confirmación de su inscripción y sus datos de acceso a la Bolsa de Trabajo de la Facultad, a la dirección indicada: ";
echo 
"<b style='color:blue'>",$emailp,"</b></p>";

else
{echo 
"Sr. ",$apepat,", el numero de su documento de identidad no coincide. Porfavor verifique";
}
mysql_close();
?>
<p align="left">
<a href="form2.htm">Regresar al formulario</a>&nbsp;&nbsp;<a href="read_files.php">Ver Registros</a></p>
</body>
</html>
a ver q anda mal porai cluster
gracias
jorge

Última edición por Cluster; 18/11/2004 a las 05:28
  #6 (permalink)  
Antiguo 17/11/2004, 16:01
 
Fecha de Ingreso: noviembre-2004
Mensajes: 6
Antigüedad: 19 años, 5 meses
Puntos: 0
como puedo crear paginas web
  #7 (permalink)  
Antiguo 17/11/2004, 16:02
 
Fecha de Ingreso: noviembre-2004
Mensajes: 6
Antigüedad: 19 años, 5 meses
Puntos: 0
cluster como puedo crear paginas web
  #8 (permalink)  
Antiguo 17/11/2004, 16:05
 
Fecha de Ingreso: noviembre-2004
Mensajes: 6
Antigüedad: 19 años, 5 meses
Puntos: 0
tarea de tic´s

Cita:
Iniciado por angel homero
cluster como puedo crear paginas web
alguien que me ayude porfavor
  #9 (permalink)  
Antiguo 17/11/2004, 16:10
 
Fecha de Ingreso: noviembre-2004
Mensajes: 25
Antigüedad: 19 años, 5 meses
Puntos: 0
Prueba con:
http://www.desarrolloweb.com/directo...ramacion/html/
  #10 (permalink)  
Antiguo 18/11/2004, 05:27
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
angel_homero ..

Lee las FAQ's de este foro PHP ahí tienes información .. y sobre todo no mezcles temas .. inicia un nuevo tema para realizar tus preguntas.

Un saludo,
  #11 (permalink)  
Antiguo 18/11/2004, 05:41
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
jorgechileno

Deberías describir que problemas tienes exactamente .. por ver "problemas" algunos se ven .. como por ejemplo:

* Mezclas acceso a variables externas via arrays superglobales: $_REQUEST .. y $HTTP_xxx_VARS .. cuando deberías usar UN sólo método .. preferentemente los arrays superglobales y más concretamente discrimiar si son POST, GET .. etc .. evitar usar $_REQUEST que asume todo lo que venga por POST, GET o sean COOKIES.

* Cuando usas mail() .. a continuación muestras un mensaje de "exito" de envio del e-mail .. Eso no es completamente cierto pues .. puede fallar la ejecución de mail (por qué no pudo conectar al MTA que use PHP en ese servidor para entregar el e-mail ...) Así que deberías usar un if() con mail() pues .. devuelve un true o false según se ejecute o no para mostrar tu mensaje de exito o error si corresponde.

* La función mail() no estás usandola correctamente para enviar el e-mail en formato HTML .. lo que estás haciendo enviará el código HTML como texto plano (no "ejecutable") .. En las FAQ's de este foro tienes ejemplos de las cabeceras HTTP que necesitas para enviar tu e-mail en formato HTML.

Por lo demás .. en tu pregunta incial comentablas que querías validar una série de coincidencias de N campos .. ahí en tu ejemplo usas sólo un campo .. Aclara ese punto y define lo que realmente quieres hacer.

Un saludo,

PD: Edité tu mensaje para colocarlo entre los bbCode de "[php ] y [/ php]" .. se vé mejor el código así.
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 23:45.