Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208

    selected:selected su campo <option>

    Salve a tutti,
    in realtà questo non è esattamente un problema che espongo, ma la ricerca di un consiglio.

    Ho creato un form in una classe che stampa l'html, e si ricarica popolato qualora non venga passato il check dei dati.

    Per i campi text, il la cosa si risolve semplicemente utilizzando il construct che istanzi le variabili $_POST come variabili utilizzabili nella dichiarazione del value, oppure queste rimangono dichiarate vuote di partenza.

    Codice PHP:
    public function __construct() {
               if (isset(
    $_POST['submit'])) {
                      
    $this->old_id $_POST['old_id'];
                      
    $this->cognome $_POST['cognome'];
                      
    $this->nome $_POST['nome'];
                       
    //etc.etc 
    il problema si pone per alcuni campi di tipo select, poichè la selezione la fa un "selected:selected" sull'option corrispondente.

    Avrei risolto con uno switch, cosa che funziona perfettamente, ma che fa un pò a pugni con l'ottimizzazione del codice che avrei voluto ottenere:

    Codice PHP:
    switch ($this->tipo_socio_id) {
                case 
    '':
                      
    $body .=  "<option value='' selected: selected>(vuoto)</option>                                                                <option value='1'>P</option>                                                                                                <option value='2'>E</option>                                 
                                     <option value='3'>D</option></select></label><br>"
    ;
                      break;
                case 
    '1':
                      
    $body .= "<option value=''>(vuoto)</option>
                                     <option value='1' selected: selected>P</option>                                                                       <option value='2'>E</option>
                                     <option value='3'>D</option></select></label><br>"
    ;
                      break;
                case 
    '2':
                      
    $body .= "<option value=''>(vuoto)</option>
                                     <option value='1'>P</option>                                                                                               <option value='2' selected:selected>E</option>
                                     <option value='3'>D</option></select></label><br>"
    ;
                      break;
                case 
    '3':
                      
    $body .= "<option value=''>(vuoto)</option>
                                     <option value='1'>P</option>                                                                                               <option value='2'>E</option>
                                     <option value='3' selected:selected>D</option></select></label><br>"

    Considerate che questi erano 3 option, ne ho un altro che con il campo vuoto ne fa 21, il che vuol dire circa 450 linee di codice per un singolo switch. Forse un pò troppe.

    Letta la cosa, avete per caso un suggerimento su come ridurre la cosa o non c'è speranza?
    Grazie!
    Ultima modifica di Korenaar; 17-03-2014 a 16:50

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208
    Per un foreach devo però creare un array degli indici necessari....o sbaglio?

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208
    Provo a vedere se ho capito come va strutturata sta cosa, grazie per ora. Se qualcuno vuole postare qualche chiarimento è ben accetto

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208
    Si amico mio, ti ringrazio!!!

    ho fatto così:

    Codice PHP:
    public $sex = array('0' => '(vuoto)''1' => 'M''2' => 'F');

              foreach (
    $this->sex as $numero => $value) {            if ($this->sesso == $numero) {                $body .= "<option value = '$value' select=selected>$value</option>";            } else {                $body .= "<option value = '$value'>$value</option>";            }        } 
    Funziona alla grandissima e il codice è ipersnello. Grazie mille, non so se ci sarei arrivato senza un'imbeccata!

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208
    Probabilissimo, e ci arriverò passo passo, considerato da dove sono partito con questa storia un mese fa....

    A tal riguardo ho una domanda: nel ciclo ho usato le variabili $numero e $ value. Dato che le select di questo tipo sono più di una, è opportuno usare per ogni ciclo variabili diverse (ES: $numero2 e $value2 etc.etc) o posso riutilizzare sempre la stessa etichettatura?

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208
    Già, questione di scope immagino. potevo arrivarci da solo thank you!

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.