Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di ertos
    Registrato dal
    Nov 2005
    Messaggi
    448

    Recupare i dati da un form dinamico

    Ciao ragazzi ho bisogno di un vostro aiuto, come da titolo ho creato un form dinamico in javascript, per vederlo cliccate qui

    Fin qui tutto ok, adesso pero ho un problema su come recuperare i dati dei campi di testo che si creano in modo automatico,

    Qst è il codice javascript e html della pagina creata:
    -------------------------------------
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

    <html>
    <head>
    <title>aggiungi / rimuovi campi input</title>
    <script language="JavaScript" type="text/javascript">
    <!--
    var num=1;
    function accoda(){
    if(document.createElement && document.getElementById && document.getElementsByTagName) {
    // crea elementi
    var oTr=document.createElement("TR");
    var oTd1=document.createElement("TD");
    var oTd2=document.createElement("TD");
    var oTd3=document.createElement("TD");
    var oTd4=document.createElement("TD");
    var oTd5=document.createElement("TD");
    var oField=document.createElement("INPUT");
    var oFieldB=document.createElement("INPUT");
    var oFieldC=document.createElement("INPUT");
    var oFieldD=document.createElement("INPUT");
    var oButt=document.createElement("INPUT");

    // setta attributi
    oField.setAttribute("type","text");
    oField.setAttribute("size","6")
    oField.setAttribute("name","testo"+num);

    oFieldB.setAttribute("type","text");
    oFieldB.setAttribute("size","6")
    oFieldB.setAttribute("name","testo"+num);

    oFieldC.setAttribute("type","text");
    oFieldC.setAttribute("size","6")
    oFieldC.setAttribute("name","testo"+num);

    oFieldD.setAttribute("type","text");
    oFieldD.setAttribute("size","6")
    oFieldD.setAttribute("name","testo"+num);

    oButt.setAttribute("type","button");
    oButt.setAttribute("value","rimuovi");

    // setta gestore evento
    if(oButt.attachEvent) oButt. attachEvent('onclick',function(e){rimuovi(e);})
    else if(oButt.addEventListener) oButt. addEventListener('click',function(e){rimuovi(e);}, false)

    // appendi al relativo padre
    oTd1.appendChild(oField);
    oTd2.appendChild(oFieldB);
    oTd3.appendChild(oFieldC);
    oTd4.appendChild(oFieldD);
    oTd5.appendChild(oButt);
    oTr.appendChild(oTd1);
    oTr.appendChild(oTd2);
    oTr.appendChild(oTd3);
    oTr.appendChild(oTd4);
    oTr.appendChild(oTd5);

    document.getElementById('tabella').getElementsByTa gName('TBODY')[0].appendChild(oTr);

    // incrementa variabile globale
    num++
    }
    }


    function rimuovi(e){
    if(document.removeChild && document.getElementById && document.getElementsByTagName) {
    if(!e) e=window.event;
    var srg=(e.target)?e.target:e.srcElement;

    // risali al tr del td che contiene l' elemento che ha scatenato l' evento
    while(srg.tagName!="TR"){srg=(srg.parentNode)?srg. parentNode:srg.parentElement}

    // riferimento al tbody
    var tb=document.getElementById('tabella').getElementsB yTagName('TBODY')[0];

    // rimuovi
    tb.removeChild(srg);
    }
    }
    //-->
    </script>
    </head>
    <body>
    <form name="modulo" action="sendprovaultima.php" method="post">


    Nome:
    <input name="name" type="text" id="name">
    </p>


    e.mail:
    <input name="email" type="text" id="email">
    </p>


    messaggio:
    <textarea name="msg" cols="41" rows="8" id="msg"></textarea>
    </p>
    <table width="382" border="1" bordercolor="#FF0000" id="tabella">
    <tbody>
    <tr>
    <td width="76"> <input name="testo+num" type="text" id="testo1" size="6" />
    </td>
    <td width="72"><input name="testo+num" type="text" id="testo+num" size="6" /> </td>
    <td width="84"><input name="testo+num" type="text" id="testo+num" size="6" /></td>
    <td width="54"><input name="testo+num" type="text" id="testo+num" size="6" /></td>
    <td width="62"><input name="button" type="button" disabled="disabled" value="rimuovi" /></td>
    </tr>
    </tbody>
    </table>
    <input name="button2" type="button" onClick="accoda()" value="Aggiungi" />



    <input type="submit" name="Submit" value="Invia">
    </p>
    </form>


    </body>
    </html>


    ------------------------------------------------


    Questo invece è il codice della pagina php:

    --------------------------------------------
    <?php
    $receiverMail = "mia email@.it";

    $name = ltrim(rtrim(strip_tags(stripslashes($_POST['name']))));
    $email = ltrim(rtrim(strip_tags(stripslashes($_POST['email']))));
    $subject = "Richiesta informazioni";
    $msg = ltrim(rtrim(strip_tags($_POST['msg'])));
    $numeri = ltrim(rtrim(strip_tags(stripslashes($_POST['testonum']))));


    $ip = getenv("REMOTE_ADDR");
    $msgformat = "Nome: $name ($ip)\n\nEmail: $email\n\nRichiesta: $msg\n\nNumeri: $numeri";

    mail($receiverMail, $subject, $msgformat, "From: $name <$email>");
    ?>


    ------------------------------------------------------------

    Ho fatto diverse prove, la pagina php invia tutto tranne i campi di testo dinamici...mi potete aiutare? dove sbagilo????

    Ho sbagliato a scrivere il codice Java o php???

    Spero mi aiutate e mi ringrazio in anticipo!!!

    ciao ciao

  2. #2
    Utente di HTML.it L'avatar di ertos
    Registrato dal
    Nov 2005
    Messaggi
    448
    Help me...

  3. #3
    Siccome ho avuto anche io la necessità di usare questo script nessuno da settembre è riuscito a dare una risposta?
    Vi prego!
    "La verità sarà sempre una bugia."

  4. #4
    Cerco di spiegarmi meglio...
    Come posso inviare un POST ad una pagina PHP e gestire le variabili che ogni volta posso essere diverse?

    Esempio mi ritroverei ad inviare la prima volta solo 1 riga ma se un cliente aggiunge cento righe e i rispettivi codici che poi diverranno variabili? Come li gestisco?

    Esiste un modo di incrementare il numero di variabili all'occorrenza?

    Scusate se ho scritto un'assurdità... nn sono ferrato.
    CIAO a tutti.-
    "La verità sarà sempre una bugia."

  5. #5
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    non conosco java, però ti posso dire questo...

    se ho un form in html posso avere da 1 a n campi in cui nel form hanno name=dato[]

    <input name="dato[]" type="text" id="name">


    passato a php questi valori vengono gestiti con $_POST['dato']

    $_POST['dato'] è un array in questo caso quindi se faccio

    foreach ($_POST['dato'] as $insert)
    echo $insert;

    mi visualizzerà tutti i campi
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  6. #6
    Ho provato ad inviare tramite POST i valori immessi in + righe utilizzando lo script GC Formmail. Questo script è grandioso perchè invia qualunque cosa passi per esso.Basta indicare un indirizzo email.
    Il problema però nel mio caso è che iper e-mail mi arriva solo la prima riga immessa ed ignora tutto il resto...
    chi può aiutarmi???
    "La verità sarà sempre una bugia."

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    59
    Ritornando al primo post, anch'io ho lo stesso problema e mi sono imbattuto in questo ma ahimè non c'è soluzione alla cosa, ho dei campi dinamici creati con il dom ma quando vado con $_POST[nomecampo] non ottengo niente eppure nella paginaweb il campo esiste ed è stato creato in js, come si risolveeeeeeeeeeeeee?????

  8. #8
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    Dunque...
    non è così difficile

    Il Javascript deve essere modificato per far si che i campi delle righe aggiunte automaticamente (a partire dalla prima) abbiano un nome che finisce in [] ad esempio

    <input name="testoA[]" type="text" />
    <input name="testoB[]" type="text" />
    <input name="testoC[]" type="text" />
    <input name="testoD[]" type="text" />

    quando ci sarà il submit, otterrete un array in $_POST('TestoA') che contiene tutti i valori inseriti nei campi testoA delle diverse righe.


    Dimenticavo

    L'esempio iniziale è sbagliato perchè
    - in ogni riga ci sono 5 input con lo stesso nome: "testo"+num;
    - la funzione accoda() rimette num a 1 ogni volta che viene richiamata e quindi tutti gli input hanno lo stesso nome.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.