Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Grupowanie wyświetlanych rekordów
Forum PHP.pl > Forum > Przedszkole
kris-ldz
Siemanko,
można powiedzieć, że w temacie PHP i mySQL jestem niemowlakiem 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 winksmiley.jpg
// Proszę zapoznać się z regulaminem działu Przedszkole.
// ayeo
trionet
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'";
ferrero2
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
kris-ldz
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ć?
f1xer
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
kris-ldz
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.
f1xer
To ja proponuję ci żebyś następnym razem lepiej przemyślał bazę danych 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.
kris-ldz
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 biggrin.gif Dziex za pomoc!
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.