Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Automatyczne wybranie pozycji z selecta na podstawie zmiennej
Andrzej20
post 8.11.2006, 00:25:00
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 3.11.2006

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


Witam

Szukałem odpowiedzi na tym forum, ale nie znalazłem. Mam zmienną, w która dynamicznie wybiera miesiąc z bazy, np:
  1. <?php
  2. $miesiace = 02; // w tym przypadku jest to luty
  3. ?>


Mam rozwijaną listę <select>, w której wypisuję miesiące z tablicy $liczbowo:
  1. <?php
  2. $liczbowo = array("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12");
  3. ?>

Moje pytanie brzmi: jak zmusić pole, żeby dodało parametr "selected" do tej opcji <option>, której wartość zawiera zmienna?
Go to the top of the page
+Quote Post
misieq
post 8.11.2006, 00:32:45
Post #2





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 1.11.2006

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


Niestety, 12 ifów :|
Go to the top of the page
+Quote Post
MrMag
post 8.11.2006, 00:51:15
Post #3





Grupa: Zarejestrowani
Postów: 154
Pomógł: 5
Dołączył: 24.02.2004

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


mozesz uzyc tez javascriptu

  1. document.forms['form'].elements['naza'].selectedIndex = liczba


--------------------
Go to the top of the page
+Quote Post
Andrzej20
post 8.11.2006, 00:51:56
Post #4





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 3.11.2006

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


Kurcze, nawet i to mi coś nie chce działąć, chyba jestem za cienki w te klocki... Zrobiłem coś takiego:

  1. <?php
  2. echo '<select class="register_select" name="miesiace">';
  3.  
  4. if ($miesiace="01") {
  5. echo '<option selected="selected">Styczeń</option>';
  6. echo '<option>Luty</option>'; 
  7. echo '<option>Marzec</option>'; 
  8. echo '<option>Kwiecień</option>'; 
  9. echo '<option>Maj</option>'; 
  10. echo '<option>Czerwiec</option>'; 
  11. echo '<option>Lipiec</option>'; 
  12. echo '<option>Sierpień</option>'; 
  13. echo '<option>Wrzesień</option>'; 
  14. echo '<option>Październik</option>'; 
  15. echo '<option>Listopad</option>'; 
  16. echo '<option>Grudzień</option>'; 
  17. }
  18.  
  19. if ($miesiace="02") {
  20. echo '<option>Styczeń</option>';
  21. echo '<option selected="selected">Luty</option>'; 
  22. echo '<option>Marzec</option>'; 
  23. echo '<option>Kwiecień</option>'; 
  24. echo '<option>Maj</option>'; 
  25. echo '<option>Czerwiec</option>'; 
  26. echo '<option>Lipiec</option>'; 
  27. echo '<option>Sierpień</option>'; 
  28. echo '<option>Wrzesień</option>'; 
  29. echo '<option>Październik</option>'; 
  30. echo '<option>Listopad</option>'; 
  31. echo '<option>Grudzień</option>'; 
  32. }
  33. ........itd
  34. ?>

Mimo tego, wciąż mam wybrany ten sam miesiac, czyli Grudzień. sad.gif
Go to the top of the page
+Quote Post
MrMag
post 8.11.2006, 00:52:46
Post #5





Grupa: Zarejestrowani
Postów: 154
Pomógł: 5
Dołączył: 24.02.2004

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


porownanie to == a nie =

zapewne nieuwaga smile.gif


--------------------
Go to the top of the page
+Quote Post
Andrzej20
post 8.11.2006, 00:56:19
Post #6





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 3.11.2006

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


Niestety, próbowałem też == ale nie działa, po prostu nie wiem co jest... Dawałem też elseify, poza pierwszym ifem - też nic.
Go to the top of the page
+Quote Post
misieq
post 8.11.2006, 00:58:33
Post #7





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 1.11.2006

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


Poza tym nie rób ifa przed wyświetlaniem miesięcy! Kodu Ci powstanie co niemiara! biggrin.gif
Lepiej tak:


<option name="01" <? if ($miesiace == "01") echo "selected";?>>Styczeń</option>
<option name="02" <? if ($miesiace == "02") echo "selected";?>>Luty</option>
...
...

Jesli nie działa coś, to daj troszkę więcej kody, może pomożemy.

Ten post edytował misieq 8.11.2006, 01:00:43
Go to the top of the page
+Quote Post
skowron-line
post 8.11.2006, 09:46:47
Post #8





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


  1. <option name="01" <? if ($miesiace == "01") echo "selected";?>>Styczeń</option>
  2. <option name="02" <? if ($miesiace == "02") echo "selected";?>>Luty</option>

jesli chcesz tak robic to proponuje petle i bedzie malo kodu


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
lopik
post 8.11.2006, 11:10:25
Post #9





