Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wybieranie kategori z bazy lub tablicy
Forum PHP.pl > Forum > Przedszkole
Krismen
Napisałem skrypt, który będzie pobierał kategorie i podkategorie z tablicy. Gdy odpalam skrypt widzę na stronie "Wybierz kategorie glowna" i do wyboru dwie opcje, klikam np. na osobowe i mam "Wybierz podkategorie" i do tego momentu wszystko jest ok ale gdy klikne na podkategorię "ford" mam opcję wybierz model i wszystko było by super gdy nie to że znikają mi opcje "Wybierz podkategorie" a ja chcę żeby one były cały czas widoczne. Tak samo po kliknięcie wybierz model te opcje też znikają ze strony. Dlaczego tak się dzieje to już wiem, warunek przestaje być prawdziwy ale nie wiem jak to zapisać żeby tak się nie działo. Przecież muszę to zrobić warunkiem żeby dopasować kategorię do podkategori a podkategorię do modelu.
Ogolnie chodzi o to żeby na końcu wyboru wyglądało to tak:

Wybierz kategorie glowna :
osobowe
dostawcze

Wybierz podkategorie :
ford

Wybierz model :
fokus
mondeo
fiesta

Wybrales: mondeo

Jeśli ktoś wie proszę o pomoc bo myśle już na tym długo a jestem dopiero w trakcie nauki PHP, z góry dzięki.

  1.  
  2. <?php
  3.  
  4. $kategorie=array('osobowe','dostawcze');
  5.  
  6. echo "<font color=red>";
  7. echo "Wybierz kategorie glowna : <br>";
  8. echo "</font color=red>";
  9. for ($i=0; $i<count($kategorie); $i++)
  10. {
  11. echo "<a href='?kategorie={$kategorie[$i]}'> {$kategorie[$i]} </a><br>";
  12. }
  13.  
  14. $marka[]=array('osobowe'=>'ford','dostawcze'=>'mercedes');
  15. if ($_GET['kategorie'])
  16. {
  17. echo "<font color=red>";
  18. echo "Wybierz podkategorie : <br>";
  19. echo "</font color=red>";
  20.  
  21. for ($i=0; $i<count($marka); $i++)
  22. {
  23. foreach ($marka[$i] as $key => $value)
  24. {
  25. if ($_GET['kategorie']==$key)
  26. {
  27. echo "<a href='?marka={$value}'> {$value} </a></br>";
  28. }
  29. }
  30. }
  31. }
  32.  
  33. $model[]=array('ford'=>'fokus', 'mercedes'=>'sprinter');
  34. $model[]=array('ford'=>'mondeo', 'mercedes'=>'vito');
  35. $model[]=array('ford'=>'fiesta', 'mercedes'=>'vario');
  36.  
  37. if ($_GET['marka'])
  38. {
  39. echo "<font color=red>";
  40. echo "Wybierz model : <br>";
  41. echo "</font color=red>";
  42.  
  43. for ($i=0; $i<count($model); $i++)
  44. {
  45. foreach ($model[$i] as $key => $value)
  46. {
  47. if ($_GET['marka']==$key)
  48. {
  49. echo "<a href='?wybrales={$value}'> $value </a><br>";
  50. }
  51.  
  52. }
  53.  
  54. }
  55. }
  56.  
  57. if ($_GET['wybrales'])
  58. {
  59. echo "Wybrales: " .$_GET['wybrales'];
  60. }
  61.  


thek
Dlaczego tak się dzieje? Popatrz na linki jakie tworzysz winksmiley.jpg Czy Ty tam widzisz, by którykolwiek z nich posyłał w adresie cokolwiek więcej niż to co wybrałeś? To niby jak strona ma zgadywać co jest z czym powiązane? winksmiley.jpg Albo pchaj te informacje przez $_GET, albo ustawiaj selecty prawidłowo. Jak? Idąc kluczami od najbardziej zagłębionego. Popatrz co się dzieje gdy wybrałeś Model, przykładowo Mondeo. Mondeo jest wartością dla klucza "ford". Tak dorwałeś wartość selected dla Marki(!) Teraz sprawdzasz jaki klucz przyjmuje w Kategorii słowo "ford". Jak spojrzysz, ujrzysz "osobowe". I taką wartość ustaw jako selected dla Kategorii. Tak samo będą wyglądały kombinacje dla innych możliwości. Trochę pomyślunku własnego...

EDIT: Myślę, że dla Ciebie jednak wygodniejsze (i kilka razy prostsze w implementacji) będzie tworzenie linku w postaci ?kategorie=XXX lub ?kategorie=XXX&marka=YYY bądź ?kategorie=XXX&marka=YYY&wybrales=ZZZ bo przy kombinowaniu w sposób przeze mnie podany wcześniej się możesz pogubić jeśli dopiero zaczynasz z PHP. Trudniej moją metodę oszukać, gdyż selecty ustawiają się po stronie serwera same, a nie poprzez adres i przez to zrobienie ( ciężarowe -> ford ->sprinter ) jest niemożliwe. Zawsze bowiem skrypt sam znajduje powiązania i wymaga od nas jedynie ostatniego, najbardziej zagłębionego członu.
Krismen
Dzięki thek, mój umysł trochę się rozjaśnił po przeczytaniu Twojej odpowiedzi ale czy dobrze rozumiem to co piszesz - mam całe tablice kategorie, marka i model przesyłać do strony poprzez GET ? Próbuje właśnie tak robić ale jak na razie nie bardzo mi to wychodzi. Próbuje tak

  1.  
  2. $kategorie=array('osobowe','dostawcze');
  3.  
  4. echo "<font color=red>";
  5. echo "Wybierz kategorie glowna : <br>";
  6. echo "</font color=red>";
  7. for ($i=0; $i<count($kategorie); $i++)
  8. {
  9. echo "<a href='dalej.php?kategorie={$kategorie[$i]}&kat=$kategorie'> {$kategorie[$i]} </a><br>";
  10. }
  11.  


i skrypt odbierający

  1.  
  2. foreach ($_GET['kat'] as $key => $value)
  3.  
  4. {
  5. echo $key ." -" .$value;
  6. }


Nie wiem jak przesłać całą tablicę poprzez GET wstydnis.gif
thek
Nie całą tablicę... tylko wybraną opcję. Zobacz na link jak miałby wyglądać: ?kategoria=osobowe&marka=ford&wybrales=mondeo. W skrypcie sprawdzając $_GETy odczytasz sobie ładnie je by wiedzieć co ustawić na "selected".
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.