- Home
- Categorie
- Coding e Sistemistica
- Coding
- Se premi un pulsante, apri modulo con altri form
-
Se premi un pulsante, apri modulo con altri form
Salve,
Scusate il titolo ma è difficile spiegare bene il problema. Praticamente al premere del pulsante submit 'invio02', mi apre un testo contenuto nella variabile $variazione02, che include anche un nuovo pulsante submit 'invio03'.
Ecco il codice:
[PHP]
<form id="form1" name="form1" method="post" action="">
<input type="submit" name="invio02" value="Aggiungi seconda variazione" />
</form>
<?
// variazione 02$variazione02="<FORM METHOD=\"POST\" ACTION=\"\"> 22222 <!-- Pulsante che abilita la variazione 03 --> <form id=\"form1\" name=\"form1\" method=\"post\" action=\"\"> <input type=\"submit\" name=\"invio03\" value=\"Aggiungi terza variazione\" /> </form>" ; if(isset($_POST['invio02'])) { echo $variazione02; }// variazione 03
$variazione03="<FORM METHOD=\"POST\" ACTION=\"\"> 33333 <!-- Pulsante che abilita la variazione 04 --> <form id=\"form1\" name=\"form1\" method=\"post\" action=\"\"> <input type=\"submit\" name=\"invio04\" value=\"Aggiungi quarta variazione\" /> </form>" ; if(isset($_POST['invio03'])) { echo $variazione03; }// variazione 04
$variazione04="<FORM METHOD=\"POST\" ACTION=\"\"> 44444 <!-- Chiudo la variazione 04 --> <!-- Pulsante che abilita la variazione 05 --> <form id=\"form1\" name=\"form1\" method=\"post\" action=\"\"> <input type=\"submit\" name=\"invio05\" value=\"Aggiungi quinta variazione\" /> </form>" ; if(isset($_POST['invio04'])) { echo $variazione04; }// variazione 05
$variazione05="<FORM METHOD=\"POST\" ACTION=\"\"> 55555 <!-- Pulsante che abilita la variazione 06 --> <form id=\"form1\" name=\"form1\" method=\"post\" action=\"\"> <input type=\"submit\" name=\"invio06\" value=\"Aggiungi sesta variazione\" /> </form>" ; if(isset($_POST['invio05'])) { echo $variazione05; }// variazione 06
$variazione06="<FORM METHOD=\"POST\" ACTION=\"\"> 666666 <!-- Pulsante che abilita la variazione 07 --> <form id=\"form1\" name=\"form1\" method=\"post\" action=\"\"> <input type=\"submit\" name=\"invio07\" value=\"Aggiungi settima variazione\" /> </form>" ; if(isset($_POST['invio06'])) { echo $variazione06; }// variazione 07
$variazione07="<FORM METHOD=\"POST\" ACTION=\"\"> 77777 <!-- Pulsante che abilita la variazione 08 --> <form id=\"form1\" name=\"form1\" method=\"post\" action=\"\"> <input type=\"submit\" name=\"invio08\" value=\"Aggiungi ottava variazione\" /> </form>" ; if(isset($_POST['invio07'])) { echo $variazione07; }// variazione 08
$variazione08="<FORM METHOD=\"POST\" ACTION=\"\"> 8888 <!-- Chiudo la variazione 08 -->"; if(isset($_POST['invio08'])) { echo $variazione08; }?>
[/PHP]
Il mio problema è che il metodo POST non specifica di volta in volta quale pulsante submit ho premuto.
-
Ciao nofcfro e benvenuto nel forum GT,
quale submit è premuto è specificato dal name. Non capisco quale sia il problema.
-
Forse con una immagine mi spiego meglio ^^
imageshack.us/photo/my-images/191/carcospulsanti.jpg/
Col metodo POST inserito così mi seleziona tutti i submit della pagina!
-
Personalmente avrei utilizzato un altro sistema più leggibile:
[php]
<?php
$variazione[1] = "
<form id="form1" name="form1" method="post" action="">
<input type="submit" name="invio03" value="Aggiungi seconda variazione" />
<input type="hidden" name="variazione" value="2">
</form>";$variazione[2] = "
<form id="form1" name="form1" method="post" action="">
<input type="submit" name="invio03" value="Aggiungi terza variazione" />
<input type="hidden" name="variazione" value="3">
</form>";$variazione[3] = "
<form id="form1" name="form1" method="post" action="">
<input type="submit" name="invio03" value="Aggiungi quarta variazione" />
<input type="hidden" name="variazione" value="4">
</form>";if(!isset($_POST['variazione']))
echo $variazione[1];
elseif(is_numeric($_POST['variazione']) && isset($variazione[$_POST['variazione']]))
echo $variazione[$_POST['variazione']];
[/php]
-
Mitico!!!! E' proprio lo schema che cercavo!!! Semplice, chiaro ma soprattutto efficace!!

Solo due domande però:
[PHP]<?php
$variazione[1] = "
ciao<form id="form1" name="form1" method="post" action="">
<input type="submit" name="invio03" value="Aggiungi seconda variazione" />
<input type="hidden" name="variazione" value="2">
</form>";$variazione[2] = "
mamma<form id="form1" name="form1" method="post" action="">
<input type="submit" name="invio03" value="Aggiungi terza variazione" />
<input type="hidden" name="variazione" value="3">
</form>";$variazione[3] = "
guarda<form id="form1" name="form1" method="post" action="">
<input type="submit" name="invio03" value="Aggiungi quarta variazione" />
<input type="hidden" name="variazione" value="4">
</form>";if(!isset($_POST['variazione']))
echo $variazione[1];
elseif(is_numeric($_POST['variazione']) && isset($variazione[$_POST['variazione']]))
echo $variazione[$_POST['variazione']];[/PHP]#1 Aggiungendo ad ogni variazione le parole 'ciao', 'mamma', 'guarda', al premere del pulsante scompare la prima parola per la seconda e al nuovo premere scompare la seconda parola per la terza. Come posso fare in modo che ogni volta che premo il pulsante rimane anche la parola precedente?
#2 Come posso creare un pulsante invece di "reset", cioè che mi tolga solo l'ultima aggiunta fatta? Es. ho composto 'ciao', 'mamma',, 'guarda' e voglio togliere solo 'guarda', lasciando così solamente le prime due parole?
Grazie ancora

-
Allora per la prima domanda, puoi usare la variabile $_POST del campo di input che aggiungi. Quindi modifichi ad esempio cosi:
[php]
$testo_base = isset($_POST['testobase']) ? $_POST['testobase'] : '';
$variazione[1] = "
mamma<form id="form1" name="form1" method="post" action="">
<input type="text" name="testobase" value="$testo_base" />
<input type="submit" name="invio03" value="Aggiungi seconda variazione" />
<input type="hidden" name="variazione" value="2">
</form>";
$variazione[2] = "
mamma<form id="form1" name="form1" method="post" action="">
<input type="text" name="testobase" value="$testo_base" />
<input type="submit" name="invio03" value="Aggiungi terza variazione" />
<input type="hidden" name="variazione" value="3">
</form>";
[/php]Per la seconda:
Ti basta modificare il campo di input nascosto rimandandolo indietro invece che avanti.
-
Scusa ancora la domanda e grazie per la pazienza..
ma non riesco a capire: aggiungo nel form la riga
[PHP]<input type="text" name="testobase" value="$testo_base" />[/PHP]
mentre
[PHP]$testo_base = isset($_POST['testobase']) ? $_POST['testobase'] : '';; [/PHP]
lo devo inserire sotto sotto il ciclo elseif ? è quest'ultima riga di codice che non capisco
-
Mi dà sempre il solito problema: si susseguono i pulsanti senza rimanere

[PHP]<?php
$testo_base = isset($_POST['testobase']) ? $_POST['testobase'] : '';$variazione[1] = "
ciao<form id="form1" name="form1" method="post" action="">
<input type="hidden" name="testobase" value="$testo_base" />
<input type="submit" value="Aggiungi seconda variazione" />
<input type="hidden" name="variazione" value="2">
</form>";
$variazione[2] = "
mamma<form id="form1" name="form1" method="post" action="">
<input type="hidden" name="testobase" value="$testo_base" />
<input type="submit" value="Aggiungi terza variazione" />
<input type="hidden" name="variazione" value="3">
</form>";
$variazione[3] = "
guarda<form id="form1" name="form1" method="post" action="">
<input type="hidden" name="testobase" value="$testo_base" />
<input type="submit" value="Aggiungi quarta variazione" />
<input type="hidden" name="variazione" value="4">
</form>";
$variazione[4] = "
come<form id="form1" name="form1" method="post" action="">
<input type="hidden" name="testobase" value="$testo_base" />
<input type="submit" value="Aggiungi quinta variazione" />
<input type="hidden" name="variazione" value="5">
</form>";
$variazione[5] = "mi diverto";if(!isset($_POST['variazione']))
echo $variazione[1];
elseif(is_numeric($_POST['variazione']) && isset($variazione[$_POST['variazione']]))
echo $variazione[$_POST['variazione']];[/PHP]
-
È corretto come hai scritto nel secondo post.
Ma tu non volevi che se mostra il form 3, il form 1 e 2 non erano presenti? O ho capito il contrario di cosa volevi?
-
Ciao! Io vorrei che rimangano ogni volta quelli già cliccati!
Se mostra il form 3, il form 1 e 2 DEVONO erano presenti
-
Avevo capito male, allora devi cambiare:
[php]
elseif(is_numeric($_POST['variazione']) && isset($variazione[$_POST['variazione']]))
echo $variazione[$_POST['variazione']];
[/php]In:
[php]
elseif(is_numeric($_POST['variazione']) && isset($variazione[$_POST['variazione']]))
for($i=1; $i<=$_POST['variazione']; $i++)
echo $variazione*;
[/php]
-
Esattamente così!!

