Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> sortowanie - opcja malejąco lub rosnąco
ewela_n
post 30.03.2005, 08:59:58
Post #1





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 29.03.2005

Ostrzeżenie: (10%)
X----


Witam!
Przeczytałam wszystkie posty i nie znalazłam nic podobnego.
Otóż mam wyszukiwarkę, która wyszukuje wszystkie elementy z różnych tablic. W wynikach wyszukiwania pojawiają mi się domy z opisem i ceną, która to cena jest wyliczona cena min do cena max
Cena min - to cena najmniejsza z ceny podstaowej a cena max to największa z ceny podstawowej
i teraz mam problem jak sortować to w porządku cenowym - od najmniejszej do największej i wybierać możliwość sortowania.
albo rosnąco albo malejąco - np. wciskając przycisk typu radio.
prosze o pomoc
Go to the top of the page
+Quote Post
nospor
post 30.03.2005, 09:28:40
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




W formularzu robisz dwa pola radio:
  1. <input type="radio" name="order" value='DESC' />Malejąco
  2. <input type="radio" name="order" value='ASC' />rosnąco


A potem w php w zapytaniu dodajesz sortowanie na podstawie zaznaczonego radio:
  1. <?php
  2.  
  3. $zapytanie=&#092;".......tu twoje zapytanie\";
  4. if (isset($_POST['order']))
  5.  $zapytanie.=' order by cena '.$_POST['order'];//tu sortowanie
  6.  
  7. ?>


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ewela_n
post 30.03.2005, 09:43:33
Post #3





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 29.03.2005

Ostrzeżenie: (10%)
X----


Dzieki bardzo, podobnie kombinowałam
ale jak zadeklarować tą cenę ?
bo ta cena nie występuje w bazie danych
Go to the top of the page
+Quote Post
nospor
post 30.03.2005, 09:45:28
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Sama napisalas, że masz dane z różnych tablic a w wyniku wyszukiwania pojawiają ci się domy z opisem, ceną. Skąd ta cena? Z tabeli? jak tak to po sprawie


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ewela_n
post 30.03.2005, 09:50:51
Post #5





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 29.03.2005

Ostrzeżenie: (10%)
X----


Sorry za chaotyczność, pierwszy raz korzystam z forum.
Cena wyświetlona pod domem wyświetla mi taką kombinację

Cena minimalna - do cena maxymalna
gdzie cena min to min(cennik)
a cena max to max (cennik)

np. Domek typ BR 124
cena 1000 zł - 2000 zł


