Cita:
Iniciado por albertrc
ya he puesto las variables en el value pero tengo un problema si no pongo nada me sale 0 porque valido las variables con (int) por cuestiones de seguridad sql injection xss i otra historias
el submit no me funciona o es porque tanto en el name como value tengo registro
<input type="submit" name="registro" value="Registro"/><br/>
si tengo muchos campos podria poner el if submit cogiendo todo el formulario no
if( isset($_POST['submit']))
{
}
ese if esta muy bien. el problema es donde lo pones.
a ver. si vos haces un
if lo que este dentro del
if se va a ejecutar solo cuando se cumplan las condiciones. si vos pones el formulario dentro del
if nunca se va a mostrar.
Yo separaría todo lo que es validacion y el formulario por otro lado.
te muestro un ejemplo?
Código PHP:
<?php
if( isset($_POST['submit']) ) {
$succesful = TRUE;
if( isset($_POST['empresa']) && $_POST['empresa'] != '' ) $succesful = FALSE; //texto antibots
if(! isset($_POST['nombre']) || trim($_POST['nombre']) == '' || trim($_POST['nombre']) == 'Nombre') {
$succesful = FALSE;
$error_nombre = '';
}
if(! isset($_POST['telefono']) || trim($_POST['telefono']) == '' || trim($_POST['telefono']) == 'Telefono') {
$succesful = FALSE;
$error_telefono = '';
}
if(! isset($_POST['email']) || trim($_POST['email']) == '' || trim($_POST['email']) == 'E-mail') {
$succesful = FALSE;
$error_email = '';
}
if(! isset($_POST['mensaje']) || trim($_POST['mensaje']) == '' || trim($_POST['mensaje']) == 'Escribanos un mensaje') {
$succesful = FALSE;
$error_mensaje = '';
}
if( $succesful == TRUE ) {
$nombre = strip_tags ( $_POST['nombre'] );
$telefono = strip_tags ( $_POST['telefono'] );
$email = strip_tags ( $_POST['email'] );
$mensaje = strip_tags ( $_POST['mensaje'] );
$to = '[email protected]';
$subject = "Mensaje desde pagina";
$message = 'Mensaje de: ' . $nombre . ' - ' . $email . ' - ' . $telefono . "\n\n" . $mensaje;
$header = "From: Sanchy.com <[email protected]>";
$mail_sent = mail($to, $subject, $message, $header);
if($mail_sent == TRUE) {
//ingresar datos a la BD
}
}
?>
Código HTML:
<form id="contacto-form" action="contacto.php#mensaje-enviado" method="post">
<?php if( isset($error_nombre) ) : ?>
<div class="error-active">
<?php endif; ?>
<p class="error">Por favor escribí tu nombre:</p><br/>
<input type="text" class="input" value="<?php if(isset($_POST['nombre'])) echo $_POST['nombre']; else echo 'Nombre'; ?>" name="nombre" /><br/>
<?php if( isset($error_nombre) ) : ?>
</div><!-- .error-active -->
<?php endif; ?>
<span style="display:none">
<input type="text" class="input" value="" name="empresa" /><br/>
</span>
<?php if( isset($error_telefono) ) : ?>
<div class="error-active">
<?php endif; ?>
<p class="error">Por favor escribí un teléfono:</p><br/>
<input type="text" class="input" value="<?php if(isset($_POST['telefono'])) echo $_POST['telefono']; else echo 'Telefono'; ?>" name="telefono" /><br/>
<?php if( isset($error_telefono) ) : ?>
</div><!-- .error-active -->
<?php endif; ?>
<?php if( isset($error_email) ) : ?>
<div class="error-active">
<?php endif; ?>
<p class="error">Por favor escribí un e-mail:</p><br/>
<input type="text" class="input" value="<?php if(isset($_POST['email'])) echo $_POST['email']; else echo 'E-mail'; ?>" name="email" /><br/>
<?php if( isset($error_email) ) : ?>
</div><!-- .error-active -->
<?php endif; ?>
<?php if( isset($error_mensaje) ) : ?>
<div class="error-active">
<?php endif; ?>
<p class="error">Parece que olvidaste escribir un mensaje:</p><br/>
<textarea rows="0" cols="0" class="textarea" name="mensaje"><?php if(isset($_POST['mensaje'])) echo $_POST['mensaje']; else echo 'Escribanos un mensaje'; ?></textarea><br/>
<?php if( isset($error_mensaje) ) : ?>
</div><!-- .error-active -->
<?php endif; ?>
<?php if( isset($mail_message) ) : ?>
<div class="error-active">
<?php endif; ?>
<p class="error errorbig"><?php echo $mail_message; ?></p><br/>
<input type="submit" class="submit" value="Enviar mensaje" name="submit" />
<?php if( isset($mail_message) ) : ?>
</div><!-- .error-active -->
<?php endif; ?>
<div id="mensaje-enviado"></div>
</form>
Asi, validando cada campo por separado, cuando un campo esta erroneo:
- Se setea TRUE una variable de error para cada campo, luego en el HTML si la variable seteada para el campo correspondiente esta en TRUE, haces todo lo que quieras hacer y mostrar
Espero te sirva de algo