Foros del Web » Programando para Internet » PHP »

Formulario de Validacion

Estas en el tema de Formulario de Validacion en el foro de PHP en Foros del Web. Que tal quisiera saber como es que antes de dar de alta un nuevo usuario verifico que este no exista estoy usando el IdAlumno Como ...
  #1 (permalink)  
Antiguo 30/03/2010, 08:24
 
Fecha de Ingreso: septiembre-2009
Mensajes: 58
Antigüedad: 14 años, 6 meses
Puntos: 1
Exclamación Formulario de Validacion

Que tal quisiera saber como es que antes de dar de alta un nuevo usuario verifico que este no exista estoy usando el IdAlumno Como primary key y al tratar de insertar un usuario con el mismo nickname no lo hace pero me muestra como si si lo hubiese logrado lo que quiero hacer es que si no se puede insertar me arroje un mensaje de error pero este no me lo arroja siempre me devuelve que si se dio de alta correctamente les dejo mi codigo el ID ALUMNO esta como primary key...
Grax

Código PHP:
<?php
if(isset($_REQUEST['welcome']))
{
    
conect_database();    
}

function 
conect_database()
{
$nombre $_REQUEST['nombre'];
$paterno $_REQUEST['ap_paterno'];
$materno $_REQUEST['ap_materno'];
$boleta $_REQUEST['bol'];
$correo $_REQUEST['correo'];
$user $_REQUEST['user'];
$contra =  md5($_REQUEST['contra']);//PARA ENCRIPTAR LA CONTRASEÑA....
    
$conn mysql_connect("localhost","root",""); 
//selecciono la BDD 
mysql_select_db("sisae",$conn);  

//Sentencia SQL para dar de alta un nuevo usuario CUIDADO POR AHI OCURRIO ALGUN ERROR JEJEE...
//TODO QUEDO BN
$ssql "INSERT INTO `sisae`.`usuarioalumno` (`IdAlumno`, `Nombre`, `Paterno`, `Materno`, `Boleta`, `Clave`, `Correo`) VALUES ('$user', '$nombre', '$paterno', '$materno', '$boleta', '$contra', '$correo')";

//Ejecuto la sentencia 
$rs mysql_query($ssql,$conn); 

//vemos si el usuario y contraseña es váildo 
//si la ejecución de la sentencia SQL nos da algún resultado 
//es que si que existe esa conbinación usuario/contraseña 
if (mysql_affected_rows() !=0){ 
    
//usuario y contraseña válidos 
    //defino una sesion y guardo datos 
    
header("Location: index.php?listo=si");
}else { 
    
//si no existe le mando otra vez a la portada 
    
header("Location: index.php?listo=no"); 

mysql_free_result($rs); 
mysql_close($conn); 
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Registrate</title>
<link href="../css/style.css" rel="stylesheet" type="text/css" />
</head>

<body><?php
if(isset($_GET['listo']))
{
    if(
$_GET['listo'] == "si")
{
    echo 
" listo";
}
}
?>
<h1>Formulario de Registro</h1>
<center>
<form id="form1" name="form1" method="post" action="index.php">
  <table border="1"><tr><td>Nickname</td>
<td>    <input type="text" name="user" id="user" /></td>
</tr><tr>
    <td>Contraseña</td>
<td>    <input type="text" name="contra" id="contra" /></td></tr><tr>
<td>    Nombre</td>
<td>    <input type="text" name="nombre" id="nombre" /></td></tr><tr>
    
    <td>Apellido Paterno</td>
<td>    <input type="text" name="ap_paterno" id="ap_paterno" /></td></tr><tr>
   
    <td>Apellido Materno</td>
   <td> <input type="text" name="ap_materno" id="ap_materno" /></td></tr><tr>
  
   <td> Boleta</td>
   <td> <input type="text" name="bol" id="bol" /></td></tr><tr>
   
    <td>Correo</td>
   <td> <input type="text" name="correo" id="correo" />
    
    
  
  <input name="welcome" type="hidden" id="welcome" value="welcome" /></td></tr></table>
  
    <input type="submit" name="send" id="send" value="Enviar" />
  
</form>
</center>
</body>
</html>
Por cierto siempre he tenido un error con el mysql_row_affected siempre que le coloco el query en los ($$$) si sale bn me lo arroja como 0 pero si sale mal me lo arroja como 1 es una dudilla que me quedo garx
  #2 (permalink)  
Antiguo 30/03/2010, 08:46
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 4 meses
Puntos: 5
Respuesta: Formulario de Validacion

No he revisado mucho tu code, pero por arriba no veo donde discriminas la consulta, es decir donde haces la comparación para saber si el user ya está registrado o no.
Lo q tienes aqui solo hace la inserción a la BD, y compruebas si hay más de 0 filas afectadas (quiere decir que insertó OK), y esa no es la lógica de lo q pides
  #3 (permalink)  
Antiguo 30/03/2010, 08:58
 
Fecha de Ingreso: septiembre-2009
Mensajes: 58
Antigüedad: 14 años, 6 meses
Puntos: 1
Pregunta Respuesta: Formulario de Validacion

Lo siento me equivoque de codigo aqui esta el que hace la validacion lo he estado probando pero igual me deja insertar los usuarios y si le envio alguno ya existente de todas maneras intenta colocarlo ya que me devuelve al location index2.php?alta=si

Código PHP:
<?php
if(isset($_REQUEST['welcome']))
{
    
conect_database();    
}

function 
conect_database()
{
$nombre $_REQUEST['nombre'];
$paterno $_REQUEST['ap_paterno'];
$materno $_REQUEST['ap_materno'];
$boleta $_REQUEST['bol'];
$correo $_REQUEST['correo'];
$user $_REQUEST['user'];
$contra =  md5($_REQUEST['contra']);//PARA ENCRIPTAR LA CONTRASEÑA....
    
$conn mysql_connect("localhost","root",""); 
//selecciono la BDD 
mysql_select_db("sisae",$conn);  

//Sentencia SQL para dar de alta un nuevo usuario CUIDADO POR AHI OCURRIO ALGUN ERROR JEJEE...
//TODO QUEDO BN
$ssql "SELECT * FROM usuarioalumno WHERE IdAlumno = '$user'";
$rs mysql_query($ssql,$conn);

if(
mysql_num_rows($rs) == 0)
{
    
$ssql "INSERT INTO `sisae`.`usuarioalumno` (`IdAlumno`, `Nombre`, `Paterno`, `Materno`, `Boleta`, `Clave`, `Correo`) VALUES ('$user', '$nombre', '$paterno', '$materno', '$boleta', '$contra', '$correo')";

    
//Ejecuto la sentencia 
    
$rs mysql_query($ssql,$conn); 

    
//vemos si el usuario y contraseña es váildo 
    //si la ejecución de la sentencia SQL nos da algún resultado 
    //es que si que existe esa conbinación usuario/contraseña 
    
if (mysql_affected_rows() !=0){ 
        
//usuario y contraseña válidos 
        //defino una sesion y guardo datos 
        
header("Location: index2.php?listo=si");
    }else { 
        
//si no existe le mando otra vez a la portada 
        
header("Location: index2.php?listo=no"); 
    } 
}

mysql_free_result($rs); 
mysql_close($conn); 
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Registrate</title>
<link href="../css/style.css" rel="stylesheet" type="text/css" />
</head>

<body><?php
if(isset($_GET['listo']))
{
    if(
$_GET['listo'] == "si")
{
    echo 
" listo";
}
}
?>
<h1>Formulario de Registro</h1>
<center>
<form id="form1" name="form1" method="post" action="index.php">
  <table border="1"><tr><td>Nickname</td>
<td>    <input type="text" name="user" id="user" /></td>
</tr><tr>
    <td>Contraseña</td>
<td>    <input type="text" name="contra" id="contra" /></td></tr><tr>
<td>    Nombre</td>
<td>    <input type="text" name="nombre" id="nombre" /></td></tr><tr>
    
    <td>Apellido Paterno</td>
<td>    <input type="text" name="ap_paterno" id="ap_paterno" /></td></tr><tr>
   
    <td>Apellido Materno</td>
   <td> <input type="text" name="ap_materno" id="ap_materno" /></td></tr><tr>
  
   <td> Boleta</td>
   <td> <input type="text" name="bol" id="bol" /></td></tr><tr>
   
    <td>Correo</td>
   <td> <input type="text" name="correo" id="correo" />
    
    
  
  <input name="welcome" type="hidden" id="welcome" value="welcome" /></td></tr></table>
  
    <input type="submit" name="send" id="send" value="Enviar" />
  
</form>
</center>
</body>
</html>
  #4 (permalink)  
Antiguo 30/03/2010, 09:04
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 4 meses
Puntos: 5
Respuesta: Formulario de Validacion

A ver, cuestión de no confundirme
¿Q guardas en la variable $user?
¿Q es el campo IdAlumno?
Si nos guiamos por la lógica del nombre de las variables, el $user guardará el nombre de usuario y el campo IdAlumno pues sería eso, el ID del alumno ¿no?
Pues de hecho estarías comparando ID con nombre, por lo que siempre la comparación será false y siempre insertará en la BD
  #5 (permalink)  
Antiguo 30/03/2010, 09:13
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 7 meses
Puntos: 70
Respuesta: Formulario de Validacion

Es que lógicamente, si tu campo IdAlumno es una pk, no tienes por qué hacer una consulta previa.. la base de datos no te dejará insertar y te retornará un error.

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #6 (permalink)  
Antiguo 30/03/2010, 09:15
 
Fecha de Ingreso: septiembre-2009
Mensajes: 58
Antigüedad: 14 años, 6 meses
Puntos: 1
Sonrisa Respuesta: Formulario de Validacion

Cita:
Iniciado por MaxMental Ver Mensaje
Lo siento me equivoque de codigo aqui esta el que hace la validacion lo he estado probando pero igual me deja insertar los usuarios y si le envio alguno ya existente de todas maneras intenta colocarlo ya que me devuelve al location index2.php?alta=si

Código PHP:
<?php
if(isset($_REQUEST['welcome']))
{
    
conect_database();    
}

function 
conect_database()
{
$nombre $_REQUEST['nombre'];
$paterno $_REQUEST['ap_paterno'];
$materno $_REQUEST['ap_materno'];
$boleta $_REQUEST['bol'];
$correo $_REQUEST['correo'];
$user $_REQUEST['user'];
$contra =  md5($_REQUEST['contra']);//PARA ENCRIPTAR LA CONTRASEÑA....
    
$conn mysql_connect("localhost","root",""); 
//selecciono la BDD 
mysql_select_db("sisae",$conn);  

//Sentencia SQL para dar de alta un nuevo usuario CUIDADO POR AHI OCURRIO ALGUN ERROR JEJEE...
//TODO QUEDO BN
$ssql "SELECT * FROM usuarioalumno WHERE IdAlumno = '$user'";
$rs mysql_query($ssql,$conn);

if(
mysql_num_rows($rs) == 0)
{
    
$ssql "INSERT INTO `sisae`.`usuarioalumno` (`IdAlumno`, `Nombre`, `Paterno`, `Materno`, `Boleta`, `Clave`, `Correo`) VALUES ('$user', '$nombre', '$paterno', '$materno', '$boleta', '$contra', '$correo')";

    
//Ejecuto la sentencia 
    
$rs mysql_query($ssql,$conn); 

    
//vemos si el usuario y contraseña es váildo 
    //si la ejecución de la sentencia SQL nos da algún resultado 
    //es que si que existe esa conbinación usuario/contraseña 
    
if (mysql_affected_rows() !=0){ 
        
//usuario y contraseña válidos 
        //defino una sesion y guardo datos 
        
header("Location: index2.php?listo=si");
    }else { 
        
//si no existe le mando otra vez a la portada 
        
header("Location: index2.php?listo=no"); 
    } 
}

mysql_free_result($rs); 
mysql_close($conn); 
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Registrate</title>
<link href="../css/style.css" rel="stylesheet" type="text/css" />
</head>

<body><?php
if(isset($_GET['listo']))
{
    if(
$_GET['listo'] == "si")
{
    echo 
" listo";
}
}
?>
<h1>Formulario de Registro</h1>
<center>
<form id="form1" name="form1" method="post" action="index.php">
  <table border="1"><tr><td>Nickname</td>
<td>    <input type="text" name="user" id="user" /></td>
</tr><tr>
    <td>Contraseña</td>
<td>    <input type="text" name="contra" id="contra" /></td></tr><tr>
<td>    Nombre</td>
<td>    <input type="text" name="nombre" id="nombre" /></td></tr><tr>
    
    <td>Apellido Paterno</td>
<td>    <input type="text" name="ap_paterno" id="ap_paterno" /></td></tr><tr>
   
    <td>Apellido Materno</td>
   <td> <input type="text" name="ap_materno" id="ap_materno" /></td></tr><tr>
  
   <td> Boleta</td>
   <td> <input type="text" name="bol" id="bol" /></td></tr><tr>
   
    <td>Correo</td>
   <td> <input type="text" name="correo" id="correo" />
    
    
  
  <input name="welcome" type="hidden" id="welcome" value="welcome" /></td></tr></table>
  
    <input type="submit" name="send" id="send" value="Enviar" />
  
</form>
</center>
</body>
</html>
De hecho lo unico que he hecho es comprobar el nickname el nickname es el USER y este se verifica en contra de IdAlumno pero nunca me arroja falso y la variable nombre solo es un dato independiete
  #7 (permalink)  
Antiguo 30/03/2010, 09:18
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 7 meses
Puntos: 70
Respuesta: Formulario de Validacion

Si estoy entendiendo...

Primero dino que tipo de dato contiene IdAlumno, un int? y qué tipo de dato contiene user?

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #8 (permalink)  
Antiguo 30/03/2010, 09:29
 
Fecha de Ingreso: septiembre-2009
Mensajes: 58
Antigüedad: 14 años, 6 meses
Puntos: 1
Respuesta: Formulario de Validacion

Cita:
Iniciado por Carxl Ver Mensaje
Si estoy entendiendo...

Primero dino que tipo de dato contiene IdAlumno, un int? y qué tipo de dato contiene user?

Saludos
Es de tipo varchar de 30 caracteres y esprimary key
  #9 (permalink)  
Antiguo 30/03/2010, 09:30
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 4 meses
Puntos: 5
Respuesta: Formulario de Validacion

Lo unico q se me ocurre es q la variable cambie su valor.
Prueba a hacer un hecho a la variable antes de incluirla en la consulta, a ver si imprime lo que deseas. Primero te sugiero q las recibas con $_POST, no con $_REQUEST como le haces
  #10 (permalink)  
Antiguo 30/03/2010, 09:31
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 7 meses
Puntos: 70
Respuesta: Formulario de Validacion

Entonces ten en cuenta lo que te dije en mi primer post, si es primary key no tienes por qué hacer un ciclo preguntando si existe o no, la misma base de datos te ahorra ese proceso por ser PK.

Prueba sin hacer el ciclo y directamente usando la Db.

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #11 (permalink)  
Antiguo 30/03/2010, 09:32
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 4 meses
Puntos: 5
Respuesta: Formulario de Validacion

Cita:
Iniciado por Carxl Ver Mensaje
Si estoy entendiendo...

Primero dino que tipo de dato contiene IdAlumno, un int? y qué tipo de dato contiene user?

Saludos
Misma confusión, por eso le pregunté arriba.
Para Max, pasa que generalmente cuando llamas a un campo IDcosa, es porq estás almacenando eso, un id de algo, q es un número preferentemente único.
Pero bueno, haz lo q te sugerí y me avisas

EDITO: No me había percatado de que el campo era PK jejejejejeje. Misma sugerencia de Carxl
  #12 (permalink)  
Antiguo 30/03/2010, 09:43
 
Fecha de Ingreso: septiembre-2009
Mensajes: 58
Antigüedad: 14 años, 6 meses
Puntos: 1
Respuesta: Formulario de Validacion

lo he logrado hacer de esta forma por que igual aunque le agregue el die no me funciono solo lo tuve que hacer asi
pero lo que no recuerdo es si la coneccion a la base deve estar hasta arriba o eso es en el caso de las sesiones?? unica duda jeje
  #13 (permalink)  
Antiguo 30/03/2010, 09:44
 
Fecha de Ingreso: septiembre-2009
Mensajes: 58
Antigüedad: 14 años, 6 meses
Puntos: 1
Respuesta: Formulario de Validacion

Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Registrate</title>
<link href="../css/style.css" rel="stylesheet" type="text/css" />
</head>

<body><?php
if(isset($_REQUEST['welcome']))
{
    
conect_database();    
}

function 
conect_database()
{
$nombre $_REQUEST['nombre'];
$paterno $_REQUEST['ap_paterno'];
$materno $_REQUEST['ap_materno'];
$boleta $_REQUEST['bol'];
$correo $_REQUEST['correo'];
$user $_REQUEST['user'];
$contra =  md5($_REQUEST['contra']);//PARA ENCRIPTAR LA CONTRASEÑA....
    
$conn mysql_connect("localhost","root",""); 
//selecciono la BDD 
mysql_select_db("sisae",$conn);  

//Sentencia SQL para dar de alta un nuevo usuario CUIDADO POR AHI OCURRIO ALGUN ERROR JEJEE...
//TODO QUEDO BN
$ssql "SELECT * FROM `sisae`.`usuarioalumno` WHERE IdAlumno = '$user'";
$rs mysql_query($ssql,$conn);

if(
mysql_num_rows($rs) == 0)//no existe
{
    
$ssql "INSERT INTO `sisae`.`usuarioalumno` (`IdAlumno`, `Nombre`, `Paterno`, `Materno`, `Boleta`, `Clave`, `Correo`) VALUES ('$user', '$nombre', '$paterno', '$materno', '$boleta', '$contra', '$correo')";

    
//Ejecuto la sentencia 
    
$rs mysql_query($ssql,$conn) or die("ERROR NO SE PUEDE INSERTAR EL ALUMNO"); 

    
}else
{
    echo
"el usuario ya existe";
}

mysql_close($conn); 
}
?>
<h1>Formulario de Registrsasasao</h1>
<center>
<form id="form1" name="form1" method="post" action="index2.php">
  <table border="1"><tr><td>Nickname</td>
<td>    <input type="text" name="user" id="user" /></td>
</tr><tr>
    <td>Contraseña</td>
<td>    <input type="text" name="contra" id="contra" /></td></tr><tr>
<td>    Nombre</td>
<td>    <input type="text" name="nombre" id="nombre" /></td></tr><tr>
    
    <td>Apellido Paterno</td>
<td>    <input type="text" name="ap_paterno" id="ap_paterno" /></td></tr><tr>
   
    <td>Apellido Materno</td>
   <td> <input type="text" name="ap_materno" id="ap_materno" /></td></tr><tr>
  
   <td> Boleta</td>
   <td> <input type="text" name="bol" id="bol" /></td></tr><tr>
   
    <td>Correo</td>
   <td> <input type="text" name="correo" id="correo" />
    
    
  
  <input name="welcome" type="hidden" id="welcome" value="welcome" /></td></tr></table>
  
    <input type="submit" name="send" id="send" value="Enviar" />
  
</form>
</center>
</body>
</html>

Etiquetas: checar, code, info, insertar, mysql, sentencias, usuarios, formulario, validar
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 05:42.