Se aggiungo un campo di troppo posso mettere un pulsante tipo "Elimina ultimo campo"? Come si può fare?
Un'ultimissima cosa, ma solo per curiosità: ogni volta che clicco su aggiungi, mi rimanda a inizio pagina, c'è un' "ancora" che mi fa rimanere all'altezza in cui ho cliccato aggiungi?Davvero GRAZIE

-
Dovresti utilizzare un database per salvare gli inserimenti effettuati altrimenti non sei in grado di salvare cosa è stato inserito.
Per eliminare l'ultimo campo devi decrementare $_POST['variazione'] nel form in cui metti torna indietro.
-
[PHP]<?php
$testo_base = isset($_POST['testobase']) ? $_POST['testobase'] : '';$variazione[1] = "
ciao<form id="form1" name="form1" method="post" action="">
<input type="hidden" name="decrementa" value="2" />
<input type="submit" value="Elimina seconda variazione" /> >
<input type="submit" value="Aggiungi seconda variazione" />
<input type="hidden" name="variazione" value="2">
</form>";
$variazione[2] = "
mamma<form id="form1" name="form1" method="post" action="">
<input type="hidden" name="decrementa" value="3" />
<input type="submit" value="Elimina terza variazione" /> >
<input type="submit" value="Aggiungi terza variazione" />
<input type="hidden" name="variazione" value="3">
</form>";
$variazione[3] = "
guarda<form id="form1" name="form1" method="post" action="">
<input type="hidden" name="decrementa" value="4" />
<input type="submit" value="Elimina quarta variazione" /> >
<input type="submit" value="Aggiungi quarta variazione" />
<input type="hidden" name="variazione" value="4">
</form>";
$variazione[4] = "
come<form id="form1" name="form1" method="post" action="">
<input type="hidden" name="decrementa" value="5" />
<input type="submit" value="Elimina quinta variazione" /> >
<input type="submit" value="Aggiungi quinta variazione" />
<input type="hidden" name="variazione" value="5">
</form>";
$variazione[5] = "mi diverto";if(!isset($_POST['variazione']))
echo $variazione[1];elseif(is_numeric($_POST['variazione']) && isset($variazione[$_POST['variazione']]))
for($i=1; $i<=$_POST['variazione']; $i++)
echo $variazione*;elseif(is_numeric($_POST['decrementa']) && isset($variazione[$_POST['decrementa']]))
for($i=1; $i>=$_POST['decrementa']; $i++)
echo $variazione*;
?>[/PHP]sia se provo:
[PHP]for($i=1; $i>=$_POST['decrementa']; $i++) [/PHP]
sia
[PHP]for($i=1; $i<=$_POST['decrementa']; $i--) [/PHP]non mi toglie l'ultima aggiunta

-
Non cosi, dovresti fare una cosa del genere:
[php]
<?php
$testo_base = isset($_POST['testobase']) ? $_POST['testobase'] : '';$variazione[1] = "
ciao<form id="form1" name="form1" method="post" action="">
<input type="hidden" name="testobase" value="$testo_base" />
<input type="submit" value="Aggiungi seconda variazione" />
<input type="hidden" name="variazione" value="2">
</form>";
$variazione[2] = "
mamma<form id="form1" name="form1" method="post" action="">
<input type="hidden" name="testobase" value="$testo_base" />
<input type="submit" value="Aggiungi terza variazione" />
<input type="hidden" name="variazione" value="3">
</form>";
$variazione[3] = "
guarda<form id="form1" name="form1" method="post" action="">
<input type="hidden" name="testobase" value="$testo_base" />
<input type="submit" value="Aggiungi quarta variazione" />
<input type="hidden" name="variazione" value="4">
</form>";
$variazione[4] = "
come<form id="form1" name="form1" method="post" action="">
<input type="hidden" name="testobase" value="$testo_base" />
<input type="submit" value="Aggiungi quinta variazione" />
<input type="hidden" name="variazione" value="5">
</form>";
$variazione[5] = "mi diverto";if(!isset($_POST['variazione']))
echo $variazione[1];
elseif(is_numeric($_POST['variazione']) && isset($variazione[$_POST['variazione']]))
for($i=1; $i<=$_POST['variazione']; $i++)
echo $variazione*;echo "<form id="form1" name="form1" method="post" action="">
<input type="submit" value="Torna indietro" />
<input type="hidden" name="variazione" value="".($_POST['variazione']-1)."">
</form>";
[/php]
-
Grazie DAVVERO
