Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript][MySQL][PHP]Filtrowanie wyników z MySQL za pomocą formularza, Problem z checkboxami, zawartością $_GET i URL-em
kleszczoscisk
post
Post #1





Grupa: Zarejestrowani
Postów: 164
Pomógł: 3
Dołączył: 13.12.2007

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


Próbuję zrobić formularz filtrujący wynik zapytań z tabeli w bazie MySQL.
Chcę wykorzystać checkboxy, na takiej zasadzie jak np. filtrowanie w ceneo.
Fragment formularza:
  1. $gallery_techniques = Array(
  2. '1' => array('1', 'olej', '#000','obrazy olejne'),
  3. '2' => array('2', 'akryl', '#000099','obrazy akrylowe'),
  4. '3' => array('3', 'kredka', '#666666','kredka')
  5. );
  6. foreach($gallery_techniques as $technika){
  7. if(isset($_GET['t']) AND !empty($_GET['t']) AND ($_GET['t'] == $technika[0])){
  8. echo '<input type="checkbox" name="t[]" value="'.$technika[0].'" style="color:'.$technika[2].'" checked="checked" /> - '.$technika[1].' ';
  9. }
  10. else echo '<input type="checkbox" name="t[]" value="'.$technika[0].'" style="color:'.$technika[2].'" /> - '.$technika[1].' ';
  11. }


Dane z formularza w zmiennych GET odbieram tak:
  1. if(isset($_GET['t']) AND $_GET['t'] <> 0) {
  2. $t = $_GET['t'];
  3. foreach($t as $tech ){
  4. if(array_key_exists($tech, $gallery_techniques)) {
  5. $sql_filter .= " AND dziela.technika LIKE '%".$gallery_techniques[(int)$tech][1]."%' ";
  6. $title .= ' - '.$gallery_techniques[$tech][3];
  7. }
  8. }
  9. }
  10. else{
  11. $t = 0;
  12. $title .= ' ';
  13. }


Problem jest taki, że kiedy wysyłam formularz tworzy się taki URL:
Cytat
index.php?&t[]=1&t[]=2

zmienna $_GET['t'] jest zmultiplikowana i w dodatku jest tablicą(?).
Czy ten sposób w ogóle jest dobry?
W jaki sposób rozpoznać w formularzu, które checkboxy zostały zaznaczone aby ustawić je checked="checked" ?

Może ktoś mógłby polecić jakiś działający prosty przykład na takie filtorwanie wg zadanych parametrów?



Go to the top of the page
+Quote Post
ghost1511
post
Post #2





Grupa: Zarejestrowani
Postów: 186
Pomógł: 18
Dołączył: 2.09.2010

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


Nadaj każdemu checkboxowi indywidualną nazwę wtedy będziesz wiedział co jest zaznaczone
  1. <input type="checkbox" name="t1" value="1">
  2. <input type="checkbox" name="t2" value="2">

lub jeżeli chcesz zachować tablicę:
  1. <input type="checkbox" name="t[1]" value="1">
  2. <input type="checkbox" name="t[2]" value="2">


chociaż osobiście zamieniłbym cyfry na ciągi znaków smile.gif
Go to the top of the page
+Quote Post
kleszczoscisk
post
Post #3





Grupa: Zarejestrowani
Postów: 164
Pomógł: 3
Dołączył: 13.12.2007

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


Cytat(ghost1511 @ 29.01.2014, 07:42:27 ) *
Nadaj każdemu checkboxowi indywidualną nazwę wtedy będziesz wiedział co jest zaznaczone

Tylko, że to komplikuje sposób odbierania danych z formularza, wydaje mi się, że paramtry dotyczące jednej kolumny w tabeli powinny być w jednej i tej samej zmiennej $_GET...

Póki co wykrywanie zmiennych z urla zrobiłem za pomocą in_array:
  1. <!--technika-->
  2. <label for="t">Technika:</label>
  3. <?
  4. if(isset($_GET['t']) AND !empty($_GET['t'])){$t = $_GET['t'];}
  5. foreach($gallery_techniques as $technika){
  6. if(isset($t) AND !empty($t) AND (in_array($technika[0], $t) == TRUE)){
  7. echo '<input type="checkbox" name="t[]" value="'.$technika[0].'" style="color:'.$technika[2].'" checked="checked" /> - '.$technika[1].' ';
  8. }
  9. else echo '<input type="checkbox" name="t[]" value="'.$technika[0].'" style="color:'.$technika[2].'" /> - '.$technika[1].' ';
  10. //onchange="this.form.submit();"
  11. }


Ale dalej mi się to nie podoba, pewnie będzie problem żeby takie url przepisywać z mod_rewrite (z tego powodu w ogóle GET), mogą się rozrastać, problem ze stronicowaniem... może ktoś podpowie jakieś inne lepsze rozwiązanie?


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

Siedź cicho, kiedy śpi licho.
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: 20.08.2025 - 06:15