Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Wybieranie kategori z bazy lub tablicy
Krismen
post
Post #1





Grupa: Zarejestrowani
Postów: 86
Pomógł: 0
Dołączył: 5.02.2009

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


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.  


Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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.
Powód edycji: [thek]: Mała uwaga...


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
Krismen
post
Post #3





Grupa: Zarejestrowani
Postów: 86
Pomógł: 0
Dołączył: 5.02.2009

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


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





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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".


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
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: 22.08.2025 - 00:35