- Home
- Categorie
- Coding e Sistemistica
- PHP
- [Php] Recuperare dati da un form dinamico
-
[Php] Recuperare dati da un form dinamico
Eccomi 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: