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

    che antipatico sto select (form)

    A volte le cose più semplici generano dei mostri di codice, almeno così mi pare di avere capito:
    il problema è semplice, riproporre all'utente i dati inseriti nel form qualora ci fosse qualche errore e permettergli di correggere senza riscrivere il tutto, e se la select è chilometrica (tipo lenco di cap città stati etc etc...)?

    cercando per la rete si trovano soluzioni di questo tipo: (presa da allwebfree)

    Codice PHP:
    <select name=\"opzione\" size=\"1\" >
    <option"
    ;
    if(
    $opzione==""){echo" selected ";}//verifica se l'opzione prima è stata selezionata, se si scrive selected
    echo" value=\"\">------</option>
    <option"
    ;
    if(
    $opzione=="seconda"){echo" selected ";}//verifica se l'opzione seconda è stata selezionata, se si scrive selected
    echo" value=\"seconda\">seconda</option>
    </select> 
    Altre soluzioni sono simili, ma tutte comportano una valanga di codice (e di if) esagerati per l'obbiettivo cercato!possibile?

    qualcuno di voi conosce una soluzione più elegante o più breve?

  2. #2
    Basta che per creare la select usi un array, dopodichè puoi usare un ciclo:

    $elencoselect=array("prima"=>"prima scelta","seconda"=>"seconda scelta");
    foreach($elencoselect as $value => $item):
    if ($opzione==$value):
    //output della option con selected=selected
    else:
    //output della option SENZA selected
    endif;
    endforeach;

    Comunque, se non lo fai già, mi raccomando proteggi le variabili in ingresso dalla form: non usare direttamente $opzione ma usa $_GET["opzione"] o $_POST["opzione"] ed effettua una validazione dei valori passati...

    Ciao!
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    129
    grazie shores, la soluzione semplifica enormemente (almeno in lunghezza) il php, rimane il fatto che per individuare l'elemento della select bisogna mettere sotto if tutti i valori delle <option>,
    risultato: il select è il più antipatico di tutti gli elementi form!!


  4. #4
    Originariamente inviato da hhchnos
    grazie shores, la soluzione semplifica enormemente (almeno in lunghezza) il php, rimane il fatto che per individuare l'elemento della select bisogna mettere sotto if tutti i valori delle <option>,
    risultato: il select è il più antipatico di tutti gli elementi form!!

    Ma hai letto bene il mio codice? NON c'è nessun bisogno di mettere un gigantesco if!

    Leggi attentamente il mio codice e vedrai che QUALSIASI sia il numero delle opzioni che metti nell'array hai comunque solo due righe di codice dentro al ciclo!
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  5. #5
    Codice PHP:
    <select name="option">
        <option value="">-----</option>
    <?php
        $elencoselect
    =array("prima"=>"prima scelta","seconda"=>"seconda scelta");
        foreach(
    $elencoselect as $value => $item):
        if (
    $opzione==$value):?>
        <option selected="selected" value="<?=$value;?>"><?=$item;?></option>
    <?    else:?>
        <option value="<?=$value;?>"><?=$item;?></option>
    <?    endif;
        endforeach;
    ?>
    </select>
    Così forse è più chiaro!
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    129
    Si certo shores, non ci siamo capiti, il codice è chiarissimo, la considerazione che facevo era riferita alla differenza fra <select> e gli altri campi (fa eccezzione il radio ovviamente), fare ogni volta un ciclo di tanti elementi per assegnare un semplice selected="selected" mi sembrava una cosa un po stupida, ma questo dipende dalla struttura dell'html, il tuo codice è perfetto grazie ancora!

  7. #7
    Originariamente inviato da hhchnos
    Si certo shores, non ci siamo capiti, il codice è chiarissimo, la considerazione che facevo era riferita alla differenza fra <select> e gli altri campi (fa eccezzione il radio ovviamente), fare ogni volta un ciclo di tanti elementi per assegnare un semplice selected="selected" mi sembrava una cosa un po stupida, ma questo dipende dalla struttura dell'html, il tuo codice è perfetto grazie ancora!
    Perdonami, ma il ciclo lo devi fare PER CREARE GLI OPTION, ANCHE se non intendi metterne selected uno... quindi non vedo che cose ci sia di strano: se vuoi creare una select che permetta di scegliere tra 10 opzioni, devi creare 10 tag option, mi sembra naturale... Gli altri campi non hanno una scelta limitata tra n possibilità, quindi sono più semplici da indicare proprio per questo...

    Ciao!
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    129
    si è vero, il mio intento iniziale infatti non era creare gli option con un ciclo ma scriverli per esteso , questo per alleggerire un po il php, tu mi dirai.. non alleggerisci più di tanto in questo modo... ehehe vabbè ci siamo capiti ciaoo!!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.