Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL]Grupowanie wyświetlanych rekordów
kris-ldz
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 6.08.2008
Skąd: Łódź

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


Siemanko,
można powiedzieć, że w temacie PHP i mySQL jestem niemowlakiem (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Mam następujący problem - na stronie http://www.siglagroup.com/index.php?site=s...woj=mazowieckie
wyświetlają się wszystkie sklepy z województwa mazowieckiego, chciałbym natomiast, aby rekordy grupowały się
według miast, tj.

Warszawa:
- sklep
- sklep
- sklep
- sklep
- sklep

Inne miasto:
- sklep
- sklep
- sklep

itd...

Kod odpowiadający za wyświetlanie sklepów:
CODE

<?
$query = "SELECT * FROM sklepy WHERE woj='$wojewodztwo' ORDER BY miasto DESC ";
$result = mysql_query($query);
$num_results = mysql_num_rows($result);
$licz = 1;
for ($i=0; $i <$num_results; $i++) {
$row = mysql_fetch_array($result);
if($row["miasto"]==$row["miasto"]) {
echo "<b>".stripslashes($row["nazwa"])."</b>&nbsp;&nbsp;";
echo stripslashes($row["ulica"])."&nbsp;".stripslashes($row["miasto"]);
echo "<br />";
}

}
if($_GET['woj']){
if($num_results==0) { echo '<b>O nasze produkty pytaj w Twoim lokalnym sklepie.</b>'; }
}
?>


Jeżeli chodzi o bazę, to jest jedna ze wszystkimi województwami, a zarazem ze wszystkimi miastami...

Bardzo bym prosił o pomoc, walczę z tym już od kilku dni, ale nie widać żadnych rezultatów.


// Jako, że jesteś nowy na forum przymknę oko na brak tagów w temacie!
// Jednak jest to pierwszy i ostatni raz (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
// Proszę zapoznać się z regulaminem działu Przedszkole.
// ayeo
Go to the top of the page
+Quote Post
trionet
post
Post #2





Grupa: Zarejestrowani
Postów: 12
Pomógł: 1
Dołączył: 6.08.2008
Skąd: Gostyń

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


Aby wyświetlić sklepy z danego miasta należy zamiast zapytania $query = "SELECT * FROM sklepy WHERE woj='$wojewodztwo' ORDER BY miasto DESC "; użyć zapytania $query = "SELECT * FROM sklepy WHERE miasto='$miasto'";
Go to the top of the page
+Quote Post
ferrero2
post
Post #3





Grupa: Zarejestrowani
Postów: 171
Pomógł: 32
Dołączył: 5.08.2008
Skąd: Lublin

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


dokładnie jak napisał trionet, chyba że chcesz wyświetlić wszystkie sklepy z województwa mazowieckiego które będą posortowane najpierw według miasta a później według nazwy sklepu. Wtedy kwestia jak chcesz to wyświetlać (najprościej w pętli while($row = mysql_fetch_array($result)) ale samo zapytanie do bazy powinno wyglądać tak :

  1. $query = "SELECT * FROM sklepy WHERE woj='$wojewodztwo' ORDER BY miasto DESC , sklep DESC";


Wszystko zależy od struktury bazy danych.

Pozdrawiam
Mariusz
Go to the top of the page
+Quote Post
kris-ldz
post
Post #4





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 6.08.2008
Skąd: Łódź

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


no tak to wiem o tym sortowaniu i o frazie WHERE, tylko problem w tym, że baza będzie się cały czas rozbudowywać,
w końcu obejmie całą Polskę, a co za tym idzie ilość miast będzie ogromna - moje pytanie - czy w takim razie, do każdego
miasta muszę dawać nowe pytanie? lub nowy warunek if? czy też da się to jakoś zautomatyzować?
Go to the top of the page
+Quote Post
f1xer
post
Post #5





Grupa: Zarejestrowani
Postów: 403
Pomógł: 68
Dołączył: 20.03.2008

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


Chyba nie kumam o co ci chodzi jeżeli chcesz wszystkie rekordy ze wszystkich miast to dajesz
  1. SELECT * FROM sklepy ORDER BY miasto,sklep
Go to the top of the page
+Quote Post
kris-ldz
post
Post #6





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 6.08.2008
Skąd: Łódź

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


Cytat(f1xer @ 7.08.2008, 13:45:59 ) *
Chyba nie kumam o co ci chodzi jeżeli chcesz wszystkie rekordy ze wszystkich miast to dajesz
  1. SELECT * FROM sklepy ORDER BY miasto,sklep


No tak, to też wiem :] Może niejasno się wyraziłem - chciałbym aby rekordy grupując się, automaycznie
się oddzielały i nadawał się nagłówek w postaci nazwy miasta, tj:


Warszawa:
- Sklep 1
- Sklep 2
- ....

Węgrów:
- Sklep 1
- Sklep 2

Bo jak napiszę tak jak podałeś w przykładzie to wypisze mi wszystko posortowane po miastach i sklepach, ale w jednym ciągu.
Go to the top of the page
+Quote Post
f1xer
post
Post #7





Grupa: Zarejestrowani
Postów: 403
Pomógł: 68
Dołączył: 20.03.2008

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


To ja proponuję ci żebyś następnym razem lepiej przemyślał bazę danych (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) mogę doradzić że powinna być tabela sklepy i miasta ew województwa
wtedy najłatwiej to wyciągnąć wszystko moim zdaniem.
schemat poniżej:

MIASTA
ID|ID_WOJ|NAZWA

WOJEWODZTWA
ID|NAZWA

SKLEPY
ID_MIASTA|NAZWA

Wtedy jeżeli chcesz to możesz dowolnie wyciągać dane:
wszystkie sklepy z danego miasta/województwa, a twój problem będzie można rozwiązać bardzo łatwo bo najpierw pobierzesz sobie miasta a później w pętli wszystkie sklepy z danego miasta i będziesz je wyświetlał. Taka jest moja wizja.
Go to the top of the page
+Quote Post
kris-ldz
post
Post #8





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 6.08.2008
Skąd: Łódź

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


Ok, przerobiłem bazę, według Twojej podpowiedzi - teraz pytanie - czy żeby to zautomatyzować muszę użyć INNER JOIN 
lub jakiegoś innego złączenia tabel w SQLu, czy poprostu stawiać warunki sprawdzające ID województwa i miasta?




Ok, baza przerobiona, napisałem dwie pętelki for i wszystko śmiga (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) Dziex za pomoc!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.12.2025 - 10:26