2 submit per lo stesso form

Ciao

E' possibile inserire 2 submit per lo stesso form?

Vi spiego cosa dovrei fare.

L'utente inserisce dei dati in un form. Con gli stessi dati può compiere 2 operazioni.

Una che salva semplicemente i dati e lo riporta alla pagina principale.

L'altra operazione invece oltre a salvare i dati lo reindirizza alla stessa pagina con lo stesso form ma con i campi con gli stessi dati già inseriti (in modo che possa fare una semplice modifica e caricare un nuovo record solo con quel dato modificato in modo da poter velocizzare le operazioni e non inserire di nuovo tutti i dati per creare un nuovo record quasi identico).

Mi è stato richiesto espressamente dall'utente.

Io avevo pensato a inserire nel form 2 button con javascript che indirizzano a 2 funzioni (o pagine) differenti (anche se simili di fatto) oppure a un checkbox del quale la funzione che riceve i dati controlli se è spuntato o meno (if..else ecc ecc) e avvii una procedura differente.

Voi cosa mi consigliate di fare?

Grazie

inviato 5 anni fa
frankphp
X 0 X

Non c'è bisogno di usare javascript, puoi tranquillamente avere due pulsanti di submit, preferibilmente con attributo name differente.

Ad esempio:

<input name="Submit1" value="Operazione 1" type="submit" />

<input name="Submit2" value="Operazione 2" type="submit" />

Poi nello script PHP per verificare quale pulsane è stato premuto ti basta fare così:

<?php
if(isset($_POST['Submit1'])) {
   // è stato premuto il primo pulsante
}

if(isset($_POST['Submit2'])) {
   // è stato premuto il secondo pulsante
}

 :bye:

risposto 5 anni fa
Gianni Tomasicchio
modificato 5 anni fa
X 0 X

Non c'è bisogno di usare javascript, puoi tranquillamente avere due pulsanti di submit, preferibilmente con attributo name differente.

Ad esempio:

<input name="Submit1" value="Operazione 1" type="submit" />

<input name="Submit2" value="Operazione 2" type="submit" />

Poi nello script PHP per verificare quale pulsane è stato premuto ti basta fare così:

<?php
if(isset($_POST['Submit1'])) {
   // è stato premuto il primo pulsante
}

if(isset($_POST['Submit2'])) {
   // è stato premuto il secondo pulsante
}

 :bye:

hmmm...si si. :)

Ho fatto così.

Dimmi se può andare bene come impostazione, per piacere.

Non richiamo 2 funzioni differenti ma la stessa (quella che fa l'upload di dati).

Alla fine della stessa (dopo che sono stati caricati i dati) inserisco il tuo codice:

.............

   // chiudo la connessione a MySQL

    @mysql_close($cn);

    

    if(isset($_POST['Submit1'])) {

   $link = "scadenze.php";

   $mess = "Dati inseriti correttamente"; 

rindirizzo("check.php?task=for1&link=$link&messaggio=$mess",0);   

}

if(isset($_POST['Submit2'])) {

    $_SESSION['docplus'] = $doc; 

    $_SESSION['inputplus'] = $inputdata;

    $_SESSION['desplus'] = $descrizione;

    $_SESSION['idplus'] = $id_fornitori;

    $_SESSION['importoplus'] = $importo;

    $_SESSION['noteplus'] = $note;

 

 rindirizzo("check.php?task=plus",0);   

}

Se è stato cliccato il primo submit faccio il solito re-indirizzamento che richiama una pagina con una funzione di conferma.

Se è stato cliccato il secondo submit re-indirizzo alla stessa pagina di controllo ma ho esteso la funzionalità (termine improprio..lo so che si usa per le classi, ma lasciatemi almeno l'illusione che le sappia già usare  ;D :P)

della stessa aggiungendo una funzione che a sua volta indirizza alla pagina con la funzione che genera il form che riceve i dati delle sessioni (gli stessi inseriti dall'utente la prima volta-o N volte precedenti) che andranno a riempire i value degli imput.

//parte di pagina check.php

..................

function plus(){

   

   $okplus="Operazione riuscita. Sarai indirizzato alla stessa pagina";

   $linkplus="scadenze.php?task=nuovaplus";

 echo "<br><br>

   <div align=\"center\"> 

   <table width=\"80%\" height=\"124\">

   <tr><td> 

      <p align=\"center\"><span style=\"background-color: #00FF00\"> <strong> $okplus</span></strong></td>

   </tr>

   <tr><td> 

   <p align=\"center\"> &nbsp;&nbsp; Attendi il caricamento oppure clicca <a href=\"$linkplus\">qui</a></td>

   </tr>

   </table>

   </div>";

   

   rindirizzo("$linkplus",2);     

}

............

switch($_REQUEST['task']) {

case 'for1':

        for1($_REQUEST['link'],$_REQUEST['messaggio']);

        break;

case 'plus':

        plus();

        break;

}

infine nella pagina scadenze ho aggiunto una nuova funzione che produce il nuovo form di cui sopra

............

//ho fatto solo una prova echo

function nuovaplus(){   

   $docplus2 = $_SESSION['docplus'];

   echo $docplus2;

   }

.....

//+ lo switch ovviamente

In pratica faccio la modifica da te suggerita applicandola alla stessa funzione che si occupa di uploadare i dati,

cambiando solo il re-indirizzamento e qualche altra riga di codice.

Volevo scrivere una nuova funziona upload ma mi sono accorto che è inutile (spero.. devo ancora testare tutto) faccio prima ad utilizzare la stessa che contiene già tutti i controlli sugli input dei dati.

Che ne pensi?

risposto 5 anni fa
frankphp
X 0 X

credo sia tutto ok  :bye:

risposto 5 anni fa
Gianni Tomasicchio
X 0 X
credo sia tutto ok  :bye:

si infatti ho fatto le prove e va tutto ok.

Grazie.

risposto 5 anni fa
frankphp
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda