Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2019
    Messaggi
    30

    Form PHP che indirizza a pagine diverse a seconda dei valori scelti

    Buonasera, mi sono appena iscritto qui sul forum, sono Luigi da Napoli, e il mio problema è il seguente:
    ho fatto due semplici pagine in php, un form, con degli input, che restituisce un'altra pagina in cui viene semplicemente fuori un testo con le variabili provenienti dal form, e fin qui tutto ok. Il problema che non riesco a risolvere, essendo quasi a secco di php, è indirizzare quel form su pagine differenti a seconda di un determinato valore inserito in un input.
    Più chiaro forse se faccio un esempio.
    Nel forma io vado a impostare tre input: nome, cognome, telefono e ad esempio una domanda, dove seleziono da un menù a tendina la risposta.
    Nella pagina successiva, generata da form tramite un submit, io dovrei riuscire a far aprire una pagina piuttosto che un'altra, o un'altra ancora, a seconda della risposta slezionata nel form.
    Spero di essere stato il più chiaro possibile.

    Grazie mille.
    Luigi.

  2. #2
    Utente di HTML.it L'avatar di lukezz
    Registrato dal
    Feb 2010
    Messaggi
    494
    Ciao mrboh78,

    io risolverei usando Javascript/ajax così da indirizzare l'utente alla pagina in base alla scelta effettuata dal form.

  3. #3
    Quote Originariamente inviata da lukezz Visualizza il messaggio
    Ciao mrboh78,

    io risolverei usando Javascript/ajax così da indirizzare l'utente alla pagina in base alla scelta effettuata dal form.
    A mio avviso la strategia corretta è utilizzare gli attributi formaction formmethod e colleghi del tag <button type="submit">, senza nessun bisogno di chiamare in causa javascript o ajax!

    In realtà questo è anche più corretto dal punto di vista della ergonomia: la verità è che una maschera che può portare a tre diverse meschere successive, dovrebbe farlo con dei bottoni, che chiariscono che stai facendo tre operazioni diverse e non con un solo bottone che sembra indicare che l'operazione successiva sarà sempre la stessa...

    Se proprio vuoi che la scelta sia basata su una select drop down, almeno reagisci al cambio di valore della select cambiando l'attributo formaction del singolo tasto submit e basta...
    Ultima modifica di Shores; 06-10-2019 a 14:08
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2019
    Messaggi
    30
    Ciao, grazie mille per le risposte, spiegandomi meglio però, io non ho bisogno di aprire più pagine con un solo button, ma una sola che mi restituisca un testo piuttosto che un altro, nella mia fattispecie sono 8 variabili, alla selezione di un determinato valore selezionato da un menù a tendina.
    Per adesso ho risolto in modo molto arcaico inserendo nella pagina generata la variabile relativa al menù a tendina in oggetto, e per ogni elemento del menù a tendina vado a scrivere il testo che voglio che compaia nell' option value, risposto qui un breve esempio che forse è meglio.

    codice:
    <select name='opzione'>
        <option value="" selected="selected">- SELEZIONA -</option>
        <option value="<p>Titolo Opzione 01</p>
    <p>Testo Opzione 01</option>
        <option value="<p>tiolo opzione02</p>
    <p>Testo opzione 02</option>
    E vado poi a richiamarlo nella pagina inserendo la variabile.

    Grazie
    Luigi

  5. #5
    Quote Originariamente inviata da mrboh78 Visualizza il messaggio
    Ciao, grazie mille per le risposte, spiegandomi meglio però, io non ho bisogno di aprire più pagine con un solo button, ma una sola che mi restituisca un testo piuttosto che un altro, nella mia fattispecie sono 8 variabili, alla selezione di un determinato valore selezionato da un menù a tendina.
    Per adesso ho risolto in modo molto arcaico inserendo nella pagina generata la variabile relativa al menù a tendina in oggetto, e per ogni elemento del menù a tendina vado a scrivere il testo che voglio che compaia nell' option value, risposto qui un breve esempio che forse è meglio.

    codice:
    <select name='opzione'>
        <option value="" selected="selected">- SELEZIONA -</option>
        <option value="<p>Titolo Opzione 01</p>
    <p>Testo Opzione 01</option>
        <option value="<p>tiolo opzione02</p>
    <p>Testo opzione 02</option>
    E vado poi a richiamarlo nella pagina inserendo la variabile.

    Grazie
    Luigi
    Questo che hai scritto è ASSOLUTAMENTE errato, e anche PERICOLOSISSIMO.

    E' errato perchè la value di una option non deve MAI contenere del codice HTML, è vietato.
    E' pericolosissimo perchè molto probabilmente tu starai inserendo nella pagina (magari con un echo $_POST("opzione")) quel codice che hai messo nella value della option, aprendo la porta a molti diversi vettori di attacco.
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2019
    Messaggi
    30
    Perfetto, o meglio, molto male.
    Come posso ovviare quindi a questo?
    Premesso che comunque queste sono pagine che devono andare solo su una intranet.

    Nella pagina io comunque la richiamo semplicemente inserendo la variabile assegnata, $var1, che mi restituisce il testo che immetto nel campo "option value".

    Grazie.
    Luigi

  7. #7
    Perdonami, ma per aiutarti meglio, potresti postare almeno il codice della maschera, se non magari anche quello del php che gestisce i dati in arrivo dalla maschera?
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2019
    Messaggi
    30
    Ciao,
    questa è la parte del codice inserita nella pagina del form:

    codice:
    <form method="POST" name="registrazione" target="_blank">
    <div class='opzione'>OPZIONE:<br />
    <div id='description0' style='display: ;' >&nbsp;</div>
    <div id='description1' style='display: none;'>
    <select name='opzione01'>
    	<option value="" selected="selected">- SELEZIONA -</option>
    	<option value="<p>OPZIONE 01</p>
    <p>TESTO OPZIONE 01</p></option>
    	<option value="<p>OPZIONE 02</p>
    <p>TESTO OPZIONE 02</p></option>
    	<option value="<p>OPZIONE 03</p>
    <p>TESTO OPZIONE 03</p></option>
    	</select>
    </div>
    </form>
    Mentre questa è la parte del codice della pagina php che viene restituita all'invio del form:

    codice:
    <?php
    
    
    $var1= $_POST['opzione'];
    
    
    echo"
    <form action='' method=''>
    
    
    <p class='opzione'>$var1</p>
    </form>"
    
    
    ;
     
     
    ?>
    Logicamente ho ripulito da tutte le altre cose che non occorrono tipo div e altri campi che funzionano.

    Grazie Luigi

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Forse ho capito male, ma se tu hai un form e vuoi che nella pagina che ti si apre dopo il submit tu abbia valori diversi in corrispondenza ad input diversi non devi fare nulla di troppo strano, e non ti servono più pagine chiamiamole di destinazione.


    Basta che nella pagina php che gestisce il submit del form tu usi un if o uno switch per visualizzare contenuti diversi in base ai dati che ti vengono inviati dal form.


    codice:
    Pagina HTML
    
    
    <form action="/submit.php" method="post">
      <select name="opzioni">
        <option value="opzione1">opzione1</option>
        <option value="opzione2">opzione2</option>
        <option value="opzione3">opzione3</option>
      </select>
    </form>
    
    
    Pagina submit.php
    
    
    <?php
    $opzione = $_POST['opzione']; // qui dovresti usare filter_input() io non lo faccio per semplificare
    switch ($opzione) {
        case 'opzione1':
            echo 'Contenuti per opzione1';
            break;
        case 'opzione2':
            echo 'Contenuti per opzione2';
            break;
        case 'opzione3':
            echo 'Contenuti per opzione3';
            break;
    }
    ?>

    p.s. occhio che nel codice che hai scritto sopra ci sono diversi errori.

Tag per questa discussione

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.