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

    Recupero variabili da form

    Ciao a tutti,

    ho un form che ad un certo punto permette di "aggiungere degli articoli" in modo "dinamico".
    Mi spiego, essendo un form per ordinare del materiale, ad un certo punto ho 3 input:
    CODICE | DESCRIZIONE | PREZZO

    poi a destra ho un pulsante che tramite javascript mi permette di aggiungere sotto altre input.

    Ora, quando vado a recuperare questi valori con PHP...:
    Codice PHP:
    for ($i=1;$i<=50;$i++) {
    if(!isset(
    $_POST['codice_'.$i])){$codice="";}else{$codice $_POST['codice_'.$i];}
    if(!isset(
    $_POST['descrizione_'.$i])){$descrizione="";}else{$descrizione $_POST['descrizione_'.$i];}
    if(!isset(
    $_POST['prezzo_'.$i])){$prezzo="";}else{$prezzo $_POST['prezzo_'.$i];}
    if(!isset(
    $_POST['stato_'.$i])){$stato="";}else{$stato $_POST['stato_'.$i];}
    ....

    (ovviamente nello stesso ciclo eseguo anche la query di inserimento nel database)

    ...riesco ad inserire solamente ciò che ottengo dalla prima terzina di input, mentre tutte le input che aggiungo tramite javascript vengono ignorate.

    Esiste una soluzione? Cos'ho sbagliato?

    Grazie.

  2. #2
    Utente di HTML.it L'avatar di Takeno
    Registrato dal
    May 2007
    Messaggi
    146
    Ora non so che tipo di input hai, però puoi risolvere il tutto seguendo questo esempio:

    <input type="text" name="codice[]" />
    <input type="text" name="descrizione[]" />
    <input type="text" name="prezzo[]" />

    Etc etc

    In questo modo (assai carino) avrai $_POST['codice'] che è un array contenente tutti i valori passati dalle triplette di Codice.
    Idem per $_POST['descrizione'], $_POST['prezzo'] etc etc, che saranno array paralleli al primo.

    Codice PHP:
    $count count($_POST['codice']);
    for(
    $i 0$i $count$i++) {
      echo 
    "Tripletta numero ".$i." :\n";
      echo 
    $_POST['codice'][$i] . "\n";
      echo 
    $_POST['descrizione'][$i] . "\n";
      
    //...


    Spero che questo esempio ti sia stato utile

  3. #3
    Grazie Takeno per la tua risposta.

    Purtroppo con il tuo metodo continua a prendermi solamente la prima terzina e non quelle aggiunte via javascript.

    Può essere un problema di come creo gli elementi input con js?!?

  4. #4
    Utente di HTML.it L'avatar di Takeno
    Registrato dal
    May 2007
    Messaggi
    146
    Possibile... puoi mostrare il codice?

  5. #5
    yep...

    premetto che non è opera mia, ma se non ricordo male, avevo preso spunto da qualche parte, visto che il javascript non lo conosco:

    codice:
    <script type="text/javascript">
    <!--
    function accoda(){
    	if(document.createElement && document.getElementById && document.getElementsByTagName) {
    		// crea elementi
    		var oP=document.createElement("P");
    		var oField=document.createElement("INPUT");
    		var oField1=document.createElement("INPUT");
    		var oField2=document.createElement("INPUT");
    		var oSelect=document.createElement("SELECT");
    		var oOption=document.createElement("OPTION");
    		var oOption2=document.createElement("OPTION");
    		var oButt=document.createElement("INPUT");
    
    		// setta attributi
      		oField.setAttribute("type","text");
    		oField.setAttribute("name","codice[]");
    		oField.setAttribute("size","15");
    		oField1.setAttribute("type","text");
    		oField1.setAttribute("name","descrizione[]");
    		oField2.setAttribute("type","text");
    		oField2.setAttribute("name","prezzo[]");
    		oField2.setAttribute("size","5");
    		oSelect.setAttribute("name","stato[]");
    		oOption.setAttribute("value","Disponibile");
    		oOption.innerHTML="Disponibile";
    		oOption2.setAttribute("value","Da ordinare");
    		oOption2.innerHTML="Da ordinare";
    		oButt.setAttribute("type","button");
    		oButt.setAttribute("value","-");
    
    		// 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
    		oP.appendChild(oField);
    		oP.appendChild(oField1);
    		oP.appendChild(oField2);
    		oP.appendChild(oSelect);
    		oSelect.appendChild(oOption);
    		oSelect.appendChild(oOption2);
    		oP.appendChild(oButt);
    		document.getElementById('allega').appendChild(oP);
    
    	}
    }
    
    
    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 p del td che contiene l' elemento che ha scatenato l' evento
    		while(srg.tagName!="P"){srg=(srg.parentNode)?srg.parentNode:srg.parentElement}
    
    		// riferimento al id della cella contenente il materiale
    		var tb=document.getElementById('allega');
    		
    		// rimuovi
    		tb.removeChild(srg);
    	}
    }
    //-->
    </script>

  6. #6
    Utente di HTML.it L'avatar di Takeno
    Registrato dal
    May 2007
    Messaggi
    146
    Uhm..

    fai una cosa, nella pagina php dove arrivano i dati, come prima riga metti


    die("<xmp>".print_r($_POST,true));


    Così quando mandi il form, appare una pagina con tutti i dati passati.
    Se non ci sono dati che non vuoi mostrare, prova a postare quello che ti esce

  7. #7
    mmmm...non mi mostra niente...

    E se guardo nel codice della pagina leggo solo:
    codice:
    <xmp>Array
    (
    )
    Non so se è importante per il "debug" ma il form non passa solamente quelle terzine ma anche altri dati, tra cui il nominativo del cliente o cose del genere...

    Ho sostituito xmp con il tag <pre> e vedo:
    codice:
    Array
    (
        [cliente] => Cliente Prova
        [telefono] => 
        [cellulare] => 
        [email] => 
        [problema] => Problema all'HD
        [indirizzo] => viale Italia 100
        [citta] => Reggio Emilia
        [incaricato] => Nicola
        [giorno_appuntamento] => 7
        [mese_appuntamento] => Settembre
        [anno_appuntamento] => 2010
        [ora_appuntamento] => 08
        [minuti_appuntamento] => 00
        [codice] => Array
            (
                [0] => 
            )
    
        [descrizione] => Array
            (
                [0] => HD 1TB Seagate
            )
    
        [prezzo] => Array
            (
                [0] => 
            )
    
        [stato] => Array
            (
                [0] => Disponibile
            )
    
        [note] => Urgente
        [submit] => INVIA
    )

  8. #8
    Utente di HTML.it L'avatar di Takeno
    Registrato dal
    May 2007
    Messaggi
    146



    ma... nel form, il parametro "method" com'è settato?

    Sembra che non passa nulla :S

  9. #9
    il method è post.

    ps: vedi mio messaggio precedente.

  10. #10
    Utente di HTML.it L'avatar di Takeno
    Registrato dal
    May 2007
    Messaggi
    146
    uhm...

    L'errore allora è nel javascript... non vengono aggiunti al form gli altri campi. Quindi passa sempre e solo l'unico iniziale.

    Posso vedere la pagina sul server? Se mi dai l'url posso fare qualche prova attraverso firebug e vedere come poter rimediare.

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.