Comunidad de diseño web y desarrollo en internet online

Validar formulario PHP (No enviar cuando hay campos vacios)

Citar            
MensajeEscrito el 15 Oct 2012 12:02 pm
Hola a todos;

Se que este tema ya está ampliamente resuelto en ocasiones anteriores, pero lo cierto es que algo estoy haciendo mal, porque lo que leo no me funciona y a la gente que colgó el tema si. Claramente el problema soy yo.

A ver si me podéis ayudar.

Tengo este formulario, que se envía correctamente, pero da igual que el campo esté vacio o lleno, lógicamente esto no debe ser así.

Os pego el HTML.

Código HTML :

<form id="contact" name="contact" method="post" action="mail.php">
                        <div class="contactname">
                           <input type="text" value="Name" class="textarea field-name" id="name" name="name">
                        </div>
                        <div class="contactemail">
                           <input type="text" class="textarea field-email" value="Email" id="email" name="email">
                        </div>
                        <div class="contactmessage">
                           <textarea class="textarea field-message" rows="10" cols="60" id="message" name="message">Message</textarea>
                        </div>
                        <p>
                           <input type="reset" class="contact_btn clear" value="clear" tabindex="5" id="clear">
                           <input type="button" class="contact_btn send feedback_go" value="send message" tabindex="5" id="submit" name="submit">
                           <span class="ajaxanswer">
                           </span>
                        </p>
                     </form>


Y ahora os pego el PHP, yo lo veo bien, quiero decir para mi el IF tiene sentido pero no funciona.

Código PHP :

<?php
header('Content-Type: text/html; charset=utf-8');

function sendFeedback($feedback_email, $feedback_msg, $feedback_name) {


   /* EDIT THIS */
   $admin_email = "[email protected]";
   $subj = "Email desde Ostoswebdesign.com";
   /* //EDIT THIS */
   
   
   $message = "
   <html>
   <head>
     <title>Email desde Ostoswebdesign.</title>
   </head>
   <body>
      <p><a href='mailto:".$feedback_email."'>".$feedback_name."</a> te ha mandado este email:</p>
      <p>".$feedback_msg."</p>
      <p>".$subject."</p>
   </body>
   </html>
   ";
   $headers  = 'MIME-Version: 1.0' . "\r\n";
   $headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";
   
   if ($feedback_email!=="Email *" && !empty($feedback_email)  && !empty($feedback_msg) ) {
      mail($admin_email, $subj, $message, $headers);
      echo "<span class='ajaxok'>Gracias, tu mensaje ha sido enviado.</span>";
   } else {
      echo "<span class='ajaxalert'>Por favor, rellena todos los campos.</span>";
   }
   
   
}

sendFeedback($_POST['email'], $_POST['message'], $_POST['name']);
?>


Muchas gracias de antemano.

Un saludo

Marcos

Por Marcos.Ostos

6 de clabLevel



 

chrome
Citar            
MensajeEscrito el 19 Oct 2012 04:12 pm
Y no te va validar campos antes de enviar usando jquery? asi identificas anticipadamente desde el lado del cliente si el campo es correcto y si no esta vacio o es requerido

Mira echa un vistazo a algunos plugins jquery.forms

http://jquerytools.org/documentation/validator/index.html
http://www.malsup.com/jquery/form/#ajaxForm
http://speckyboy.com/2010/06/22/50-jquery-plugins-for-form-functionality-validation-security-and-customisation/

Probablemente si no te funciona sea porque en la muestra de ellos este validando usando este medio

Por comicSans

Claber

151 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Oct 2012 08:03 pm
Efectivamente lo más correcto sería validar primero de lado del cliente con jQuery y luego del lado del servidor, en tu caso PHP.

Ve poco a poco, validad con jQuery, y luego con PHP una vez que le des al botón de enviar el form, pero como consejo, intenta no mezclar HTML con PHP, haz el script de validación en PHP a parte y direccionas para dicho script en el action del form. Existen mejores métodos, pero así es la forma más básica y más sencilla.

Por FepAguilar

41 de clabLevel



Genero:Masculino  

Programador web

chrome
Citar            
MensajeEscrito el 31 Oct 2012 07:02 pm
Hola soy nuevo en el foro y tambien un poco en la programacion de php, estoy haciendo un formulario que no active el submit de enviar hasta que este completamente lleno pero si mi formulario tiene un input number nada mas no se desactiva el boton tenga o no tenga valor espero y me haya sabido explicar aqui les dejo el codigo que tengo. SALUDOS

<html>
<head>
<script>
function validar(frm) {

frm.sub.disabled = true;
for (i=0; i<5; i++)
if (empty(frm['txt']+i) ) return
frm.sub.disabled = false;
}
</script>
</head>

<body>
<form name="formulario" method="post" action="">
<p>
<label for="nombre">Nombre</label>
<input type="text" name="txt0" onkeyup = "validar(this.form)"/>
<label for="cantidad"><br />
<br />
Cantidad</label>
<input type="text" name="txt1" onkeyup = "validar(this.form)"/>
</p>
<p>
<label for="precio">Precio</label>
<input type="text" name="txt2" onkeyup = "validar(this.form)"/>
</p>
<p>
<label for="txt">prueba</label>
<textarea name="txt3" id="txt" cols="45" rows="5" onkeyup = "validar(this.form)"></textarea>
</p>
<p>
<label for="txt">numero</label>
<input type='number' name="txt4" id="numero" value="" size='3' step='1' onkeydown = "validar(this.form)" /></p>


<input type="submit" name="sub" disabled="disabled" value="Enviar" />
</form>
</body>
</html>

Por Rastamandita

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 31 Oct 2012 07:08 pm
perdon el codigo correcto es este

<html>
<head>
<script>
function validar(frm) {

frm.sub.disabled = true;
for (i=0; i<5; i++)
if (frm['txt'+i].value =="" ) return
frm.sub.disabled = false;
}
</script>
</head>

<body>
<form name="formulario" method="post" action="">
<p>
<label for="nombre">Nombre</label>
<input type="text" name="txt0" onkeyup = "validar(this.form)"/>
<label for="cantidad"><br />
<br />
Cantidad</label>
<input type="text" name="txt1" onkeyup = "validar(this.form)"/>
</p>
<p>
<label for="precio">Precio</label>
<input type="text" name="txt2" onkeyup = "validar(this.form)"/>
</p>
<p>
<label for="txt">prueba</label>
<textarea name="txt3" id="txt" cols="45" rows="5" onkeyup = "validar(this.form)"></textarea>
</p>
<p>
<label for="txt">numero</label>
<input type='number' name="txt4" id="numero" value="" size='3' step='1' onkeydown = "validar(this.form)" /></p>


<input type="submit" name="sub" disabled="disabled" value="Enviar" />
</form>
</body>
</html>

Por Rastamandita

1 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.