Grupa: Zarejestrowani
Postów: 340
Pomógł: 0
Dołączył: 7.07.2006

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


  1. <?php
  2. $m = array(1=>'styczen', 'luty', 'marzec', 'kwiecien', 'maj', 'czerwiec', 'lipiec', 'sierpien', 'wrzesien', 'pazdzernik', 'listopad', 'grudzien');
  3.  
  4. echo '<select name="miesiac">';
  5.  
  6. foreach ($m as $key => $value)
  7. {
  8. // bedzie zaznaczony pazdziernik
  9. if ($key == 10) {$sel = 'selected="selected"'; } else { $sel = NULL; }
  10.  
  11. echo '<option name="'.$key.'", '.$sel.'>'.$value.'</option>';
  12. }
  13.  
  14. echo '</select>';
  15. ?>


questionmark.gif

Ten post edytował lopik 8.11.2006, 11:14:40


--------------------
w3c & c++
Go to the top of the page
+Quote Post
Andrzej20
post 8.11.2006, 13:34:33
Post #10





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 3.11.2006

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


Zrobiłem tak, nie wiem czy dobrze:
  1. <?php
  2. $m = array(1=>"Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec", "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień");
  3.  
  4. echo '<select name="miesiac" class="register_select">';
  5.  
  6. foreach ($m as $key => $value) { 
  7.  if ($key == 01) {$sel = 'selected="selected"'; } else { $sel = NULL; }
  8.  echo '<option name="'.$key.'", '.$sel.'>'.$value.'</option>';
  9.  if ($key == 02) {$sel = 'selected="selected"'; } else { $sel = NULL; }
  10.  echo '<option name="'.$key.'", '.$sel.'>'.$value.'</option>';
  11.  if ($key == 03) {$sel = 'selected="selected"'; } else { $sel = NULL; }
  12.  echo '<option name="'.$key.'", '.$sel.'>'.$value.'</option>';
  13.  if ($key == 04) {$sel = 'selected="selected"'; } else { $sel = NULL; }
  14.  echo '<option name="'.$key.'", '.$sel.'>'.$value.'</option>';
  15.  if ($key == 05) {$sel = 'selected="selected"'; } else { $sel = NULL; }
  16.  echo '<option name="'.$key.'", '.$sel.'>'.$value.'</option>';
  17.  if ($key == 06) {$sel = 'selected="selected"'; } else { $sel = NULL; }
  18.  echo '<option name="'.$key.'", '.$sel.'>'.$value.'</option>';
  19.  if ($key == 07) {$sel = 'selected="selected"'; } else { $sel = NULL; }
  20.  echo '<option name="'.$key.'", '.$sel.'>'.$value.'</option>';
  21.  if ($key == 08) {$sel = 'selected="selected"'; } else { $sel = NULL; }
  22.  echo '<option name="'.$key.'", '.$sel.'>'.$value.'</option>';
  23.  if ($key == 09) {$sel = 'selected="selected"'; } else { $sel = NULL; }
  24.  echo '<option name="'.$key.'", '.$sel.'>'.$value.'</option>';
  25.  if ($key == 10) {$sel = 'selected="selected"'; } else { $sel = NULL; }
  26.  echo '<option name="'.$key.'", '.$sel.'>'.$value.'</option>';
  27.  if ($key == 11) {$sel = 'selected="selected"'; } else { $sel = NULL; }
  28.  echo '<option name="'.$key.'", '.$sel.'>'.$value.'</option>';
  29.  if ($key == 12) {$sel = 'selected="selected"'; } else { $sel = NULL; }
  30.  echo '<option name="'.$key.'", '.$sel.'>'.$value.'</option>';
  31. }
  32.  
  33. echo '</select>';
  34. ?>

No i cóż, miesiące wypisuje oczywiście, ale nie wybiera tego którey był w zmiennej $miesiace - no bo i na jakiej podstawie? Widze ze nie ma tu żadnego odniesienia do niej... Wstawiałem też
  1. <?php
  2. if ($key == $miesiace)
  3. ?>

ale bez zmian.

Doszedłem do wniosku że nie jest to aż tak palący problem, ponieważ pojawił się kolejny, który ma większy priorytet. Tylko nie wiem, czy mogę go opisać tutaj, czy w nowym topicu, bo dotyczy on wypisywania z bazy danych?
Go to the top of the page
+Quote Post
lopik
post 8.11.2006, 13:51:55
Post #11





Grupa: Zarejestrowani
Postów: 340
Pomógł: 0
Dołączył: 7.07.2006

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


Ale co ty robisz ? blink.gif

Ja Ci podałem już gotowca!

Dajesz tylko tutaj:
  1. <?php
  2. // pod zmienna $miech podstaw jakas liczbe miesiaca od 1 do 12
  3. if ($key == $miech) {$sel = 'selected="selected"'; } else { $sel = NULL; }
  4. ?>


I jesli zmienna $miech będzie miała liczbę:
1 to styczen bedzie zaznaczony
2 to luty
3 marzec
itd.

I tyle, a nie 12 if'ów :|


W każdym razie, u mnie to działa.

Ten post edytował lopik 8.11.2006, 13:54:09


--------------------
w3c & c++
Go to the top of the page
+Quote Post
Andrzej20
post 8.11.2006, 14:01:00
Post #12





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 3.11.2006

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


Ale ze mnie lama... Racja, działa po podstawieniu liczby (wybiera ten miesiac któremu odpowiada liczba), tylko nie wiem czemu coś sie krzaczy po podstawieniu mu zmiennej $miesiace. Wygląda ona tak:
  1. <?php
  2. $miesiace = substr($data_ur, 5, 2);
  3. ?>

Wyciąga ona miesiac z pola datetime w bazie, i kiedy robię echo, to elegancko wypisuje, a w tej pętli juz nie chce działąć. Niestety, jestem jeszcze dosyć zielony sad.gif
Go to the top of the page
+Quote Post
lopik
post 8.11.2006, 14:29:53
Post #13





Grupa: Zarejestrowani
Postów: 340
Pomógł: 0
Dołączył: 7.07.2006

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


  1. <?php
  2. $miesiace = substr($data_ur, 5, 2);
  3.  
  4. $m = array(01=>'styczen', 'luty', 'marzec', 'kwiecien', 'maj', 'czerwiec',
  5.  'lipiec', 'sierpien', 'wrzesien', 'pazdzernik', 'listopad', 'grudzien');
  6.  
  7. echo '<select name="miesiac">';
  8. foreach ($m as $key => $value)
  9. {
  10. if ($key == $miesiace) {$sel = 'selected="selected"'; } else { $sel = NULL; }
  11. echo '<option name="'.$key.'", '.$sel.'>'.$value.'</option>';
  12. }
  13. echo '</select>';
  14. ?>


Ten post edytował lopik 8.11.2006, 14:33:31


--------------------
w3c & c++
Go to the top of the page
+Quote Post
Andrzej20
post 8.11.2006, 14:56:12
Post #14





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 3.11.2006

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


Alleluja!

Jesteś mistrzem snitch.gif Wielkie dzięki za cierpliwość i poświęcony czas, mam nadzieję że kiedyś będę na tyle obcykany, żeby nie zawracać już nikomu głowy takimi banałami.

Czy nadużyję Waszej cierpliwości, jeśli zapytam jeszcze o kwestię mysqlową?

Cały projekt to internetowa wypożyczalnia wideo (potrzebny jako praca semestralna). Mam trzy tabele: movies, users, hires.
Movies, zawiera filmy, kluczem jest w niej pole movie_id
Users, zawiera użytkowników, kluczem jest pole user_id
Hires, składa się z pól: hire_id (klucz), user_id i movie_id. W niej przechowywane są dane odnośnie tego, jaki użytkownik wypożyczył jakie filmy. I tu mam problem: nie wiem czy dobrze formułuję zapytanie mysql. Kod w php wygląda tak:
  1. <?php
  2. $hired_movies = mysql_query("SELECT movies.tytul FROM hires, movies, users WHERE ((hires.movie_id = movies.movie_id) AND (hires.user_id = users.user_id) AND users.user_id='$id')") or die ('Błąd zapytania');
  3.  
  4. while ($r = mysql_fetch_array($hired_movies)) {
  5. $tytul = $r['tytul']; 
  6. }
  7. echo $tytul;
  8. ?>

Zmienna $id jest przekazywana jako $_GET, ale $tytul nic nie zwraca. Nie ma też żadnego błędu. Wkleiłem zapytanie do konsoli mysqla - napisał mi "Empty set". Co napisałem źle?

Ten post edytował Andrzej20 8.11.2006, 15:35:14
Go to the top of the page
+Quote Post
skowron-line
post 8.11.2006, 17:19:53
Post #15





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


Kod
Zmienna $id jest przekazywana jako $_GET


no to chyba
  1. <?php
  2. $hired_movies = mysql_query("SELECT movies.tytul FROM hires, movies, users WHERE ((hires.movie_id = movies.movie_id) AND (hires.user_id = users.user_id) AND users.user_id='$_GET[id]')") or die ('Błąd zapytania');
  3. ?>


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
Andrzej20
post 8.11.2006, 18:00:28
Post #16





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 3.11.2006

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


Nie nie, dwie linijki wcześniej przechwytuję tę zmienną:
  1. <?php
  2. $id = $_GET['id'];
  3. ?>

Meritum mojego problemu polega na tym, że nie robiłem jeszcze nigdy relacji i z tego powodu zapewne wynika to że nie wyświetlają mi się dane z pól.
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 Wersja Lo-Fi Aktualny czas: 31.07.2025 - 06:17