Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Select zależne od siebie
Forum PHP.pl > Forum > Przedszkole
o-w-c-a
Witam.

Na wstępie chciałem zaznaczyć że widziałem że są podobne tematy, jednak poziom mojej wiedzy w PHP jest wybitnie podły i nie udało mi się zrozumieć w pełni działania nie opierając się stricte na moich danych.

Mam coś takiego:
  1. <td>
  2. <select name="godzina">
  3. <option value="09"<?php $czas = date("H"); if ($czas < 10) echo ' selected="selected"'; ?>>1</option>
  4. <option value="13"<?php $czas = date("H"); if (($czas > 10 && $czas < 14) || $czas == 10) echo ' selected="selected"'; ?>>2</option>
  5. <option value="18"<?php $czas = date("H"); if ($czas == 14 || $czas > 14) echo ' selected="selected"'; ?>>3</option>
  6. </select>
  7. </td>


Funkcjonalność ma wybrać przypisanie do godziny bieżącej (wybrać z selecta godzinę najbardziej pasującą), później jako parametr zapisuję sobie do bazy wartość.

W tym momencie pojawiła mi się potrzeba zależność która w przypadku wyboru 1 lub 3 opcji (09 lub 18) pozwoli wybrać dodatkowe elementy.
Próbowałem coś takiego:
  1. <td>
  2. <?php
  3. $_POST['godzina'];
  4. switch($_POST['godzina'])
  5. {
  6. case 1:
  7. echo $_POST['godzina'];
  8. echo '<select name="Ilosc">';
  9. echo '<option value="Malo" selected="selected">Mało</option>';
  10. echo '<option value="Duzo">Dużo</option>';
  11. echo '</select>';
  12. break;
  13. case 2:
  14. echo $_POST['godzina'];
  15. echo '<select name="Ilosc">';
  16. echo '<option value="Duzo">Dużo</option>';
  17. echo '</select>';
  18. break;
  19. case 3;
  20. echo $_POST['godzina'];
  21. echo '<select name="Ilosc">';
  22. echo '<option value="Malo" selected="selected">Mało</option>';
  23. echo '<option value="Duzo">Dużo</option>';
  24. echo '</select>';
  25. break
  26. default:
  27. }
  28. ?>
  29. </td>


Różnica polega że o 13 może być tylko Duża ilość wybrana.
Trochę poczytałem i chyba nie da się zrobić w PHP zależnego menu (chyba że ukryte albo coś tego typu)?

Konstrukcja pierwszej części jest już dla mnie "opanowana" tzn mam później przygotowany plik który pobiera i ładuje dane do bazy danych (jest to inny zewnętrzny - co pewnie nie jest optymalne).
Być może coś nie tak pytam ale ta strona to jest "zakończenie" tego co potrzebuje móc obrabiać a niestety w PHP jestem totalnie zielony...

Z góry dzięki za pomocne rozwiązania.
nospor
Skoro Twoje wartosci to 09 13 18 to czemu w SWITCH w CASE porownujesz je do 1 2 3? W zyciu ci sie nie zgodzi.
o-w-c-a
OK - super - dzięki za trafną poradę (sądziłem że oznaczenia 1,2,3 dotyczą 1,2,3 opcji z select a nie bezpośrednio wartości).

Teraz działa częściowo, tzn wszystkie 3 opcje "główne" wybrane powodują że są 2 dodatkowe informacje (Dużo, Mało). Nie działa o tyle że w drugim przypadku (przy wyborze 2 czyli wartości 13) powinna być opcja tylko Dużo.

Co tutaj mam źle?
-anonim-
może ajax?
o-w-c-a
Hmm - właśnie przeglądałem zasugerowaną tematykę... i chyba to nie na mój poziom - jeśli mogę prosić jakieś propozycje to z góry dzięki, a ja zabieram się za studiowanie javascriptów bo to chyba jedyna metodą którą może mi się uda samemu...
nospor
To pokaz kod po zmianach.... skad mam wiedziec czy podczas poprawek nie zrobiles nowych bledow
o-w-c-a
  1. <table>
  2. <form method="post" action="input.php">
  3. <tr>
  4. <td>Wybierz:</td>
  5. <td>
  6. <select name="godzina">
  7. <option value="09"<?php $czas = date("H"); if ($czas < 10) echo ' selected="selected"'; ?>>1</option>
  8. <option value="13"<?php $czas = date("H"); if (($czas > 10 && $czas < 14) || $czas == 10) echo ' selected="selected"'; ?>>2</option>
  9. <option value="18"<?php $czas = date("H"); if ($czas == 14 || $czas > 14) echo ' selected="selected"'; ?>>3</option>
  10. </select>
  11. </td>
  12. <td>Oraz:</td>
  13. <td>
  14. <?php
  15. switch($_POST['godzina'])
  16. {
  17. case 09:
  18. echo $_POST['godzina'];
  19. echo '<select name="Ilosc">';
  20. echo '<option value="Malo" selected="selected">Mało</option>';
  21. echo '<option value="Duzo">Dużo</option>';
  22. echo '</select>';
  23. break;
  24. case 13:
  25. echo $_POST['godzina'];
  26. echo '<select name="Ilosc">';
  27. echo '<option value="Duzo">Dużo</option>';
  28. echo '</select>';
  29. break;
  30. case 18;
  31. echo $_POST['godzina'];
  32. echo '<select name="Ilosc">';
  33. echo '<option value="Malo" selected="selected">Mało</option>';
  34. echo '<option value="Duzo">Dużo</option>';
  35. echo '</select>';
  36. break;
  37. default:
  38. }
  39. ?>
  40. </td>
  41. </tr>
  42.  
  43. <tr>
  44. <td align="center"><br><input type="submit" style="background-color: #F0F0F0;"
  45. name="submit" value=" Wyślij "></td>
  46. </tr>
  47. </table>
nospor
Skad ten srednik przy 18? Dwukropek ma byc...
o-w-c-a
Racja, ale i tak nie działa wink.gif
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.