Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP][MySQL]Multiple a zapytanie
Forum PHP.pl > Forum > Przedszkole
kill15
Witam.
Jak zrobić zapytanie które wyświetli wyniki podane w multiple?


  1. $table = array();
  2.  
  3. $result1 = mysql_query( 'SELECT * FROM hotel WHERE atrakcja LIKE "%'.$naszeatrakcje.'%" AND kategoria LIKE "%'.$kategoriaaa.'%" AND wojewodztwo LIKE "%'.$wojwoj.'%" AND polozenie LIKE "%'.$polzsie.'%" ') or die ( mysql_error() );
  4.  
  5.  
  6. while( $row = mysql_fetch_assoc( $result1 ) )
  7.  
  8. $table[] = $row;



Mam takie zapytanie i np gdy wybiorę kategorie o id 1 i od id 3 to wyświetla wyniki z kategori którą jest 3 a z 1 nie ;/

A i sprawa jest jeszcze taka że do bazy wysyłam funkcją implode wynik z checkboksów.
Więc np gdy:

zaznacze kategorie:

1.Ketegoria
i
4. kategoria

to w bazie danych jest

41



Pomoże ktoś questionmark.gif

;/
kalmaceta
można przez FIND_IN_SET
kill15
Ale jak przerobić ten kod aby to działało??

  1. Atrakcje<br>
  2. <select name="szatrakcje" size="3" style="width: 180px;" multiple>
  3. {foreach from=$coatr key=key item=item}
  4. <option name="hotel3" value="{$item.id}">{$item.atrakcja}<br>
  5. {/foreach}



  1. $naszeatrakcje = $_POST[szatrakcje];
  2. $kategoriaaa = $_POST[wybkategorie];
  3. $wojwoj = $_POST[woj];
  4. $polzsie = $_POST[polozenie];
  5.  
  6. $table = array();
  7.  
  8. $result1 = mysql_query( 'SELECT * FROM hotel WHERE atrakcja LIKE "%'.$naszeatrakcje.'%" AND kategoria LIKE "%'.$kategoriaaa.'%" AND wojewodztwo LIKE "%'.$wojwoj.'%" AND polozenie LIKE "%'.$polzsie.'%" ') or die ( mysql_error() );
  9.  
  10.  
  11. while( $row = mysql_fetch_assoc( $result1 ) )
  12.  
  13. $table[] = $row;
  14. $ok =2;
  15.  
  16. $smarty->assign(array( 'zatrakcjami' => $table,
  17. 'na' => $naszeatrakcje,
  18. 'ok' => $ok,
  19. "log" => $login ));
kalmaceta
oczekujesz, że ktoś to za Ciebie napisze.

1. nazwa p[ola select powinna kończyć się [] np <select name="wybor[]">
2. w $_POST['wybor'] dostajesz array z zaznaczonymi, robisz implode() z przecinkiem
3. wrzucasz FIND_IN_SET (nie wiem czy w mysql, ale może samo IN zadziała)
kill15
Kombinuje i mi nie wychodzi ;/
Czy mógłbyś dać więcej wskazówek??
Np przykład jak miałoby wyglądać zapytanie.
3lanc
Po pierwsze
  1. <select name="szatrakcje[]" size="3" style="width: 180px;" multiple>


Jezeli kategoria jest po ID to nie musisz dawać LIKE tylko normalnie, po znaku równości. Podebuguj kod.

Kategoria:
  1. $category = implode($_POST['szatrakcje'], ' OR kategoria =');


Zapytanie
  1. echo 'SELECT * FROM hotel WHERE atrakcja LIKE "%'.$naszeatrakcje.'%" AND ( kategoria = '.$category.' ) AND wojewodztwo LIKE "%'.$wojwoj.'%" AND polozenie LIKE "%'.$polzsie.'%"; // debug


// ps. zabezpiecz sobie zmienne ;]
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.