Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    28

    Selezione tramite menù a tendina dopo submit

    Buongiorno ragazzi,

    ho un problema con un form html.
    Io usando il metodo GET (devo usare per forza questo) seleziono un campo nel menù a tendina, ma dopo che effettuo il submit lui non mi mantiene la selezione nella tendina.

    Vi posto il codice:

    Codice PHP:
     <form name="frm_search" action="<?php echo $_SERVER['PHP_SELF'];?>" method="get">

    <div class="txt-search">                        Sesso : <select name="sex" >

                <option value="" >Seleziona</option>

                <option value="M">M</option>

                <option value="F">F</option></select>

                 </div>
    <button type="submit" class="subm";>Cerca</button>

    </form>
    Vi allego anche i print per essere più chiaro
    1.jpg
    2.jpg
    3.jpg

    Le foto le ho aggiunte in sequenza. Io vorrei appunto che nell'ultimo passaggio restasse la mia selezione.

    Grazie

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Poiché la pagina viene ricaricata dopo il submit, ti ritroverai per forza di cose con il form così come se ci arrivassi per la prima volta.
    La soluzione è modificare lo script che riceve i dati facendogli mettere in sessione ciò che riceve.
    In questo modo nella pagina col form puoi verificare se tali dati in sessine esistono (il che vuol dire che almeno una volta è stato compilato) ed usarli per inizializzare i campi del form.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    28
    Grazie per la rapida risposta, quello che dici tu l'avevo intuito ma non so come metterla giù.
    Riusciresti a darmi una mano?

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Per mettere i dati in sessione basta fare così nello script che riceve i dati
    $_SESSION['sex'] = $_GET['sex'];

    Nel form inizializzi il menu così
    Codice PHP:
    <select name="sex">
        <option value="" >Seleziona</option>
        <option value="M" <?php echo $_SESSION['sex'] == 'M' 'selected="selected"' '' ?>>M</option>
        <option value="F" <?php echo $_SESSION['sex'] == 'F' 'selected="selected"' '' ?>>F</option>
    </select>
    Ricorda che all'inizio dei file in cui usi $_SESSION devi mettere come prima istruzione
    session_start()
    e questa non deve essere preceduta da alcun output, neanche uno spazio vuoto o un ritorno a capo.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    28
    Grazie ma mi dice che non trova la index: sex giustamente.
    Non ho capito molto cosa devo fare con session start().

    scusa la mia ignoranza.
    Ultima modifica di dada124; 02-04-2014 a 12:12

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    session_start(); (c'è l'underscore, è tutta una funzione, le parole non vanno separate)
    devi semplicemente scriverlo all'inizio dei file dove vuoi usare le variabili di sessione, ne abilita l'uso.

    Se la prima volta che vai sulla pagina ti dice che non trova l'index allora modifica così

    <?php echo (isset($_SESSION['sex']) && $_SESSION['sex'] == 'M') ? 'selected="selected"' : '' ?>

    di conseguenza anche l'altra.

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    28
    Ok adesso mi tiene la select ma non mi trova più i miei dati dal database.
    Perchè?

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Non ho idea di cosa ci fai e come lo fai, quindi non so che dirti.

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    28
    Sto facendo un po' di prove ed è questo codice qui che da problemi:

    <?php echo (isset($_SESSION['sex']) && $_SESSION['sex'] == 'M') ? 'selected="selected"' : '' ?>
    il codice l'ho strutturato così:

    Codice PHP:
     <div class="txt-search">

             <?php 

             session_start
    ();

             
    $_SESSION['sex'] = $_GET['sex'];

              
    ?>                          Sesso : <select name="sex" >

                <option value="" >Seleziona</option>

                <option value="M" <?php echo (isset($_SESSION['sex']) && $_SESSION['sex'] == 'M') ? 'selected="selected"' '' ?>>M</option>

                <option value="F"<?php echo (isset($_SESSION['sex']) && $_SESSION['sex'] == 'F') ? 'selected="selected"' '' ?> >F</option></select>

                 </div>

              <?php  session_destroy(); ?>

  10. #10
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Già questo non va bene

    <div class="txt-search">
    <?php
    session_start();

    Ti ho detto che session_start(); non deve essere preceduto da alcun output e il div è un output.
    Output è tutto ciò che viene mostrato sulla pagina.

    I file dove devi usare le variabili di sessione devono iniziare tutti così

    <?php session_start(); ?>

    prima non deve esserci niente, poi ci metti quello che ti pare.

    Di nuovo, col db non ho idea di come ci interagisci, quindi non posso dirti perché non ti funziona.

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.