Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Post Con Button.

  1. #1

    Post Con Button.

    Ciao a tutti

    ho un problema (semplice) ma che non ne vengo a capo.

    Spiego l'esempio che riporto sotto , diciamo che ho 3 o 4 tasti button che si riferiscono a un determinato valore, come posso tramite il POST (o altra soluzione se esiste) nella NUOVA pagina aperta sapere a quale valore si riferiva il button premuto?

    Codice PHP:
    //html
    <SCRIPT language=JavaScript>
    function 
    stampa() {window.open('stampa_offerta.php','Window_Name');}
    </SCRIPT>

    .....



    <form method='post' >
    <input type='submit' onclick=stampa() value='stampare' name='nome1' />
    <input type='submit' onclick=stampa() value='stampare' name='nome2' />
    <input type='submit' onclick=stampa() value='stampare' name='nome3' />
    </form> 

    e quindi, la pagina presente dovrebbe rimanere aperta, e nella seconda che si apre, dovrei riuscire a leggere il POST, solo che nn riesco:

    Codice PHP:
    echo $_POST[] 
    So che dovrei mettere la - action='stampa_offerta.php' - dentro la definizione del form, è solo che vorrei aprire la nuova pagina.

    Sul sito c'è un capitolo che inizia proprio con questo problema, solo che non riesco ad applicarlo.

    Mi sapete dare una dritta gentilmente??

    Grazie a tutti!

  2. #2
    Utente di HTML.it L'avatar di costi31
    Registrato dal
    Nov 2007
    Messaggi
    345
    Ciao Agiuffo. Per inviare i dati del form a "stampa_offerta.php" aprendola in un'altra scheda/finestra, non c'è bisogno che usi javascript. Basta che imposti l'attributo target del form su "_blank":

    codice:
    <form action='stampa_offerta.php' method='post' target='_blank'>
    <input type='submit' value='stampare' name='nome1' />
    <input type='submit' value='stampare' name='nome2' />
    <input type='submit' value='stampare' name='nome3' />
    </form>
    Però comunque ti avviso che l'attributo del form è deprecata da html 4.01, come dice sul sito del w3:
    "The target attribute of <form> is not supported in HTML 4.01 Strict / XHTML 1.0 Strict DTD."

  3. #3
    ciao Costi31, e grazie della prontezza. ormai sono in debito

    il fatto del '_blank' mi apre una nuova scheda, non una nuova finestra, ma cmq va anche bene lo stesso e ti ringrazio.

    ora il codice l'ho scritto in diversi modi, ma non riesco a capire qual'è il modo giusto,
    nel senso che come segue è come dovrebbe essere secondo me:

    Codice PHP:
    echo '<form method="post" action="stampa_offerta.php" target="_blank"><table>';
    foreach (
    $_SESSION['clienti'] as $val) {
    echo 
    '<tr><td>'.$val.'</td><td><input type="submit" value="stampa" name="'.$val.'"></td></tr>';}
    echo 
    "</table></form>"
    nella seconda pagina ho il seguente codice, con il quale devo riuscire a sapere quale bottone ho premuto:
    Codice PHP:
    echo $_POST['']; 
    solo che non mi da niente.

    Se invece nella prima scrivo le istruzioni cosi:
    Codice PHP:
    echo '<tr><td>'.$val.'</td><td><input type="submit" value="'.$val.'" name="val[]"></td></tr>'
    comunque non esce niente.
    qual'è il modo giusto?

  4. #4
    Utente di HTML.it L'avatar di costi31
    Registrato dal
    Nov 2007
    Messaggi
    345
    Io farei così nella pagina del form: (name="val")

    Codice PHP:
    echo '<form method="post" action="stampa_offerta.php" target="_blank"><table>';
    foreach (
    $_SESSION['clienti'] as $val) {
    echo 
    '<tr><td>'.$val.'</td><td><input type="submit" value="'.$val.'" name="val"></td></tr>';
    }
    echo 
    "</table></form>"
    Poi per stampare il valore del pulsante premuto fai così:

    Codice PHP:
    echo $_POST['val']; 

  5. #5
    ok, e se invece facessi una cosa del tipo
    prima pagina:
    Codice PHP:
    '<tr><td>'.$val.'</td><td><input type="submit" value="stampa" name="'.$val.'"></td></tr>'
    seconda pagina:
    Codice PHP:
    foreach ($_SESSION['clienti'] as $cliente){
    if (isset(
    $_POST['.$cliente.'])){
    echo 
    $_POST['.$cliente.']
    }


    ??

  6. #6
    Utente di HTML.it L'avatar di costi31
    Registrato dal
    Nov 2007
    Messaggi
    345
    Originariamente inviato da agiuffo
    ok, e se invece facessi una cosa del tipo
    prima pagina:
    Codice PHP:
    '<tr><td>'.$val.'</td><td><input type="submit" value="stampa" name="'.$val.'"></td></tr>'
    seconda pagina:
    Codice PHP:
    foreach ($_SESSION['clienti'] as $cliente){
    if (isset(
    $_POST['.$cliente.'])){
    echo 
    $_POST['.$cliente.']
    }


    ??
    Hai fatto degli errori nel codice della seconda pagina. Quando richiami il valore dell'array $_POST (come di qualsiasi altro array) se usi una variabile per il nome della chiave non devi inserire gli apici come hai fatto tu.
    Quindi modifica in questo modo:
    Codice PHP:
    foreach ($_SESSION['clienti'] as $cliente){
        if (isset(
    $_POST[$cliente])){
            echo 
    $_POST[$cliente]
        }

    Comunque posso solo dirti di provare perchè non so come siano collegate le variabili $_POST[$cliente] e $var della prima pagina. Poi non ho capito bene l'intenzione finale di quello che vuoi fare.

  7. #7
    praticamente volevo sapere se dato un form dove ci sono diversi bottoni tutti con scritto 'stampa', si riesce a sapere quale bottone è stato premuto passando il dato alla nuova pagina.




    ps: con il codice seguente non succede niente..
    Codice PHP:
    foreach ($_SESSION['clienti'] as $cliente){ 
        if (isset(
    $_POST[$cliente])){ 
            echo 
    $_POST[$cliente
        } 


  8. #8
    Utente di HTML.it L'avatar di costi31
    Registrato dal
    Nov 2007
    Messaggi
    345
    Originariamente inviato da agiuffo
    praticamente volevo sapere se dato un form dove ci sono diversi bottoni tutti con scritto 'stampa', si riesce a sapere quale bottone è stato premuto passando il dato alla nuova pagina.




    ps: con il codice seguente non succede niente..
    Codice PHP:
    foreach ($_SESSION['clienti'] as $cliente){ 
        if (isset(
    $_POST[$cliente])){ 
            echo 
    $_POST[$cliente
        } 

    Per il codice, non va perchè non è stata inviata una variabile post che ha come nome il valore di $cliente, oppure il suo valore è vuoto.

    Invece tornando a quello che vuoi fare, ci sono due soluzioni più o meno comode a seconda di come hai strutturato il tuo codice.

    1 - Se hai inserito tutti i pulsanti in un unico form e conosci tutti i nomi che possono avere:
    nella seconda pagina inserisci tutti i nomi possibili in un array poi con un foreach controlli se la variabile post con quel nome è settata con isset, ovvero se è stato premuto il pulsante con quel nome.

    2 - (molto più comoda) Se hai inserito i pulsanti ognuno in un form diverso:
    aggiungi in ogni form anche un campo hidden che ha un certo nome fisso in tutti i casi e il valore che invece è diverso per ogni form e pulsante. Poi nella seconda pagina recuperi il valore del campo hidden così sai quale form è stato inviato e quindi anche quale pulsante è stato premuto.

    Tutto chiaro?


  9. #9
    perbacco amico, la seconda soluzione è quella a cui stavo aspirando!

    ..a parte gli eufemismi.. adesso provo subito, mi sembra vicino alla soluzione..

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.