Foros del Web » Programando para Internet » PHP »

Problema con un formlario

Estas en el tema de Problema con un formlario en el foro de PHP en Foros del Web. Hola os cuento tengo un formmulario el cual hace la comprobacion de de existencia de nombre de usuario, email.... El tema es que cuando valido ...
  #1 (permalink)  
Antiguo 25/10/2008, 06:24
 
Fecha de Ingreso: junio-2008
Mensajes: 292
Antigüedad: 15 años, 10 meses
Puntos: 4
Problema con un formlario

Hola os cuento tengo un formmulario el cual hace la comprobacion de de existencia de nombre de usuario, email....

El tema es que cuando valido el formulario y hay algun campo que no esta bien, se me borran todos los campos de este formulario, hay alguna manera para que solo borre los que estan mal....muchas gracias


pongo aki el codigo

Código PHP:
if($_POST['enviar']) // Si se apreta el boton 

$submit=TRUE;
$pass=$_POST['contrasena']; // Tomo la pass 
$pass2=$_POST['repcontrasema']; // Tomo la verificacion de pass 
$email=$_POST['mail']; // Tomo el Email 
$email2=$_POST['repemail']; // Tomo la verificacion del em00ail 
$apodo=$_POST['apodo']; 
$nombre=$_POST['nombre']; 
$apellidos=$_POST['apellidos']; 
$direccion=$_POST['direccion']; 
$cp=$_POST['cp']; 
$telefono=$_POST['telefono']; 
$poblacion=$_POST['poblacion']; 
$provincia=$_POST['provincia']; 
$pais=$_POST['pais']; 
$mas18=$_POST['mas18']; 
$condiciones=$_POST['condiciones']; 


// Verifico que todos los datos esten llenos 
if(empty($pass) || empty($pass2) || empty($email) || empty($email2) || empty($apodo) || empty($nombre)  || empty($apellidos)  || empty($direccion)  || empty($cp)  || empty($telefono)  || empty($poblacion) || empty($provincia)  || empty($pais) || empty($mas18)  || empty($condiciones)) 

    
$error .= "Error: Debes rellenar todos los campos.<br>"// Si falta un dato manda este mensaje 
    
unset($submit); // Elimino el envio porque fallo 


// Comprobamos si el nombre de usuario o la cuenta de correo ya existían
$checkuser mysql_query("SELECT apodo FROM usuarios WHERE apodo='$username'");
$username_exist mysql_num_rows($checkuser);

$checkemail mysql_query("SELECT mail FROM usuarios WHERE mail='$email'");
$email_exist mysql_num_rows($checkemail);

if (
$email_exist>0|$username_exist>0) {

$error .= "Error: Este nombre de usuario o cuenta de correo ya están registradas.<br>"
    unset(
$submit); 



// Verifico si la pass's son iguales 
if($pass != $pass2 

    
$error .= "Error: Las contraseñas no coinciden.<br>"
    unset(
$submit); 



// Verifico si los email's son iguales 
if( $email != $email2

    
$error .= "Error: Los emails no coinciden.<br>"
    unset(
$submit); 


// verifico mayor de edad 
if( $mas18 != "si"

    
$error .= "Error: Si eres mayor de edad, marca la casilla, por favor.<br>"
    unset(
$submit); 


// verifico terminos y condiciones 
if( $condiciones != "si"

    
$error .= "Error: No puedes continuar sin leer los términos y condiciones de Sit-n-Poker.<br>"
    unset(
$submit); 

  #2 (permalink)  
Antiguo 25/10/2008, 07:59
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 16 años
Puntos: 43
Respuesta: Problema con un formlario

Podrías hacer la validación de campos con javascript antes del envio, y imprimir el error en un alert o en un div, de esta forma solo borras los que estan mal, claro que si la validación la debes hacer con php(por tratarse de una validación con DB como dices que es con user y pass), podrías usar ajax.

Saludos
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #3 (permalink)  
Antiguo 25/10/2008, 08:29
 
Fecha de Ingreso: junio-2008
Mensajes: 119
Antigüedad: 15 años, 10 meses
Puntos: 1
De acuerdo Respuesta: Problema con un formlario

Estoy de acuerdo con el formulario de arriba, utiliza javascript para que le salte un cartel es bastante facil, pero tambien recuerda validarlos en php, sino dejaria inconsistente la base de datos...
  #4 (permalink)  
Antiguo 25/10/2008, 09:32
 
Fecha de Ingreso: junio-2008
Mensajes: 292
Antigüedad: 15 años, 10 meses
Puntos: 4
Respuesta: Problema con un formlario

el tema es que estoy tieso en java pero tiesooooo
  #5 (permalink)  
Antiguo 25/10/2008, 09:44
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 16 años
Puntos: 43
Respuesta: Problema con un formlario

Aquí te dejo un ejemplo, podrías usar esa función para validar que no esten vacçios ni que contengan solo espacios en blanco. La llamas con la segunda función, y esta la llamas en el onSubmit del formularios más o menos de esta forma

Cita:
onSubmit="return validaForm();"
Código PHP:
function isEmpty(inputVal
{
  
inputStr inputVal.length
  
var contsps 0    // contador de espacios en blanco
  
for (var 0inputStr i++) 
  {
    var 
oneChar inputVal.charAt(i)
    if (
oneChar == " "
    {
      
contsps contsps 
    
}
  }
  if (
contsps == inputStr
  {
    return 
true
  
}
  else 
  {
    return 
false 
  
}
}

function 
validaForm()
{
    var 
nombre document.getElementById('nombre');

      if (
isEmpty(nombre.value))
      {
        
alert("El nombre no debe estar vacío");
         
nombre.value='';
        return 
false;
      }


Saludos
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #6 (permalink)  
Antiguo 25/10/2008, 11:11
 
Fecha de Ingreso: junio-2008
Mensajes: 292
Antigüedad: 15 años, 10 meses
Puntos: 4
Respuesta: Problema con un formlario

gracias lo probare
  #7 (permalink)  
Antiguo 25/10/2008, 11:33
 
Fecha de Ingreso: junio-2008
Mensajes: 292
Antigüedad: 15 años, 10 meses
Puntos: 4
Respuesta: Problema con un formlario

me da este fallo
Parse error: syntax error, unexpected T_VAR in
  #8 (permalink)  
Antiguo 27/10/2008, 07:26
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 16 años
Puntos: 43
Respuesta: Problema con un formlario

Te dejo un ejemplo completo, con formulario y todo para que lo pruebes, a mi no me genera ningún error.
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>Untitled Document</title>
</
head>
<
script>
function 
isEmpty(inputVal
{
  
inputStr inputVal.length
  
var contsps 0    // contador de espacios en blanco
  
for (var 0inputStr i++) 
  {
    var 
oneChar inputVal.charAt(i)
    if (
oneChar == " "
    {
      
contsps contsps 
    
}
  }
  if (
contsps == inputStr
  {
    return 
true
  
}
  else 
  {
    return 
false 
  
}
}

function 
validaForm()
{
    var 
user document.getElementById('username');
    var 
pass document.getElementById('password');

      if (
isEmpty(user.value))
      {
        
alert("El user no debe estar vacío");
        return 
false;
      }
      if (
isEmpty(pass.value))
      {
        
alert("El pass no debe estar vacío");
        return 
false;
      }

}  
</script>
<body>
<form action="validar.php" method="POST" onsubmit="return validaForm();">
<table cellpadding="0px" cellspacing="0px">
    <tr>
        <td>login:&nbsp;</td>
        <td><input type="text" name="username" id="username" maxlength="30" size="25" /></td>
    </tr>
    <tr>
        <td>&nbsp;</td>
    </tr>
    <tr>
        <td>password:&nbsp;&nbsp;</td>
        <td><input type="password" name="password" id="password" maxlength="30" size="25" /></td>
        <td>&nbsp</td>
        <td><input type="submit" value="Login"></td>
    </tr>
</table>
</form>
</body>
</html> 
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #9 (permalink)  
Antiguo 27/10/2008, 07:41
 
Fecha de Ingreso: octubre-2008
Mensajes: 102
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Problema con un formlario

Viendo la estructura del código PHP podrias poner en el value del formulario

<?php echo $pass; ?>
<?php echo $pass2; ?>
<?php echo $email; ?>
<?php echo $email2; ?>
... etc

<input type="password" name="pass" value="<?php echo $pass; ?>">

Ahí te lo deberia tomar.
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 12:59.