Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Form dinamico e array post

    Ciao a tutti,
    devo creare un form dinamico, cioè con campi che possono essere singoli o multipli. Fin qui nessun problema. Il vostro aiuto mi serve per leggere l'array $_POST ed inserire i dati nel database.

    I campi che vengono ripetuti li chiamo:

    responsabile1 -> responsabile2 -> responsabile3 ecc.
    venditore1 -> venditore2 ->venditore3 ecc.

    Però così dovrei sapere sempre quanti campi responsabile o venditore devo avere. Non c'è invece la possibilità di creare degli array e passarli attraverso il post, così nella pagina di lettura dei dati non faccio altro che fare una count ed un ciclo?

    Grazie

  2. #2
    <input type="quello che vuoi" name="nome_campo[]">

    In questo modo crei un array in nome_campo

  3. #3
    Originariamente inviato da robertes
    <input type="quello che vuoi" name="nome_campo[]">

    In questo modo crei un array in nome_campo
    Ma questo metodo non funziona solo con php5?

  4. #4

  5. #5
    Scusa, approfitto della tua richiesta perchè il form dinamico interessa anche me
    Questo è quello che vorrei fare io:
    Supponiamo che io voglia inserire degli articoli in un magazzino e che a priori non so quanti articoli inserirò con una data operazione, l'idea sarebbe quella di iniziare da una maschera semplice ad esempio a 3 campi, con nome prodotto nome fornitore e prezzo, sotto vorrei mettere un pulsante che richiama la stessa pagina (un update) con la riga di campi precedentemente inserita (con un readonly e mandata già al db) e in più un altra riga di campi vuota, da compilare, e così via finchè nn si preme il pulsante di fine.
    E', più o meno quello che hai fatto tu? E in tal caso, perchè usi un array?Non vorrei che la mia idea sia troppo pesante dal punto di vista della gestione ma non so fare altrimenti, l'uso dell'array mi suggerisce che tu inserisca i campi nel db solo una volta alla fine dell'inserimento di tutte le righe, ma cosi' facendo, ogni volta che inserisci una riga nuova, non perdi le info sulla riga vecchia ?
    What if you could be born twice?

  6. #6
    Originariamente inviato da robertes
    <input type="quello che vuoi" name="nome_campo[]">

    In questo modo crei un array in nome_campo
    Grazie per la risposta, domani mattina quando sarò meno fuso la verificherò. Devo cmq mettere solo nome_campo[] ad ogni input senza incrementare nessun numero? Si arrangia lui ad ordinarlo?

    Grazie ancora

  7. #7
    Originariamente inviato da Criss2176
    Scusa, approfitto della tua richiesta perchè il form dinamico interessa anche me
    Questo è quello che vorrei fare io:
    Supponiamo che io voglia inserire degli articoli in un magazzino e che a priori non so quanti articoli inserirò con una data operazione, l'idea sarebbe quella di iniziare da una maschera semplice ad esempio a 3 campi, con nome prodotto nome fornitore e prezzo, sotto vorrei mettere un pulsante che richiama la stessa pagina (un update) con la riga di campi precedentemente inserita (con un readonly e mandata già al db) e in più un altra riga di campi vuota, da compilare, e così via finchè nn si preme il pulsante di fine.
    E', più o meno quello che hai fatto tu? E in tal caso, perchè usi un array?Non vorrei che la mia idea sia troppo pesante dal punto di vista della gestione ma non so fare altrimenti, l'uso dell'array mi suggerisce che tu inserisca i campi nel db solo una volta alla fine dell'inserimento di tutte le righe, ma cosi' facendo, ogni volta che inserisci una riga nuova, non perdi le info sulla riga vecchia ?
    Ciao Criss,
    all'ora la mia idea è più o meno simile alla tua, però come giustamente hai detto io effettuo l'inserimento una volta terminato di inserire tutti i campi.
    Ho scelto questa via per dare la possibilità di poter eliminare un campo o cambiare il suo contenuto all'utente nel caso abbia sbagliato. Non perdo alcun valore perchè utilizzo javascript. Domani mattina se vuoi ti posto la funzione che fa questa cosa, ora non ho tempo....CIAOO

  8. #8

    java e javascript, che bella invenzione...
    ovviamente i miei problemi derivano dal fatto che usando i form di html ho paura di perdere le info...
    allora domani do un'occhiata al forum , è una cosa che sto implementando in questi giorni, se stanotte mi viene in mente qualcosa lo posto
    goodnightttttttttttt
    What if you could be born twice?

  9. #9
    Originariamente inviato da Criss2176

    java e javascript, che bella invenzione...
    ovviamente i miei problemi derivano dal fatto che usando i form di html ho paura di perdere le info...
    allora domani do un'occhiata al forum , è una cosa che sto implementando in questi giorni, se stanotte mi viene in mente qualcosa lo posto
    goodnightttttttttttt
    Eccoti qui la funzione js che ho creato.


    var responsabile = 1; //variabile globale da incrementare per l'id del div da aggiungere/rimuovere
    //la inizializzo a 1 perchè ho già un campo presente

    //funzione che aggiunge un campo text all'interno del form

    function addR() {
    if (document.createElement && document.getElementById && document.getElementsByTagName) {

    responsabile++; //incremento subito la variabile globale

    var divRiga = document.createElement("div"); //creo l'elemento div contenitore del tutto
    divRiga.className="divLat"; //assegno una classe CSS al contenitore
    divRiga.setAttribute("id","rigaResp"+responsabile) ; //setto l'attributo id che mi servirà poi x eliminarlo

    var divLabel = document.createElement("div"); //creo l'elemento div che funge da label
    divLabel.className="label"; //assegno una classe CSS all'elemento
    divLabel.setAttribute("id","responsabileC"+respons abile); //setto l'attributo id per lo stesso motivo di sopra

    divLabel.innerHTML = "<label for=\"responsabile"+responsabile+"\">Responsabili del P.V.:</label>"; //inserisco all'interno del div il label vero e proprio

    var divCampo = document.createElement("div"); //creo l'elemento div che conterrà il campo del form
    divCampo.className="campo"; //assegno una classe CSS all'elemento
    divCampo.setAttribute("id","responsabile"+responsa bile); //setto l'attributo id sempre per lo stesso motivo

    var inputField = document.createElement("input"); //creo l'elemento input del form

    inputField.setAttribute("type","text"); //assegno il tipo all'elemento
    inputField.setAttribute("name","responsabili[]"); //assegno il nome all'elemento
    inputField.className="inputText"; //assegno la classe CSS all'elemento
    inputField.setAttribute("maxlength","250"); //assegno la massima lunghezza all'elemento

    document.getElementById('responsabili').appendChil d(divRiga); //aggiungo al div contenitore di tutti i responsabili la riga che conterrà il singolo responsabile

    document.getElementById('rigaResp'+responsabile).a ppendChild(divLabel); //aggiungo il div label alla riga

    document.getElementById('rigaResp'+responsabile).a ppendChild(divCampo); //aggiungo il div campo alla riga

    document.getElementById('responsabile'+responsabil e).appendChild(inputField); //aggiungo il campo input al div campo (occhio ai nomi degli id)

    if (responsabile==2) { //effettuo il controllo che se responsabili è 2 allora mi aggiunga ad un div AR la stringa rimuovi elemento
    document.getElementById('AR').innerHTML+="--<a href=\"#ancoraResponsabile\" onclick=\"delR();\">rimuovi responsabile</a>";

    //utilizzo la concatenazione di stringa xkè all'interno del div AR è già presente il link aggiungi elemento che non deve sparire altrimenti non si può più aggiungere elementi
    }
    }
    }


    //funzione di cancellazione dell'elemento
    function delR() {
    if (document.removeChild && document.getElementById && document.getElementsByTagName) {

    var riga = document.getElementById('rigaResp'+responsabile); //richiamo il div riga
    var inputField = document.getElementById('responsabile'+responsabil e); //richiamo il campo input
    var divLabel = document.getElementById('responsabileC'+responsabi le); //richiamo il campo label

    document.getElementById('rigaResp'+responsabile).r emoveChild(divLabel); //rimuovo il campo label dalla riga

    document.getElementById('rigaResp'+responsabile).r emoveChild(inputField); //rimuovo il campo input dalla riga

    document.getElementById('responsabili').removeChil d(riga); //rimuovo il contenitore riga, così facendo lo spazio ritornerà quello iniziale

    responsabile--; //decremento la variabile globale

    //se la variabile arriva al minimo da me previsto deve apparire solo la scritta aggiungi e non più rimuovi elemento
    if (responsabile==1) {
    document.getElementById("AR").innerHTML="<a href=\"#ancoraResponsabile\" onclick=\"add();\">aggiungi responsabile</a>";
    }
    }
    }

    Spero di essere stato chiaro. I nomi dei campi li puoi cambiare a piacimento ovviamente. Se hai bisogno di chiarimenti scrivimi pure.


    Ciaoo

  10. #10
    Utente di HTML.it L'avatar di Gumble
    Registrato dal
    Jun 2004
    Messaggi
    1,313
    edit: il forum sta impazzendo... ho risposto perché non vedevo nessuna risposta... e invece al reload della pagina me li ha mostrati.. scusate.. ciaoo
    alcool: la causa e la soluzione di tutti i problemi

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.