1. ¡OFERTA! con cupón "DIRVPS": hosting por $0,01 y también VPS Linux y Windows por $0,01 el primer mes por Interserver ← publi
    Descartar aviso
Descartar aviso
Al usar este sitio web, aceptas que nosotros y nuestros socios podamos establecer cookies para fines tales como personalizar el contenido y la publicidad. Más información.

Problemillas para validar un formulario en dreamweaver

Tema en 'Programación y Diseño Web' iniciado por Miguel Fernández Lizarbe, 9 Sep 2014.

  1. Hola a todos.
    Alquien me podría echar una mano con el formulario que estaba haciendo en Dreamweaver. La cuestión es que se ve en el navegador como yo quiero, pero a la hora de intentar validarlo, únicamente puedo validar el campo del teléfono y el text_area.

    <div class= "form">
    <form name="get_a_quote_form" method="post" action="#">
    <table class="form_text" border="0">
    <tr>
    <td>Services:</td>
    <td><select name="Services">
    <option value="translation">Translation</option>
    <option value="proofreading">Proofreading</option>
    <option value="transcription">Transcription</option>
    <option value="consultan_consultancy">Consultan Consultancy</option></select></td>

    <td>Number of words:</td>
    <td><input type="number" name="number_of_words"></td>
    </tr>
    <tr>
    <td>Lenguages:</td>
    <td><select name="Lenguages">
    <option value="italian-italian">Italian-Italian</option>
    <option value="italian-english">Italian-English</option>
    <option value="english-english">English-English</option>
    <option value="english-italian">English-Italian</option>
    <option value="spanish-spanish">Spanish-Spanish</option>
    <option value="spanish-italian">Spanish-Italian</option>
    </select></td>

    <td>Read by:</td>
    <td id="ready_by"><input type="date" name="ready_by" placeholder="Use the format dd/mm/yy" size="27"></td>
    </tr>
    <tr>
    <td>Telephone</td>
    <td id="Telephone"><input name="Telephone" type="text" id="Telephone"></td>
    <td>Email</td>
    <td id="Email"><input type="text" name="Email"</td>
    </tr>
    <tr>
    <td colspan="1">Description:</td>
    <td colspan="3"><textarea name="text_area" cols="80" rows="8" class="text_area" id="text_area" placeholder="Provide information such as field and text type"></textarea></td>
    </tr>
    <tr>
    <td colspan="4" id="submit"><input type="submit" value="Submit" name="submit"></td>
    </tr>
    </table>
    </form>
     
  2.  
  3. Gracias x adelantado a todo el que se moleste en echarme una manita, soy novato y se agradece mucho ;)
     
  4. eenda_works

    eenda_works Usuario activo

    Hola @Miguel Fernández Lizarbe,

    ¿Podrías incluir el código JS que genera Dreamweaver para validar tu formulario? Probablemente, el error este ahí y no directamente en el código HTML.

    A simple vista te faltan etiquetas por cerrar, tales como:

    CODE, HTML o PHP Insertado:
    <div class="form">
    y

    CODE, HTML o PHP Insertado:
    <input type="text" name="Email" />
    Estoy elaborándote un pequeño fragmento de código con la solución, la postearé en unos minutos.


    Un saludo,
     
  5. eenda_works

    eenda_works Usuario activo

    Hola @Miguel Fernández Lizarbe,

    Aquí tienes un ejemplo. Es muy importante en programación que tabules el código para evitar errores de cierre de etiquetas, etc, como te ha pasado a ti. Tienes un ejemplo claro de lo que te digo en el código:

    CODE, HTML o PHP Insertado:
    <script>
      
        function validarFormulario(){
          
            // Recogemos los valores
            // pero previamente le asignamos una ID
            // a cada uno de los campos (o textareas) del formulario
            var input_services = document.getElementById("input_services").value;
            var input_nwords = document.getElementById("input_nwords").value;
            var input_languages = document.getElementById("input_languages").value;
            var input_readyby = document.getElementById("input_readyby").value;
            var input_telephone = document.getElementById("input_telephone").value;
            var input_email = document.getElementById("input_email").value;
            var input_textarea = document.getElementById("input_textarea").value;
          
            // Comprobamos que tengan algún valor
            // incluido por el usuario o lanzamos error
            if(input_services.length == 0){
                alert("El campo Services es obligatorio");
                return false;
            }
          
            if(input_nwords.length == 0){
                alert("El campo Number of Words es obligatorio");
                return false;
            }
          
            if(input_languages.length == 0){
                alert("El campo language es obligatorio");
                return false;
            }
          
            if(input_readyby.length == 0){
                alert("El campo Read by es obligatorio");
                return false;
            }
          
            if(input_telephone.length == 0){
                alert("El campo Telephone es obligatorio");
                return false;
            }
          
            if(input_email.length == 0){
                alert("El campo E-mail es obligatorio");
                return false;
            }
          
            if(input_textarea.length == 0){
                alert("El campo Description es obligatorio");
                return false;
            }
          
            document.get_a_quote_form.submit();
        }
      
    </script>
    <div class= "form">
        <form name="get_a_quote_form" method="post" action="" onsubmit="return validarFormulario();">
            <table class="form_text" border="0">
                <tr>
                    <td>Services:</td>
                    <td>
                        <select name="Services" id="input_services">
                            <option value="translation">Translation</option>
                            <option value="proofreading">Proofreading</option>
                            <option value="transcription">Transcription</option>
                            <option value="consultan_consultancy">Consultan Consultancy</option>
                        </select>
                    </td>
                    <td>Number of words:</td>
                    <td><input type="number" name="number_of_words" id="input_nwords"></td>
                </tr>
                <tr>
                    <td>Lenguages:</td>
                <td>
                    <select name="Lenguages" id="input_languages">
                        <option value="italian-italian">Italian-Italian</option>
                        <option value="italian-english">Italian-English</option>
                        <option value="english-english">English-English</option>
                        <option value="english-italian">English-Italian</option>
                        <option value="spanish-spanish">Spanish-Spanish</option>
                        <option value="spanish-italian">Spanish-Italian</option>
                    </select>
                </td>
                <td>Read by:</td>
                    <td id="ready_by">
                        <input type="date" name="ready_by" id="input_readyby" placeholder="Use the format dd/mm/yy" size="27">
                    </td>
                </tr>
                <tr>
                    <td>Telephone</td>
                    <td id="Telephone">
                        <input name="Telephone" type="text" id="input_telephone">
                    </td>
                    <td>Email</td>
                    <td id="Email">
                        <input type="text" name="Email" id="input_email" />
                    </td>
                </tr>
                <tr>
                    <td>Description:</td>
                    <td colspan="3">
                        <textarea name="text_area" cols="80" rows="8" class="text_area" id="input_textarea" placeholder="Provide information such as field and text type"></textarea>
                    </td>
                </tr>
                <tr>
                    <td colspan="4" id="submit">
                        <input type="submit" value="Submit" name="submit">
                    </td>
                </tr>
            </table>
        </form>
    </div>

    Por otro lado, comentarte que este código es muy mejorable pero el único fin es darte unas nociones rápidas sobre cómo validar un formulario y si está todo correcto, enviarlo. Este ejemplo no valida ni formatos numéricos en el campo teléfono, ni que el e-mail sea una cuenta de correo válida, etc.

    Espero haberte sido de ayuda.

    Un saludo,
     
    A AMateos le gusta esto.
  6. Increibe, muchísimas gracias.
    La primera apreciación de que me faltaba cerrar el div, se me olvidó copiar la siguiente linea de código pero lo del campo del mail error mío. Tabular, lo hago, lo que pasa es que a la hora de copiar y pegar el código ha salido todo alineado a la izq, no me preguntes xq :)

    La cosa es que al intentar validar el formulario no me daba la opción de validar estos campos, lo terminé x rehacer sin tablas y utilizando las mismas opciones pero a través del panel de formulario de DW en lugar de escribir yo mismo el código y tengo una duda ¿Entiendo que sino puedo validar los campos que son listas con varias opciones a elegir o el de la fecha (lenguages , date y services) mediante la ventana de validación de DW es xq estoy haciendo algo mal, verdad, o hay alguna razón para no poder hacerlo?

    Este es el código de esos campos, x si acaso.

    <div class="Services"> Services
    <select name="services">
    <option value="nothing"></option>
    <option value="translation">Translation</option>
    <option value="proofreading">Proofreading</option>
    <option value="transcription">Transcription</option>
    <option value="consultan_consultancy">Consultan Consultancy</option>
    </select>
    </div>


    <p>Number of words:<input name="Number_of_words" type="text" maxlength="10"></p>

    <div class="Lenguages"> Services
    <select name="services">
    <option value="nothing"></option>
    <option value="italian-italian">Italian-Italian</option>
    <option value="italian-english">Italian-English</option>
    <option value="english-english">English-English</option>
    <option value="english-italian">English-Italian</option>
    <option value="spanish-spanish">Spanish-Spanish</option>
    <option value="spanish-italian">Spanish-Italian</option>
    </select>
    </div>


    <p>Ready by:<input name="Ready by" type="date"></p>

    <p>Telephone:<input name="Telephone" type="text"></p>

    <p>email:<input name="text" type="text"></p>

    Te agradezco que me hayas podido echar una mano antes, me estaba dejando esto pendiente xq no daba con el error y me ha ayudado mucho la aclaración que me diste. ;)
     
  7. eenda_works

    eenda_works Usuario activo

    Hola @Miguel Fernández Lizarbe,

    Lamento que haya tardado en entrar, tenemos muchísimo trabajo en la agencia y apenas me da tiempo a revisar todos los e-mails de las redes sociales y este tipo de soportes. Probablemente ya hayas encontrado el error pero, por si acaso, decirte que el sistema de validación de Dreamweaver (y el que te puse yo como ejemplo) se basa en la ID que tenga el elemento del formulario.

    Si tenemos en cuenta, por ejemplo, este trozo de tu código:

    CODE, HTML o PHP Insertado:
    <div class="Services"> Services
        <select name="services">
            <option value="nothing"></option>
            <option value="translation">Translation</option>
            <option value="proofreading">Proofreading</option>
            <option value="transcription">Transcription</option>
            <option value="consultan_consultancy">Consultan Consultancy</option>
        </select>
    </div>
    
    Verás que el campo <select> no dispone de ID, únicamente de NAME. Ahora bien, si te fijas en el código de validación que hice como ejemplo:

    CODE, HTML o PHP Insertado:
    var input_services = document.getElementById("input_services").value;
    
    La traducción lógica de document.getElementByID("input_services").value sería:
    Y en el fragmento de código que pones, el desplegable services no dispone de ninguna ID, como te decía más arriba.

    Ahora sí lo entiendes, ¿verdad?. Si no fuese así, no dudes en volver a responder y te echo una mano. Ya he activado la notificación mediante e-mail.
     
  8. Muchas gracias x seguir echando sobre el tema.
    Pues conseguí validar bajándome un modelo de formulario de internet y adaptándolo a los valores del mío, lo único que cuando recibo la información en el correo los datos del formulario vienen en el asunto y los campos de servicios, idiomas y el text-area vienen vacíos, como se ve en la imagen. Sabrás a que se puede deber?¿?¿?
    Captura de pantalla 2014-10-02 a la(s) 22.58.45.png
     
  9. eenda_works

    eenda_works Usuario activo

    Hola @Miguel Fernández Lizarbe,

    Supongo estás utilizando la función nativa mail() de PHP, ¿verdad? Como se indica en php.net, su funcionamiento debe ser:

    CODE, HTML o PHP Insertado:
    boolmail ( string $to , string $subject , string $message [, string $additional_headers [,string $additional_parameters ]] )
    
    Traducido al español sería:

    CODE, HTML o PHP Insertado:
    mail("email_destino@dominio.com", "Asunto del mail", "Texto del mensake")
    
    En el $additional_headers se indicaría, de manera opcional, el From Name, From E-mail, el Charset, y parámetros así.

    Probablemente estarás poniendo donde "Asunto del mail" todos los campos que recoges. Si quieres, pega la parte de tu código encargada del envío y lo vemos más detalladamente.
     
  10. La verdad es que no tengo ni idea de php, ni del java que usado para validar el formulario. Básicamente busqué, busqué y busqué hasta que he conseguido de un lado y de otro lo que creo que me hace falta para que me llegue la info del formulario. Este es el php que adapté. Thanks a lot.

    <? //Recepcion de datos
    $service_form=$_POST['service_form'];
    $number_of_words=$_POST['number_of_words'];
    $lenguages=$_POST['lenguages'];
    $telephone=$_POST['telephone'];
    $email=$_POST['email'];
    $description=$_POST['description'];
    //fin de recepcion de datos
    //accion de envio
    //......//
    $para='firecold82@gmail.com';
    $mensaje='
    Mensaje de:
    '.$email.'
    Service:
    '.$service_form.'
    Number of words:
    '.$number_of_words.'
    Lenguages:
    '.$lenguages.'
    Telephone:
    '.$telephone.'
    Email:
    '.$email.'
    Description:
    '.$description.'
    ';
    $desde='From:'.$email.'firecold82@gmail.com';
    ini_set(sendmail_from,'firecold@gmail.com');
    mail($para,$mensaje,$desde);
    echo'Mensaje enviado';
    ?>
     
  11. eenda_works

    eenda_works Usuario activo

    Hola,

    Tienes el error aquí,

    CODE, HTML o PHP Insertado:
    mail($para,$mensaje,$desde);
    
    Como te dije, a la función mail() hay que pasarle "para", "asunto", "mensaje", "desde".

    Te falta el parámetro asunto y donde debe estar ese parámetro le pasas "mensaje".

    Prueba y dime.
     
  12. Bueeenos días (aunque sea Lunes ;)).
    Pues he conseguido cambiarlo, ahora recibo la información del formulario dentro del mensaje del mail. Lo único que sigo teniendo el problema de que la información de tres de los campos del formulario aparecen sin los datos (Services, Lenguajes y Description), se os ocurre xq puede ser?¿?
     
  13. eenda_works

    eenda_works Usuario activo

    Hola @Miguel Fernández Lizarbe,

    ¿Puedes poner el código PHP encargado de recoger los datos? A bote pronto veo que no recoges bien los campos con $_POST. Es decir, creo que el campo que recojes como "services_from", en el HTML de arriba lo tienes como "services".

    Pon el código entero y así lo vemos mejor, ¿te parece?

    Un saludo.
     
  14. Esto es lo que tengo, del modelo que seguí para hacer mi formulario no usaba un php sino un java.
    Muchas gracias.
     

    Adjuntos:

  15. eenda_works

    eenda_works Usuario activo

    Hola @Miguel Fernández Lizarbe,

    Así lo haría yo. Fíjate bien en cada fragmento de código.

    En cuanto a PHP:
    CODE, HTML o PHP Insertado:
     <?php
        /*
        Recogida de valores */
        $services_form = $_POST['services_form'];
        $number_of_words = $_POST['number_of_words'];
        $lenguages = $_POST['Lenguages'];
        $telephone = $_POST['telephone'];
        $email = $_POST['email'];
        $description = $_POST['description'];
       
        /*
        Configuración de envío */
        $destinatario = "miguelgrow@gmail.com";
        $remitente = "Miguel Grow <miguelgrow@gmail.com>";
        $asunto = "Asunto del e-mail";
       
        // Cabecera del mail
        $headers = "From: $remitente\nContent-Type: text/html; charset=UTF-8";
       
        // Mensaje
        $mensaje = "
            Mensaje de: ".$email."<br />
            Servicio: " .$services_form."<br />
            Num. palabras: " .$number_of_words."<br />
            Lenguajes: " .$lenguages."<br />
            Telefono: " .$telephone."<br />
            E-mail: " .$email."<br />
            Descripcion: " .$description."
        ";
       
        if(mail($destinatario, $asunto, $mensaje, $headers)){
            die("Mensaje enviado con éxito");
        }else{
            die("Error al enviar el mensaje");
        }
       
    ?>
    Y tendrías, también que añadirle, al "textarea" de Description, un name, de forma que quedase así:
    CODE, HTML o PHP Insertado:
    <td colspan="1">Description</td>
    <td colspan="3">
        <textarea cols="74" rows="8" class="text_area" id="text_area" placeholder="Provide further information" name="description"></textarea>
    </td>
    
    Prueba y me dices. El error está en que te habías comido muchos "name" en los campos del formulario, o los recogías con otro nombre dentro del PHP, etc.

    Un saludo,
     
    A Miguel Fernández Lizarbe le gusta esto.
  16. Pues x lo que he probado funciona correctamente, solo he cambiado que el destinatario y el remitente tenían la misma dirección aparecía en el correo como que yo mismo me lo enviaba, x lo demás todo genial.

    Muchas gracias.
     
  17. egrueda

    egrueda Usuario activo

    Después de leer todo el hilo, opino que estamos reinventando mucho la rueda, en lugar de usar librerías que existen para tal fin (bueno, librerías o frameworks)
    Con ello te olvidas de progrmar la validación de javascript e incluso el envío de correos, y te hace ganar un tiempo tremendo con herramientas muy desarrolladas y probadas.

    Hablo entre otros de jQuery y su plugin jQueryValidator, y eso es sólo una opción. Es rápido y fácil de integrar: http://jqueryvalidation.org/

    Y en el lado de php existen clases para validación (https://github.com/Wixel/GUMP) y para envío de correo (https://github.com/Synchro/PHPMailer)

    Dales una oportunidad ;-)
     
    A Miguel Fernández Lizarbe le gusta esto.
  18. eenda_works

    eenda_works Usuario activo

    Hola,

    Toda la razón @egrueda pero tampoco quería saturarle. Hay que ir poco a poco.
    Nosotros, por ejemplo, utilizamos normalmente Parsley, que funciona muy pero que muy bien.

    Os dejo el enlace por si queréis echarle un ojo,
    http://parsleyjs.org

    @Miguel Fernández Lizarbe, me alegra saber que te he sido de ayuda y que finalmente has conseguido hacerlo funcionar :)
     
    A Miguel Fernández Lizarbe le gusta esto.
  19. Sabéis que pasa, como estoy aprendiendo de 0 y por mi cuenta, toda esta información que vosotros (como profesionales) usáis a diario la voy descubriendo con cuenta gotas a fuerza de "daros la brasa" a unos cuantos en los foros. ;)

    Ahora ando video video-tutoriales de java y aprendiendo tb php y como os podéis imaginar me estoy volviéndome loco, pero bueno, poco a poco.

    Voy a echar un vistazo a los links que me habéis pasado a ver si me pueden salvar la vida para futuras meteduras de pata jajajajaajaja.

    Muchas gracias a ambos y si alguno se sube a Escocia le invito a una pinta de cervecita :brindis:
     
  20. eenda_works

    eenda_works Usuario activo

    Hola @Miguel Fernández Lizarbe,

    Eso está hecho :)

    Por otro lado, decirte que si estamos en este (y otros) foro, es para ayudar, así que necesitas cualquier otra cosa abre un post y ahí estaremos para echarte una mano.

    Un saludo,
     
  21. Adjuntos:



Alojamiento web, Hosting Reseller, Servidores Dedicados - All in Hosting


    
    
    
    
Blog · Sitios amigos: GuiaHosting · Unidominios · Interalta ·