Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Sortowanie wynikow bazy na rozny sposob
jacke
post
Post #1





Grupa: Zarejestrowani
Postów: 41
Pomógł: 1
Dołączył: 15.03.2010

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


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
CuteOne
post
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


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ń

Ten post edytował CuteOne 26.05.2011, 22:32:34
Go to the top of the page
+Quote Post
pablo_83
post
Post #3





Grupa: Zarejestrowani
Postów: 200
Pomógł: 16
Dołączył: 11.01.2009
Skąd: wrocław

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


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





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


pablo_83: i teraz wyobraź sobie ile zapytań musisz stworzyć dla 10 danych wejściowych wink.gif
Go to the top of the page
+Quote Post
pablo_83
post
Post #5





Grupa: Zarejestrowani
Postów: 200
Pomógł: 16
Dołączył: 11.01.2009
Skąd: wrocław

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


no tak zdaje sobie z tego sprawę wink.gif to miała być tylko podpowiedź smile.gif
Go to the top of the page
+Quote Post
jacke
post
Post #6





Grupa: Zarejestrowani
Postów: 41
Pomógł: 1
Dołączył: 15.03.2010

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


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





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


  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))


Ten post edytował CuteOne 26.05.2011, 23:05:19
Go to the top of the page
+Quote Post
jacke
post
Post #8





Grupa: Zarejestrowani
Postów: 41
Pomógł: 1
Dołączył: 15.03.2010

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


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

Ten post edytował jacke 26.05.2011, 23:26:34
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 - 03:39