Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Sortowanie wynikow bazy na rozny sposob
Forum PHP.pl > Forum > Przedszkole
jacke
Cześć,

Chciałbym zrobić prosty skrypt do wyświetlania i sortowania rekordów.
W bazie danych mam takie pola jak:

ID
zamowienie
potwierdzony
wysylka
komentarz
status
miasto

Żeby wyfiltrować zamówienia tylko z danego miasta, mam takie coś:
  1. a href=?miasto=krakow
  2.  
  3. $miasto = $_GET['miasto'];
  4. $query = mysql_query("SELECT * FROM poo WHERE miasto = '$miasto'");


I wszystko fajnie, ale jak będę chciał do tego dołożyć, zeby pokazało zamówienia z danego miasta i te które są potwierdzone, albo zamówienia o numerach od 50 do 60 to jak? Na ifach wszystkie kombinacje rozpisać? :)

Jak na przykład:
  1. a href=?miasto=krakow&potwierdzony=tak



Nie ma jakiegos banalnego gotowca na to?
CuteOne
Nie ma gotowca... z wysłanych danych preparujesz zapytanie:

  1. //<a href="?miasto=krakow&potwierdzony=tak">
  2.  
  3. $sql = 'SELECT * FROM miasta WHERE miasto = '.$_GET['miasto'];
  4. $sql .= (!empty($_GET['potwierdzony'])) ? " AND potwierdzony = '{$_GET['potwierdzony']}'" : "";
  5.  
  6. //itd...
  7.  
  8. $query = mysql_query($sql);


ps. oczywiście nie ma tu żadnych zabezpieczeń
pablo_83
w zapytaniu możesz wstawić więcej warunków

  1. $query = mysql_query("SELECT * FROM poo WHERE miasto = '$miasto' and potwierdzone = '$potwierdzone'");


lub
  1. $query = mysql_query("SELECT * FROM poo WHERE miasto = '$miasto' or potwierdzone = '$potwierdzone'");


kombinować już musisz pod swoje potrzeby
możesz sobie przygotować różne zapytania i w zależności od tego jakie dane wejściowe dostaniesz czyli wg czego chcesz filtrować takie zapytanie wykonasz;
co do przediału to tak samo w zapytaniu deklarujesz z jakiego przedziału mają być wyniki to już sobie popatrz w manualu mysql jak dokładnie to napisać
CuteOne
pablo_83: i teraz wyobraź sobie ile zapytań musisz stworzyć dla 10 danych wejściowych wink.gif
pablo_83
no tak zdaje sobie z tego sprawę wink.gif to miała być tylko podpowiedź smile.gif
jacke
Baza będzie dość skromna, nie więcej niż kilkaset rekordów i będę z niej korzystać tylko ja, to tak na własne potrzeby chce mieć toteż wydajność nie ma znaczenia ani żadne zabezpieczenia nie będą potrzebne.

Sposób pablo w miarę działa, ale faktycznie jak będę chciał to zrobić na wiele różnych sposobów, to kod będzie długości Pana Tadeusza...

Znowuż porady od CuteOne... coś albo robię źle, ale nie wiem

  1. $sql = 'SELECT * FROM poo WHERE miasto = '.$_GET['miasto'];
  2. $sql .= (!empty($_GET['potwierdzony'])) ? " AND potw = '{$_GET['potwierdzony']}'" : "";
  3. $sql .= (!empty($_GET['status'])) ? " AND status = '{$_GET['status']}'" : "";
  4.  
  5. $query = mysql_query($sql);
  6.  
  7. while ($row = mysql_fetch_array ($query, MYSQL_BOTH))


I dostaję to: Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in line 7
CuteOne
  1. $sql = "SELECT * FROM poo WHERE miasto = '".$_GET['miasto']."'";
  2. $sql .= (!empty($_GET['potwierdzony'])) ? " AND potw = '".$_GET['potwierdzony']."'" : "";
  3. $sql .= (!empty($_GET['status'])) ? " AND status = '".$_GET['status']."'" : "";
  4.  
  5.  
  6. echo $sql; //żeby sprawdzić na "żywo" czy zapytanie jest poprawne
  7.  
  8. $query = mysql_query($sql) or die(mysql_error());
  9.  
  10. while ($row = mysql_fetch_array($query))
jacke
Okej, teraz działa, ale jak już bym chciał wyświetlić tylko ?potwierdzony=tak albo ?status=wyslano to schodki, bo nie podałem miasta i nie chce współpracować


edit:

  1. $sql = "SELECT * FROM poo WHERE ID > 0";
  2. $sql .= (!empty($_GET['miasto'])) ? " AND miasto = '".$_GET['miasto']."'" : "";
  3. $sql .= (!empty($_GET['potwierdzony'])) ? " AND potw = '".$_GET['potwierdzony']."'" : "";
  4. $sql .= (!empty($_GET['status'])) ? " AND status = '".$_GET['status']."'" : "";
  5.  
  6.  
  7. echo $sql; //żeby sprawdzić na "żywo" czy zapytanie jest poprawne
  8.  
  9. $query = mysql_query($sql) or die(mysql_error());
  10.  
  11. while ($row = mysql_fetch_array($query))


Każdy rekord ma id większe od zera, więc działa! :) extra
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.