- Home
- Categorie
- Coding e Sistemistica
- Coding
- [Php] Recuperare dati da un form dinamico
- 
							
							
							
							
							[Php] Recuperare dati da un form dinamicoEccomi qua niubbo completo del php... 
 Dunque, avendo scoperto che con la funzione array_count_values() è possibile creare un primordialissimo sistema di sondaggi, ho iniziato a scriverlo.
 Ok tutto bene fino a quando nn ho pensato ad un area amministrativa.In due parole: In un primo file c'è un form in cui impostare il numero di opzioni del sondaggio. 
 Questo form a seconda del numero crea una pagina con tanti campi input quante sono le opzioni impostate.
 Ogni campo input assume un "name" proprio.Questo è il codice che ho usato: <? if (($_POST["opz"]) == "") echo ("Non puoi lasciare vuoto questo campo!"); elseif (($_POST["opz"]) == "0") echo ("Devono esserci almeno 2 opzioni!"); elseif (($_POST["opz"]) == "1"){ echo ("Devono esserci almeno 2 opzioni!"); } else { echo ("<form action='index.php' method='post'>"); echo ("<table>"); echo ("<tr><td colspan='2'><h1>Inserisci un titolo per il tuo sondaggio</h1></td></tr>"); echo ("<tr><td>Titolo: </td><td><input type='text' name='titolo' size='100'></td></tr>"); echo ("<tr><td colspan='2'><h1>Inserisci le opzioni</h1></td></tr>"); for ($i=0; $i<$opz; $i++){ $name = "opzione"; echo ("<tr><td colspan='2'>Opzione <input type='text' name='" . ($name.$i) ."' size='30'></td></tr>"); } echo ("<tr><td colspan='2'><input type='submit' value='Crea sondaggio'></td></tr>"); echo ("</table></form>"); } ?>Bene in questo modo ottengo dei campi input chiamati "opzione0", "opzione1" ecc... Il problema nasce adesso. 
 La pagina successiva dovrebbe aprire un file di testo e inserire le varie opzioni che verranno scritte nei campi, e visualizzarle come contenuto di un array.Ma qui mi sono bloccato... 
 O meglio come posso recuperare le opzioni?
 
- 
							
							
							
							
							
Posso darti un consiglio personale al di fuori della domanda? [url=http://www.php.net/echo]Echo() utilizzala così: echo "stringa"; [url=http://www.php.net/echo]**echo() in realtà non è una funzione (è un costrutto del linguaggio) pertanto non richiede l'uso di parametri. Infatti, se si vuole passare più di un parametro, non bisogna racchiuderli tra parentesi**. :)
 
- 
							
							
							
							
							
$opzione0 = $_POST['opzione0']; $opzione1 = $_POST['opzione1']; 
 
- 
							
							
							
							
							
passi in hidden il numero delle opzioni che hai generato dinamicamente e poi, 
 con un ciclo for $i=0->$n_opzioni recuperi tutti i campi.hai due scelte per leggere il valore della funzione:$_POST['opzione'.$i] ma ti ricordo anche questo sistema: 
 $var ='opzione'.$i;echo $$var; il doppio dollaro fa in modo che il contenuto di una variabile diventi il nome di un'altra. 
 
- 
							
							
							
							
							<? $opzioni = array (); $MAX_OPT = 1000; for ($i = 0; $i < $MAX_OPT; $i++) { if (isset($_POST["opzione$i"])) { $aggiungi = $_POST["opzione$i"]; array_push ($opzioni,$aggiungi); echo($_POST["opzione$i"]." "); } } foreach ($opzioni as $opzione){ $sondaggio = "sondaggio.txt"; $content = $opzione." "; $fp = fopen($sondaggio, "a"); $fw = fwrite($fp, $content); fclose($fp); } ?>Alla fine son riuscito utilizando il ciclo in alto... 
 Grazie mille per le vostre risposte...Zau! 
 
- 
							
							
							
							
							
no!!! tu ipotizzi siano mille le opzioni e fai un ciclo che occupa risorse inutili. al posto di usare una costante fai in modo di passare dal form il valore di quante sono le opzioni. 
 risparmi tempo e risorse.se quella pagina (come ti auguro) dovesse avere 10.000 accessi al giorno sprechi risorse. in più, se proprio proprio modificalo in questo modo: for ($i = 0; $i < $MAX_OPT; $i++) { if (isset($_POST["opzione$i"])) { $aggiungi = $_POST["opzione$i"]; array_push ($opzioni,$aggiungi); echo($_POST["opzione$i"]." "); } else break; }aggiungendo: 
 else
 break;ottieni che il ciclo non viene più eseguito nel caso non esista una delle opzioni (presumento che siano in ordine crescente) è inutile testare quelle che stanno dopo in quanto sicuramente non esisteranno. 
 
- 
							
							
							
							
							
il ciclo che hai utilizzato non è molto ottimizzato. Fa 1000 cicli anche se il numero di opzioni è 3 
 se vuoi usare questo sistema potresti almeno correggerlo così:for ($i = 0; $i < $MAX_OPT; $i++) { if (isset($_POST["opzione$i"])) { $aggiungi = $_POST["opzione$i"]; array_push ($opzioni,$aggiungi); echo($_POST["opzione$i"]." "); } else break; }in alternativa io ti consiglio di chiamare la varibili opzione (dentro al form) così: <input name="opzione[]" ...> in questo modo quando recuperi la varibile opzione (l'unica variabile opzione) questa dovebbe essere un array con i valori contentui in tutti i campi 
 ciao
 
- 
							
							
							
							
							
@ico1989 said: $opzione0 = $_POST['opzione0']; $opzione1 = $_POST['opzione1']; 
 Che figura... Scusate ho buttato giù d'istinto... :bagno: