Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Belka wyboru SELECT
Forum PHP.pl > Forum > Przedszkole
kda
Witam,
Mam problem z automatycznym ustawieniem się na konkretnej wartości. W tabeli dla każdego użytkownika mam zapisaną wartość odnośnie ważności chasła, powiedzmy dla Kowalskiego mam 45 , po wejściu w edycję konta wyciągam ją pod zmienną $waznosc
Jak zrobić aby ten kawałek skryptu wiedział że pod zmienną $waznosc jest 45 i ustawił selecta właśnie na tą wartość. Aktualnie co wejdę na stronę lub przeładuję stronę domyślnie ustawia mi się na pierwszym od góry czyki 30.

  1. print '<TR><TD><i>Ważność hasła:</i></TD><TD>
  2. <select name="waznosc_hasla" size="1">
  3. <option value="30">30</option>
  4. <option value="45">45</option>
  5. <option value="60">60</option>
  6. </select>
  7. </TD></TR>';
maviozo
<option value="45" selected>45</option>
kkpre
bardziej łopatologiczny kod, zapewne łatwiej będzie Ci go zrozumieć

  1. print '<TR><TD><i>Ważność hasła:</i></TD><TD>
  2. <select name="waznosc_hasla" size="1">';
  3. if($waznosc==30) print '<option value="30" selected="selected">30</option>'; else print '<option value="30">30</option>';
  4. if($waznosc==45) print '<option value="45" selected="selected">45</option>'; else print '<option value="45">45</option>';
  5. if($waznosc==60) print '<option value="60" selected="selected">60</option>'; else print '<option value="60">60</option>';
  6.  
  7. print '</select></TD></TR>';



a ja bym to zrobił tak

  1. $arr = array('30','45','60'); // tablica z mozliwymi wartosciami
  2.  
  3. echo '<TR><TD><i>Ważność hasła:</i></TD><TD><select name="waznosc_hasla" size="1">';
  4.  
  5. foreach($arr as $val) { // pętla wyswietlająca optiony do kazdej wartosci z tablicy $arr
  6. if($val==$wartosc) { $selected="selected"} else $selected=""; // sprawdzenie czy $wartosc = $obecna_wartosc_optiona
  7. echo "<option value='$val' $selected>$val</option>"; // wyswietlenie kodu option, (selected będzie tylko przy tej wartosci, która spełni powyższy warunek)
  8. }
  9.  
  10. echo '</select></TD></TR>';
kda
@kkpre

Właśnie o coś takiego mi chodziło, pierwsza opcja działa wyśmienicie i jest łatwiejsza, a druga wygląda bardziej skomplikowanie ale w późniejszym ewentualnym dodaniu jakieś wartości do wyboru będzie łatwiej, tyle że coś nie chce działać, wywala błąd:
Parse error: syntax error, unexpected '}'
Co pod zmienną $wartosc ma być ?
kkpre
pisałem to na poczekaniu tongue.gif czasami samemu można poszukać błędu
zabrakło średnika w 8 linii

zamień

  1. if($val==$wartosc) { $selected="selected"} else $selected=""; // sprawdzenie czy $wartosc = $obecna_wartosc_optiona

na
  1. if($val==$wartosc) $selected="selected"; else $selected=""; // sprawdzenie czy $wartosc = $obecna_wartosc_optiona





Cytat
Co pod zmienną $wartosc ma być ?


No liczba 30,45 lub 60.
Napisałeś że wyciągasz ją z bazy i wrzucasz do zmiennej $waznosc wink.gif
Zamien $wartosc na $waznosc

  1. if($val==$waznosc)
kda
jeszcze raz dzięki za pomoc
f#a#oo
Odświeżę temat. Mam podobny problem i podany sposób świetnie go rozwiązuje... jednak jestem ciekaw jednej rzeczy. W sieci znalazłem jeszcze inną drogę, której jednak nie rozumiem. Nidzie nie znalazłem operatora '?' w takim zastosowaniu z ':' jak w nawiasie z 7 wersu. O co chodzi?

  1. <select name="op" >
  2. <?
  3. $selectValues = array('wy'=>'Wybierz...','p'=>'opcja 1','ks'=>'opcja 2','bz'=>'opcja 3','kk'=>'opcja 4','wko'=>'opcja 5','pn'=>'opcja 6');
  4.  
  5. foreach($selectValues as $key => $value)
  6. {
  7. echo '<option value="'.$key.'"'.($_POST['op']==$key ? ' selected="selected"' : '').'>'.$value.'</option>'."";
  8. }
  9. ?>
  10. </select>



Jeśli $_POST['op']==$key to wstawia selected="selected"? Jak działa ten mechanizm z '?' i ':'?
sobol6803
  1. ($_POST['op']==$key ? ' selected="selected"' : '')


w połączeniu z echo, to to samo co:

  1. if ($_POST['op']==$key) {
  2. echo ' selected="selected"';
  3. }
  4. else { echo ''; }
f#a#oo
Dzięki! Teraz rozumiem. Więc to jest alternatywna składnia wyrażeń warunkowych: http://gr2.php.net/manual/pl/control-struc...tive-syntax.php
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.