sama sobie ułożyłam tą zmienną tak
$cenaMax=mysql_fetch_array(sql("select max(cennik) from cennik where .......
Go to the top of the page
+Quote Post
nospor
post 30.03.2005, 09:58:28
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




To zrob alias. Założmy że chceszz sortować po maxymalnej cenie.:
select max(cennik) as maxcena .....ireszta.
Następnie sortuj po tym aliasie:
.... order by maxcena ...


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ewela_n
post 30.03.2005, 10:11:03
Post #7





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 29.03.2005

Ostrzeżenie: (10%)
X----


zrobiłam tak, ale wyszły mi jakieś błędy jak dopisuje to min

[Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause]
Go to the top of the page
+Quote Post
nospor
post 30.03.2005, 10:12:58
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




no a dalas tam gdziesz group by? Mozesz pokazac to zapytanie?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ewela_n
post 30.03.2005, 10:17:25
Post #9





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 29.03.2005

Ostrzeżenie: (10%)
X----


pewnie, że nie dałam
a zapytanie jest takie

$zapytanie="select distinct domy.*,regiony.nazwa as region,max(cennik.cennik) as maxCena, from domy,cennik,regiony where ";
Go to the top of the page
+Quote Post
nospor
post 30.03.2005, 10:19:03
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




no to daj groub by i potem pogadamy rolleyes.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ewela_n
post 30.03.2005, 11:51:32
Post #11





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 29.03.2005

Ostrzeżenie: (10%)
X----


Mistrzu, dałam w zapytaniu max(cennik) as maxCena itd
a później

$zapytanie.=") group by domy.id order by maxCena ".$_POST["order"];//tu sortowanie

i niestety nie sortuje po kolei
dwa domy są dobrze, później źle
Go to the top of the page
+Quote Post
nospor
post 30.03.2005, 11:57:24
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Mistrzu rolleyes.gif , hihi ładnie.

A w jaki sposób określasz max i min dla domu? na podstawie id? Domyslma się, że masz parę domków w bazie, które są identyczne i dla nich okreslasz min i max.
W przykładzie wczesniej dalas cos takiego:
Cytat
np. Domek typ BR 124
cena 1000 zł - 2000 zł

Czyli wyliczylas min i max dla domku typu BR 124. Ten typ to jakie pole w bazie? ID? A może pole typ?
Bo grupowac musisz wlasnie po tym typie (czyli po tym co się powtarza dla domków).
czyli wydaje mi się ze powinnaś dac group by typ a nie group by id. Zazwyczaj id jest unikalne dla kazdego rekordu. mam rację? Nie wiem jak jest u Ciebie. Jeśli się mylę, to przydałoby się trochę więcej informacji na temat tych twoich tabel i danych w nich


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ewela_n
post 30.03.2005, 12:19:25
Post #13





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 29.03.2005

Ostrzeżenie: (10%)
X----


Nie wiem jak mam Ci dziękować, że masz tyle cierpliwości...

Tabela domy zawiera pola - id, nazwa, opis itd.
Typ jakiś tam jest nazwą
ale jest to samo jak robię group by domy.nazwa
Go to the top of the page
+Quote Post
nospor
post 30.03.2005, 12:26:22
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




hihi, cierpliwości mam tylko do 16. potem idę domciu rolleyes.gif

1) Ale czegoś tu nie rozumiem. PO czym grupowalaś na samym początku, że dostawalaś min i max domu?
2) distinct w selectie jest raczej nie potrzebny (chyba ze masz zle warunki nalozone)
3) podaj cale zapytanie (ze wszystkim:select,where,order,group by) nie obcinaj go.
(chyba że to tajne sadsmiley02.gif)
4) jesli mozesz podaj struktury tabel wraz z relacjami
5) podaj numer telefonu i przeslij zdjęcie .... tongue.gif hihi, to żart, ale korcilo mnie aby to napisać (mam nadzieję że źle tego nie odbierzesz)


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ewela_n
post 30.03.2005, 12:38:52
Post #15





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 29.03.2005

Ostrzeżenie: (10%)
X----


dobrze się składa, ja też pracuję do 16.00

a tak na powaznie:

wcześniej robiłam order by domy.nazwa
i pokazywało się:

1. Nazwa domu
2. Opis tego domu
3. Przedział cenowy

a przedział cenowy robiłam tak:

$cenaMin=mysql_fetch_array(sql("select min(cennik) from cennik where id_domu=".$dom["id"]." and cennik>1;"));
$cenaMax=mysql_fetch_array(sql("select max(cennik) from cennik where id_domu=".$dom["id"]." and do7dni>1;"));
if($cenaMin["min(cennik)"]>0)
echo ($cenaMin["min(cennik)"]!=$cenaMax["max(cennik)"]) ? "od ".$cenaMin["min(cennik)"]." do ".$cenaMax["max(cennik)"]." <br>" : $cenaMin["min(cennik)"]." <br>";
elseif($cenaMax["max(cennik)"]>0)
echo $cenaMax["max(cennik)"]." <br>";

własnie tu jest problem - że nie układa mi po tych cenach, tylko jakoś różnie
Go to the top of the page
+Quote Post
nospor
post 30.03.2005, 12:49:38
Post #16





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




To żeby było wszystko jasne (opiszę, jak mi się wydaje że robisz):
Najpierw pobierasz id domów.
potem w pętli lecisz i dla każdego id wyliczasz min i max z tabeli cennik.
jeśli tak robisz to tu faktycznie nie ma sortowania.
Powiedz min najpierw czy dobrze napisalem. (a może masz gg? bedzie szybciej)


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 12:17