Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]wyszukiwarka w sklepie
Krismen
post 11.05.2020, 10:21:30
Post #1





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

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


Załóżmy, że mamy sklep i wchodzimy na kategorię telewizory i mamy dodatkowe kryteria wyszukiwania.

  1. $tab_wyszukiwarka['marka']=array(1=>"LG",2=>"Philips",3=>"Samsung");
  2. $tab_wyszukiwarka['typ']=array(4=>"LCD",5=>"LED",6=>"QLED");
  3. $tab_wyszukiwarka['rozdzielczosc']=array(7=>"1920x1080",8=>"1366x768");


  1. <form action="" method="GET">
  2. <?php
  3. foreach($tab_wyszukiwarka as $key => $val){?>
  4.  
  5. <p><?php echo $key;?></p>
  6. <div class='one' style="border:1px solid red">
  7. <?php
  8. foreach($val as $key1 => $val1){
  9. if($get==$key1){
  10. $zaznacz="checked='checked'";
  11. }
  12.  
  13. else{
  14. $zaznacz="";
  15. }
  16. ?>
  17. <div><input type="checkbox" <?php echo $zaznacz;?> onchange="window.location.href='<?php echo $_SERVER['PHP_SELF'];?>?<?php echo $key;?>=<?php echo $key1;?>'" /></div>
  18. <div><?php echo $val1;?></div>
  19. <?php
  20. }
  21.  
  22. ?>
  23. </div>
  24.  
  25. <?php
  26. }
  27. ?>
  28.  
  29. </form>


Klikamy w któryś checkbox i mam przyporządkowaną mu zmienną get i dany checkbox jest już zaznaczony. Ale jak teraz zrobić aby przy każdym kolejnym kliknięciu te zmienne get dołączały się o siebie. Bo teraz mam tak, że jak zaznaczę drugi checkbox to pierwszy się odznacza. Czy może lepiej takie coś powinno robić się ajaxem bez przeładowania strony?
Go to the top of the page
+Quote Post
nospor
post 11.05.2020, 10:24:22
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Klikajac na checkbox nie masz robic zadnego window.location.href tylko normalnie wysylac formularz. Wtedy zadne dane z formularza ci nie znikna


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Krismen
post 11.05.2020, 10:36:05
Post #3





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

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


Ale ja nie mam w tym formularzu submita, bo chcę żeby po każdym kliknięciu w checkbox już pokazały się na stronie odpowiednie telewizory. Np. klikam w markę PHILIP i już jest przeładowanie i zapytaniem pobieram PHILIPSY. Klikam w kolejny chekbox i wczytują mi się PHILIPSY o rodzielczości 1920x1080, itd.
Go to the top of the page
+Quote Post
nospor
post 11.05.2020, 10:51:01
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A czy ja ci kazalem klikac SUBMIT? Tak jak teraz przy pomocy JS przeladowujesz strone, tak ja ci mowilem bys przy pomocy JS wyslal formularz

Cytat
Czy może lepiej takie coś powinno robić się ajaxem bez przeładowania strony?
Docelowo tak. Nie mniej jednak powininies tak czy siak miec mechanizm ktory wczyta filtry z URL np. jak ktos chce komus przeslac link z wyszukiwaniem albo samemu sobie by zapamietac


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Krismen
post 11.05.2020, 19:04:22
Post #5





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

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


Dzięki nospor, trochę już wiem więcej. I teraz mam tak

  1. <form action="" id="formularz" method="GET">
  2. <?php
  3.  
  4. foreach($tab_wyszukiwarka as $key => $val){?>
  5.  
  6. <p><?php echo $key;?></p>
  7. <div class='one' style="border:1px solid red">
  8. <?php
  9. foreach($val as $key1 => $val1){
  10. if(($_GET[$key])==$key1){//numerek
  11. $zaznacz="checked='checked'";
  12. }
  13.  
  14. else{
  15. $zaznacz="";
  16. }
  17. ?>
  18. <div><input id="<?php echo $key;?>" name="<?php echo $key;?>" type="checkbox" value="<?php echo $key1;?>" <?php echo $zaznacz;?> onChange="this.form.submit()" /></div>
  19. <div><?php echo $val1;?></div>
  20. <?php
  21. }
  22.  
  23. ?>
  24. </div>
  25.  
  26. <?php
  27. }
  28.  
  29. ?>
  30.  
  31. </form>


I mogę zaznaczyć tylko po jednym checkboksie w danej kategorii. Jeśli np. w kategorii marka zaznacze drugi checkbok to już się nie dołącza. Co jeszcze muszę poprawić?

tu można to zobaczyć
tutaj
Go to the top of the page
+Quote Post
nospor
post 11.05.2020, 21:17:41
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Jak chcesz by cos sie wysylalo grupa to nazwa ma miec nazwe tablicowa czyli z []
czyli nie np.

name="costam"
tylko
name="costam[]"

Wowczas formularz wysle to jako tablice pod indexem costam i jako tablice masz to odbierac


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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: 16.07.2025 - 13:02