Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Belka wyboru SELECT
kda
post
Post #1





Grupa: Zarejestrowani
Postów: 75
Pomógł: 2
Dołączył: 29.07.2009

Ostrzeżenie: (0%)
-----


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>';
Go to the top of the page
+Quote Post
maviozo
post
Post #2





Grupa: Zarejestrowani
Postów: 197
Pomógł: 24
Dołączył: 22.11.2010

Ostrzeżenie: (0%)
-----


<option value="45" selected>45</option>
Go to the top of the page
+Quote Post
kkpre
post
Post #3





Grupa: Zarejestrowani
Postów: 26
Pomógł: 5
Dołączył: 19.03.2012

Ostrzeżenie: (0%)
-----


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>';


Ten post edytował kkpre 24.03.2012, 03:05:58
Go to the top of the page
+Quote Post
kda
post
Post #4





Grupa: Zarejestrowani
Postów: 75
Pomógł: 2
Dołączył: 29.07.2009

Ostrzeżenie: (0%)
-----


@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ć ?


Ten post edytował kda 24.03.2012, 10:09:17
Go to the top of the page
+Quote Post
kkpre
post
Post #5





Grupa: Zarejestrowani
Postów: 26
Pomógł: 5
Dołączył: 19.03.2012

Ostrzeżenie: (0%)
-----


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)


Ten post edytował kkpre 24.03.2012, 12:35:57
Go to the top of the page
+Quote Post
kda
post
Post #6





Grupa: Zarejestrowani
Postów: 75
Pomógł: 2
Dołączył: 29.07.2009

Ostrzeżenie: (0%)
-----


jeszcze raz dzięki za pomoc
Go to the top of the page
+Quote Post
f#a#oo
post
Post #7





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 9.06.2011

Ostrzeżenie: (0%)
-----


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 ':'?
Go to the top of the page
+Quote Post
sobol6803
post
Post #8





Grupa: Zarejestrowani
Postów: 115
Pomógł: 13
Dołączył: 19.06.2011
Skąd: Ruda Śląska

Ostrzeżenie: (0%)
-----


  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 ''; }


Ten post edytował sobol6803 19.07.2012, 02:39:26


--------------------
  1. mysql_query("DROP DATABASE $_GET['dbname']");
Go to the top of the page
+Quote Post
f#a#oo
post
Post #9





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 9.06.2011

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 08:52