Visualizzazione risultati 1 fino 3 di 3

Discussione: Funzione echo $_POST su select dinamiche JS

  1. #1
    Sindone non è connesso Neofita
    Data registrazione
    04-10-2005
    Messaggi
    19

    Question Funzione echo $_POST su select dinamiche JS

    Salve a tutti ragazzi, nell'augurarvi un buon inizio d'anno pongo uno degli ultimi quesiti di questo. Ho una combobox concatenata in javascript, nella quale vi sono 6 livelli di select che si adattano al livello precedente. Ora vorrei restituire le scelte dell'utente in un riepilogo a fondo pagina, e la funzione echo $_POST mi sembrava la più opportuna: tuttavia non legge la selezione delle select dalla seconda in poi. Per ora la pagina non è online, quindi vi posto il pezzo di codice che ci interessa:
    Codice HTML:
    <form name="hardware" method="post" action="">
    <label>Processore e scheda madre:</label>
    <select name="combo0" id="combo_0" onChange="change(this);" style="width:200px;">
    	<option value="value1">Seleziona:</option>
    	<option value="value2">AMD</option>
    	<option value="value3">Intel</option>
    </select>
    
    <select name="combo1" id="combo_1" onChange="change(this)" style="width:200px;">
    	<option value="value1">  </option>
    </select>
    [...]
    </form>
    Poi ho questo codice php:
    Codice PHP:
    <?php
    if($_POST)
    {
    echo(
    'Scheda madre: ' . $_POST['combo0']);
    }
    ?>
    Se utilizzo combo0 mi restituisce correttamente il valore selezionato, ma se imposto combo1 (perché a me interessa sapere la selezione dell'ultima combo concatenata che ora per brevità indico come 1, non della prima), il tutto mi restituisce un misero %...
    Non sono molto pratico, fino ad ora copiando e leggendo guide sono riuscito a raggiungere il risultato che mi sono prefisso, ma non riesco proprio a superare questo scoglio (su google non trovo nulla anche perché forse sbaglio keys).

  2. #2
    Guest

    Predefinito

    Credo che il problema sia nella funzione JavaScript change, puoi postarne il codice, per favore?

  3. #3
    Sindone non è connesso Neofita
    Data registrazione
    04-10-2005
    Messaggi
    19

    Predefinito

    Essendo un codice che ho prelevato da internet già pronto da modificare, credo che ti riferisca a questa funzione, l'unica che ho trovato come rimando nel codice JS. Ti posto l'intera parte interessata, tralasciando quella che contiene i singoli dati da pescare:
    Codice HTML:
        displaywhenempty=""
        valuewhenempty=-1
    
        displaywhennotempty="-select-"
        valuewhennotempty=0
    
    function change(currentbox) {
    	numb = currentbox.id.split("_");
    	currentbox = numb[1];
    
        i=parseInt(currentbox)+1
    
    // Svuoto tutte le combo box seguendo l'attuale
    // I empty all combo boxes following the current one
    
        while ((eval("typeof(document.getElementById(\"combo_"+i+"\"))!='undefined'")) &&
               (document.getElementById("combo_"+i)!=null)) {
             son = document.getElementById("combo_"+i);
    	     // I empty all options except the first one (it isn't allowed)
    	     for (m=son.options.length-1;m>0;m--) son.options[m]=null;
    	     // I reset the first option
    	     son.options[0]=new Option(displaywhenempty,valuewhenempty)
    	     i=i+1
        }
    
    // ora creo la stringa con il nome di base ("stringa"), ad es. "data_1_0"
    // con la quale aggiungerò _0,_1,_2,_3 etc- per ottenere il nome della combo box da riempire
    // now I create the string with the "base" name ("stringa"), ie. "data_1_0"
    // to which I'll add _0,_1,_2,_3 etc to obtain the name of the combo box to fill
    
        stringa='data'
        i=0
        while ((eval("typeof(document.getElementById(\"combo_"+i+"\"))!='undefined'")) &&
               (document.getElementById("combo_"+i)!=null)) {
               eval("stringa=stringa+'_'+document.getElementById(\"combo_"+i+"\").selectedIndex")
               if (i==currentbox) break;
               i=i+1
        }
    
    // riempiendo il combo "figlio" (se esiste)
    // filling the "son" combo (if exists)
    
        following=parseInt(currentbox)+1
    
        if ((eval("typeof(document.getElementById(\"combo_"+following+"\"))!='undefined'")) &&
           (document.getElementById("combo_"+following)!=null)) {
           son = document.getElementById("combo_"+following);
           stringa=stringa+"_"
           i=0
           while ((eval("typeof("+stringa+i+")!='undefined'")) || (i==0)) {
    
           // if there are no options, I empty the first option of the "son" combo
    	   // otherwise I put "-select-" in it
    
    	   	  if ((i==0) && eval("typeof("+stringa+"0)=='undefined'"))
    	   	      if (eval("typeof("+stringa+"1)=='undefined'"))
    	   	         eval("son.options[0]=new Option(displaywhenempty,valuewhenempty)")
    	   	      else
    	             eval("son.options[0]=new Option(displaywhennotempty,valuewhennotempty)")
    	      else
                  eval("son.options["+i+"]=new Option("+stringa+i+".text,"+stringa+i+".value)")
    	      i=i+1
    	   }
           //son.focus()
           i=1
           combostatus=''
           cstatus=stringa.split("_")
           while (cstatus[i]!=null) {
              combostatus=combostatus+cstatus[i]
              i=i+1
              }
           return combostatus;
        }
    }
    
    //-->
    </script>
    -
    No niente, un errore mio, funziona tutto perfettamente: in pratica, il problema era proprio nel codice dei dati selezionati. Ad esempio ho questo:
    Codice HTML:
    data_1_1_1_1 = new Option("AM2+ Gigabyte GA-MA770-UD3","AM2+ Gigabyte GA-MA770-UD3")
    data_1_1_1_2 = new Option("AM3 Gigabyte GA-MA790XT-UD4P", "%")
    in pratica il value che pesca il codice php è quello contenuto nei secondi apici, non nei primi. Per cui, nel primo caso mi restituisce il nome corretto, nel secondo caso mi restituisce un % che è comunque tecnicamente corretto ma non per me ovviamente.

    Ovviamente ho perso 1 giorno per risolvere un problema che qualsiasi programmatore non avrebbe neanche avuto. Vabbè capita quando si è inesperti.

    Grazie cmq e Buon Anno a tutti, ora posso andare a festeggiare in tranquillità!
    Ultima modifica di darkwolf : 31-12-2009 alle ore 20.42.06

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •