Visualizzazione dei risultati da 1 a 8 su 8

Discussione: textbox dinamiche

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    33

    textbox dinamiche

    Salve a tutti!
    Sto cercando di creare un form php che generi automaticamente dei nuovi campi textbox da riempire per l'inserimento dei valori in essi inseriti,in un database.
    Forse sono troppo confuso...posto il codice:

    Codice PHP:
    <?php
      
    echo'<table width="100%">';
        
    $i=1;
        for(
    $j=0;$j<$i;$j++){
          echo
    '<tr><td width="185"><INPUT NAME="nomesoft$i" TYPE="text" VALUE="" COLS=50 SIZE="50"></td>';
          echo
    '<td width="262"><INPUT NAME="funzionesoft$i" TYPE="text" VALUE="" COLS=50 SIZE="50"></td></tr>';
          }
        echo
    '<tr><td><INPUT NAME="aggiungisoft" TYPE="button" VALUE="Aggiungi"></td></tr>';  
      echo
    '</table>';
    ?>
    La mia idea era quella di inserire dei dati in "nomesoft$i" e "funzionesoft$i",incrementando $i ogni volta che si preme il tasto [Aggiungi].
    Dato che sto muovendo i miei primi passi in php,chiedo qualche spunto (e perdono per ciò che ho scritto prima:NON è codice!E' un esempio di ciò che vorrei fare... ).In rete non ho trovato esempi simili.
    ...esistono 10 tipi di informatici: quelli che conoscono il binario e quelli che non lo conoscono...

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    398
    prima di tutto nel tuo ciclo $i e' la variabile fissa e $j quella che incrementa
    quindi dovrai fare NAME="nomesoft$j" NAME="funzionesoft$j"

    poi attento se le stringhe sono comprese tra apici singoli $j non viene considerata una variabile.

    quindi tralasciando html che vai a generare
    Codice PHP:

    <?php
      
    echo '<table width="100%">';
        
    $numeroiterazioni 1;
        for(
    $j=0$j<$numeroiterazioni $j++){
          echo 
    "<tr><td width=\"185\"><INPUT NAME=\"nomesoft$i\" TYPE=\"text\" VALUE=\"\" COLS=50 SIZE=\"50\"></td>";
          echo 
    "<td width=\"262\"><INPUT NAME=\"funzionesoft$i\" TYPE=\"text\" VALUE=\"\" COLS=50 SIZE=\"50\"></td></tr>";
          }
        echo
    '<tr><td><INPUT NAME="aggiungisoft" TYPE="button" VALUE="Aggiungi"></td></tr>';  
      echo
    '</table>';
    ?>

    ho cambiato i con numeroiterazioni genera meno confusione.
    cosi dovrebbe andare ma non ho verificato che l'html generato sia esatto.

    Andrea

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    33
    ...lo dicevo,io,che non ero stato chiaro...
    Allora...partendo dal principio...
    Quel che vorrei fare è:
    1)Partendo dalla prima riga creata con quel pezzetto di codice,inserire due valori "nomesoft1" e "funzionesoft1" (da inserire nel DB);
    2)Premendo il tasto [Aggiungi],aggiungere un'altra riga con due textbox identiche alle precedenti che prendono in input due valori "nomesoft2" e "funzionesoft2" (da inserire nel DB);
    3)...continuare così per tute le volte che si preme il tasto [Aggiungi]

    Spero di esser stato più chiaro...
    (Grazie comunque,andreamk! )


    IN ALTERNATIVA
    Ho una pagina HTML contenente un form che inserisce i dati presi in input,in un DB "questionario" nella cartella "azienda".
    Sempre nella stessa pagina vorrei inserire un altro form che prenda questi famosi campi "nomesoft" e "funzionesoft" e li inserisca DB "questionario" nella cartella "software".
    In alternativa a quella cosa che avevo pensato di fare,posso inserire uno scriptino PHP che mi genera una tabella coi campi "nomesoft" e "funzionesoft" e che,alla pressione del tasto [Aggiungi],inseriscei dati nel DB e fa un refresh della sola tabella in PHP lasciando inalterato il form HTML?
    ...esistono 10 tipi di informatici: quelli che conoscono il binario e quelli che non lo conoscono...

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    33
    Per essere più chiari...
    Codice PHP:
    <form action="inserimento.php" method="post">

    [...]    //codice di un form più ampio a cui il codice successivo appartiene

      <table width="524" border=1 align=CENTER rules=NONE>
        <tr>
          <td bgcolor="#FF9C00"><font size=2 face="tahoma" color="#103963">[b]Software installati[/b]</font></td>
        </tr>
        <tr>
          <td><center>
              <font color="#103963" size="2" face="tahoma">Nome o Produttore del Software</font>
          </center></td>
          <td><center>
              <font color="#103963" size="2" face="tahoma">Funzionalit&agrave; del Software</font>
          </center></td>
        </tr>
        <tr>
          <td colspan="2"><?php
      
    echo'<table width="100%">';
        
    $i=5;
        for(
    $j=0;$j<$i;$j++){
          echo
    '<tr><td width="185"><INPUT NAME="nomesoft';
          echo
    "[$j]";
          echo 
    '" TYPE="text" VALUE="" COLS=50 SIZE="50"></td>';
          echo
    '<td width="262"><INPUT NAME="funzionesoft';
          echo 
    "[$j]";
          echo 
    '" TYPE="text" VALUE="" COLS=50 SIZE="50"></td></tr>';
          }
      echo
    '</table>';
    ?></td>
        </tr>
        <tr>
          <td><input name="aggiungisoft" type="submit" value="Aggiungi"></td>
        </tr>
      </table>
    </form>
    questo pezzo di codice mi crea $i righe con dei campi "nomesoft[0,1,2,...]" e funzionesoft[0,1,2,...] a seconda del valore di $i.
    Quel che vorrei accadesse è:
    1)premendo il tasto aggiungi,incrementare $i in modo da avere un'altra riga aggiuntiva;
    2)dato che questo pezzo di codice,appartiene ad un form che lo ingloba,vorrei aggiungere la riga senza causare un refresh dell'intera pagina o,comunque,la perdita dei dati inseriti precedentemente.
    HELP ME!!!
    ...esistono 10 tipi di informatici: quelli che conoscono il binario e quelli che non lo conoscono...

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    33
    Ulteriore modifica...ma non funziona
    credo sia un problema di formattazione del javascript
    qualcuno sa aiutarmi?

    Codice PHP:
    <?php
      
    echo'<table id="myTable" width="100%">';
        
    $i=5;
        echo 
    "<script type=\"text/javascript\">"
        echo 
    "function incrementa(\"$i\")\n";
        echo 
    "{\"$i++\"\n";
        echo 
    "print(\"$i\")}\n";  //volevo verificare se il valore di $i veniva incrementato,ma non funziona
        
    echo "</script>"

        echo
    '<input type="hidden" name="contatore" value=';
        echo 
    "$i";
        echo
    '></td>';
        for(
    $j=0;$j<$i;$j++){
          echo
    '<tr><td width="185"><INPUT NAME="nomesoft';
          echo
    "[$j]";
          echo 
    '" TYPE="text" VALUE="" COLS=50 SIZE="50"></td>';
          echo
    '<td width="262"><INPUT NAME="funzionesoft';
          echo 
    "[$j]";
          echo 
    '" TYPE="text" VALUE="" COLS=50 SIZE="50"></td></tr>';
          }
      echo
    '</table>';
      echo
    '<tr>';
      echo
    '  <td>[url="javascript:incrementa($i)"]Aggiungi una riga[/url]</td>';
      echo
    '</tr>';
      
      
    ?>
    ...esistono 10 tipi di informatici: quelli che conoscono il binario e quelli che non lo conoscono...

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    33
    Vanno bene anche suggerimenti che non seguono perfettamente le mie linee guida...
    ...esistono 10 tipi di informatici: quelli che conoscono il binario e quelli che non lo conoscono...

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    33
    Questo è il mio ultimo parto
    Codice PHP:
    <form>............QUI c'è il primo form con tutti i campi

    [Aggiungi a DB].............qui c'
    è il pulsante che gestisce il primo form
    </form>.........fine del primo form

    <form name="modulo">.........QUI c'è il secondo form
      <table id="tabella" width="524" border=1 align=CENTER rules=NONE>
      <tr>
        <td bgcolor="#FF9C00"><font size=2 face="tahoma" color="#103963">[b]Software installati[/b]</font></td>
      </tr>
      <tr>
        <td><font color="#103963" size="2" face="tahoma">Nome o Produttore del Software</font></td>
        <td><font color="#103963" size="2" face="tahoma">Funzionalit&agrave; del Software</font></td>
      </tr>
      <tr>
        <td>      <div align="left">
            <input name="sowtware0" type="text" value="" cols=50 size="35">
            </div></td>
        <td>      <div align="left">
            <input name="funzionalita0" type="text" value="" cols=50 size="35">
            </div></td>
      </tr>
    </table>
      <div align="center">
        <input name="button" type="button" onClick="accoda()" value="accoda">
        <input name="button" type="button" onClick="rimuovi()" value="rimuovi">
      </div>
    </form>........fine del secondo form 
    Aggiunge le righe coi campi ma vorrei che usasse questi campi per popolare il DB.
    Il pulsante [Aggiungi a DB] inserisce solo i campi del primo form.Come faccio a far inserire anche i dati del secondo form?
    VIIIIIIIII PREEEEEEEEEEEEEEEEEGOOOOOO!!!AAAIIIUUUTAAAAAAAATEE EEEEEEEEMIIIII!!
    ...esistono 10 tipi di informatici: quelli che conoscono il binario e quelli che non lo conoscono...

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    33
    Risolto anche questo...a furia di

    Codice PHP:
    <script language="JavaScript" type="text/javascript">
    <!--
    var [
    COLOR=orangered]num[/COLOR]=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 
    oField=document.createElement("INPUT");
            var 
    oField2=document.createElement("INPUT");

            
    // setta attributi
              
    oField.setAttribute("type","text");
            
    oField.setAttribute("name","software"+num);
              
    oField.setAttribute("value","");
            
    oField.setAttribute("cols","45");
            
    oField.setAttribute("size","35");
            
            
    oField2.setAttribute("type","text");
            
    oField2.setAttribute("name","funzione"+num);
            
    oField2.setAttribute("value","");
            
    oField2.setAttribute("cols","45");
            
    oField2.setAttribute("size","35");


            
    // appendi al relativo padre
            
    oTd1.appendChild(oField);
            
    oTd2.appendChild(oField2);
            
    oTr.appendChild(oTd1);
            
    oTr.appendChild(oTd2);
            
    document.getElementById('tabella').getElementsByTagName('TBODY')[0].appendChild(oTr);

            
    // incrementa variabile globale
            
    num++
        }
    }

    function 
    rimuovi(){
        if(
    document.removeChild && document.getElementById && document.getElementsByTagName) {
            
    // se non e' la prima riga
            
    if(num>1){
                
    // riferimento al tbody
                
    var tb=document.getElementById('tabella').getElementsByTagName('TBODY')[0];
                
    // riferimento all' ultimo TR
                
    var lastTr=tb.getElementsByTagName('TR')[(tb.getElementsByTagName('TR').length)-1]
                
    // rimuovi
                
    tb.removeChild(lastTr);
                
    // decrementa variabile globale
                
    num--
            }
        }
    }
    //-->
    </script> 
    Con lo script precedente,incremento e decremento la variabile num.

    Col codice seguente richiamo le funzioni nel form HTML e creo un campo hidden contatore
    Codice PHP:
        <input name="button" type="button" onClick="accoda()" value="accoda">
        <
    input name="button" type="button" onClick="rimuovi()" value="rimuovi">
        <
    input type="hidden" name="contatore"
    Quel che vi chiedo è: come posso fare per associare num a contatore?
    ...esistono 10 tipi di informatici: quelli che conoscono il binario e quelli che non lo conoscono...

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.