Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662

    Ricompilare form select dopo validazione

    Buongiorno a tutti!
    (quest oggi è bella!)

    Dunque, in un form ho un campo data di nascita composto da 3 select (giorno, mese, anno).

    I dati li passo ad una pagina per validarli con un checkdate.
    Ora, se per qualche motivo la data è sbagliata o incompleta (es 31/04/1983), oppure manca qualche altro dato nel form, mi rimbalza alla pagina del form.

    Come accade per i campi input che vengono ricompilati, vorrei che venisse riselezionata la data come l'aveva selezionata l'utente.

    Come si fa?

    Io avevo pensato (molto elementarmente credo) di inserire (tipo per l'anno) ad ogni select un echo tipo:
    <?php echo $anno1983 ?>
    dove nella pagina di validazione c'è un controllo tipo:
    if ($anno == 1983){
    $anno1983 = "selected='selected'";
    }
    elseif($anno == 1984){
    $anno1984 = "selected='selected'";
    }
    else($anno == 1985){
    $anno1985 = "selected='selected'";
    }

    solo che in questo modo (avendo solo per l'anno oltre 100 select) mi verrebbe un listato infinito!!!

    Una soluzione potrebbe essere uno switch, ma sempre una cosa infitina verrebbe con tutti i case.

    Un ciclo for? ...tipo:

    for(i=1900;i<=2010;i++){
    if($anno == i){
    $anno . i= "selected='selected'";
    }
    else{
    $erranno=1;
    }
    }

    Che ne dite, può andare?
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  2. #2
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    io l'ho fatto con javascript

    file js da includere
    Codice PHP:
    function seleziona_select(nomesel,testo)
    {
        var 
    idx document.getElementById(nomesel);

        for(var 
    k=0;k<idx.options.length;k++)
        {
                if(
    idx.options[k].value==testo)
                 {
                      
    idx.selectedIndex=k;
                      break;
                }
          }

    file della form php
    Codice PHP:
    <select name="mese" id="mese">
        <option></option>
        <option value="1">Gennaio</option>
        <option value="2">Febbraio</option>
        <option value="3">Marzo</option>
        <option value="4">Aprile</option>
        <option value="5">Maggio</option>
        <option value="6">Giugno</option>
        <option value="7">Luglio</option>
        <option value="8">Agosto</option>
        <option value="9">Settembre</option>
        <option value="10">Ottobre</option>
        <option value="11">Novembre</option>
        <option value="12">Dicembre</option>
    </select>

    <?php
        
    if(isset($_SESSION['mese']))
        {
    ?>
            <script type="text/javascript">
            seleziona_select('mese',<?php echo $_SESSION['mese'?>);
            </script>
    <?php
        
    }    
    ?>

  3. #3
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    CIao Stefano!
    Grazie per la prontezza nella risposta (come sempre )

    Ho provato come mi dici... ho incluso il file js nel file headerinfo.php (dove ci sono i js, css, title e tutto ciò che va sopra) e nel form ho scritto come mi dici:

    Codice PHP:
    <select name="mese" id="mese" class="selectDate1 <?php echo $err_input_data ?>">
        <option>mm</option>
        <option value="01" >1</option>
        <option value="02" >2</option>
        <option value="03" >3</option>
        <option value="04" >4</option>
        <option value="05" >5</option>
        <option value="06" >6</option>
        <option value="07" >7</option>
        <option value="08" >8</option>
        <option value="09" >9</option>
        <option value="10" >10</option>
        <option value="11" >11</option>
        <option value="12" >12</option>
    </select>

    <?php
        
    if(isset($_SESSION['reform'][6]))
        {
    ?>
            <script type="text/javascript">
            seleziona_select('mese',<?php echo $_SESSION['mese'?> );
            </script>
    <?php
        
    }    
    ?>
    ...ma non va

    Ma in php sarebbe troppo "pesante"? (nel senso che ci metterebbe più tempo a elaborare?)
    Il ciclo for che ho riportato è errato?

    Graziegrazie!!

    -------------

    aspetta aspetta... forse la variabile non è $_SESSION['mese'] ma è in un array... arrivo...

    -----------------

    Si era in un array, ho corretto il codice, ma non va comunque...

    --------------

    Errata corrige dell'errata corrige... FUNZIONAAA!!!! sei un mito... non ho capito come funziona ma adesso mi prendo un quarto d'ora per studiarmi il codice!!

    graziegraziegraziegraziegraziegraziegraziegraziegr aziegraziegrazie
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  4. #4
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    se vai da una pagina all'altra senza sessione come fai a ricordarti cosa aveva selezionato l'utente?

  5. #5
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    perdonami... aggiornavo il post man mano che testavo, mi accorgevo di errori, e ritestavo...

    ..provo a capire come funziona... grazie ancora!
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

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.