PDA

View Full Version : problema [php]


david8000
17-06-2010, 14:13
ciao a tutti.. ho un problema nella creazione di un form in php. in pratica devo mantenere il valore della select da una pagina all'altra. per farvi capire meglio nella pag1.php faccio scegliere dalla select il valore e nella pag2.php il valore deve essere settato come predefinito.. vi prego aiutatemi :D

dojolab
17-06-2010, 15:51
ciao a tutti.. ho un problema nella creazione di un form in php. in pratica devo mantenere il valore della select da una pagina all'altra. per farvi capire meglio nella pag1.php faccio scegliere dalla select il valore e nella pag2.php il valore deve essere settato come predefinito.. vi prego aiutatemi :D

Beh basta passare il valore della select (name="prova") come _POST in PHP:



<option value="<?php echo $_POST['prova']; ?>" selected><?php echo $_POST['prova']; ?>"</option>



Se le option sono stampate da un ciclo devi fare una IF lineare:

<?php echo ($_POST['prova'] == $variabile_del_ciclo) ? 'selected' : NULL; ?>

e sei a posto :)

david8000
18-06-2010, 08:22
ok grazie! adesso però devo farlo in modo diverso... passare il dato da prova1.php a prova2.php e successivamente da prova2.php a prova1.php su prova1 mi deve visualizzare il valore scelto all'inizio come predefinito :help: :help:

ti posto il codice:
Pagina1

<?php

$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$commento = $_POST['commento'];
$SUBMIT = $_POST['SUBMIT'];
$professione = $_POST['professione'];

PRINT("aaaaaaa $professione");
PRINT("<HTML>");
PRINT("<HEAD>");
PRINT("<TITLE>Tabella</TITLE>");
PRINT("</HEAD>");
PRINT("<BODY>");
PRINT("<TABLE Border=\"1\">");
PRINT("<TR>");
PRINT("<TD>");
PRINT("<FORM METHOD=\"POST\" ACTION=\"prova3.php\"><BR>");
PRINT("Nome: &nbsp &nbsp &nbsp<INPUT TYPE=\"TEXT\" NAME=\"nome\" SIZE=\"25\" VALUE = \"$nome\"><BR>");
PRINT("Cognome: <INPUT TYPE=\"TEXT\" NAME=\"cognome\" SIZE=\"25\" VALUE = \"$cognome\"><BR><BR>");
PRINT("Sesso:<BR>");
PRINT("<INPUT TYPE=\"RADIO\" NAME=\"sesso\" VALUE=\"maschio\"> M<BR>");
PRINT("<INPUT TYPE=\"RADIO\" NAME=\"sesso\" VALUE=\"femmina\"> F<BR><BR>");
PRINT("Sport:<BR>");
PRINT("<INPUT TYPE=\"CHECKBOX\" NAME=\"sport\" VALUE=\"calcio\"> Calcio<BR>");
PRINT("<INPUT TYPE=\"CHECKBOX\" NAME=\"sport\" VALUE=\"basket\"> Basket<BR>");
PRINT("<INPUT TYPE=\"CHECKBOX\" NAME=\"sport\" VALUE=\"nuoto\"> Nuoto<BR>");
PRINT("<INPUT TYPE=\"CHECKBOX\" NAME=\"sport\" VALUE=\"tennis\"> Tennis<BR><BR>");
PRINT("<SELECT NAME=\"professione\">");
PRINT("<OPTION VALUE = \"Studente\">Studente</OPTION>");
PRINT("<OPTION VALUE = \"Lavoratore\">Lavoratore</OPTION>");
PRINT("</SELECT><BR><BR>");
PRINT("Commento:<BR>");
PRINT("<INPUT TYPE=\"TEXTAREA\" NAME=\"commento\" SIZE=\"150\" VALUE = \"$commento\">");
PRINT("<BR><BR>");
PRINT("<INPUT TYPE=\"SUBMIT\" NAME=\"SUBMIT\" VALUE=\"Invia i dati\">");
PRINT("<INPUT TYPE=\"HIDDEN\" NAME=\"prova\" VALUE=\"ciccioopippo\">");
PRINT("</FORM>");
PRINT("</TD>");
PRINT("</TR>");
PRINT("</TABLE>");
PRINT("</BODY>");
PRINT("</HTML>");
?>

pagina2
<?php

$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$sport = $_POST['sport'];
$sesso = $_POST['sesso'];
$commento = $_POST['commento'];
$prova = $_POST['prova'];
$professione = $_POST['professione'];

PRINT("aaaaaaa $professione");

PRINT("<HTML>");
PRINT("<HEAD>");
PRINT("<TITLE>Grazie</TITLE>");
PRINT("</HEAD>");
PRINT("<BODY>");
PRINT("<FORM METHOD=\"POST\" ACTION=\"prova1.php\">");
PRINT("Grazie $nome $cognome per averci inviato i dati!");
PRINT("<BR><BR>");
PRINT("Il tuo sport preferito e': $sport.");
PRINT("<BR><BR>");
PRINT("Sei $sesso.");
PRINT("<BR><BR>");
PRINT("Il tuo commento e' stato: $commento");
PRINT("<BR><BR>");
PRINT("La parola nascosta e': $prova.<BR><BR>");
PRINT("<INPUT TYPE=\"HIDDEN\" NAME=\"nome\" VALUE=\"$nome\">");
PRINT("<INPUT TYPE=\"HIDDEN\" NAME=\"cognome\" VALUE=\"$cognome\">");
PRINT("<INPUT TYPE=\"HIDDEN\" NAME=\"commento\" VALUE=\"$commento\">");
PRINT("<INPUT TYPE=\"HIDDEN\" NAME=\"professione\" VALUE=\"$professione\">");
PRINT("<INPUT TYPE=\"SUBMIT\" NAME=\"SUBMIT\" VALUE=\"Ritorna alla prima pagina\">");
if($professione == $Studente)
PRINT("<OPTION SELECTED = \"SELECTED\">$professione</OPTION>");
else
PRINT("<OPTION SELECTED = \"SELECTED\">$professione</OPTION>");
PRINT("</FORM>");
PRINT("</BODY>");
PRINT("</HTML>");
?>


Grazie in anticipo! :)

dojolab
18-06-2010, 08:24
Due precisazioni, metti il codice tra i tag CODE che almeno diventa quasi leggibile.
Seconda cosa, perché mandi in PRINT() ogni singola riga? Non è meglio scrivere HTML e mischiarlo con PHP a questo punto? :D

david8000
18-06-2010, 08:28
Ci stanno insegnando così per il momento.....
ora metto i tag per il codice ;)

dojolab
18-06-2010, 08:53
Ci stanno insegnando così per il momento.....
ora metto i tag per il codice ;)

Da fucilare chi ti insegna queste cose :mbe:

david8000
18-06-2010, 09:41
ho messo i tag al codice.. puoi darci un consiglio su come risolvere il problema?
Grazie (:

dojolab
18-06-2010, 09:44
ho messo i tag al codice.. puoi darci un consiglio su come risolvere il problema?
Grazie (:

Allora, hai due strade:

a) usi le sessioni e ti memorizzi
b) usi una variabile di callback (molto usata in ASP come tecnica)

Secondo me la prima è piu fine come soluzione, la seconda è piu veloce.
Ti memorizzi il valore che prendi in pagina2 dal POST e lo trasmetti a pagina1.
Volendo puoi usare anche un GET (ma sarebbero pubblici i valori).

david8000
18-06-2010, 09:48
il problema non è la trasmissione ma far ritornare alla select il valore selezionato nella prima pagina