Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php/mysql] Liczenie jednakowych wynikow
Yasieq
post
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 23.03.2003
Skąd: Radom

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


Heja!

Zalozmy, ze mam skrypt, ktory wyrzuca mi wyniki z bazy sortowane wedlug danego pola (tutaj np owoce, ktore moze przyjac wartosci: jablko, gruszka, truskawka, malina).

Z jakiego zapytania skorzystac, aby nie sortowal mi wynikow alfabetycznie, lecz w kolejnosci, np gruszka, malina, truskawka, jablko?

EDIT: Pytanie z tytulu threada znajduje sie pod postem itsme.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 15)
itsme
post
Post #2





Grupa: Zarząd
Postów: 1 512
Pomógł: 2
Dołączył: 22.04.2002
Skąd: Koszalin




dodaj jeszcze jedna kolumne gdzie bedziesz wstawiac cyferke z zakresu od 1-100 lub innego gdzie okreslisz "wagę" owoca i wg tego pola wykonaj sortowanie


--------------------
brak sygnaturki rowniez jest sygnaturką
Go to the top of the page
+Quote Post
Yasieq
post
Post #3





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 23.03.2003
Skąd: Radom

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


Ok... dzieki... to juz wykorzystam ten thread do zadania jeszcze jednego pytania.

Mam taki skrypcik, ktory pobiera mi z bazy marke i model samochodu i wypisuje to bez zbednych bajerow w petli.

[php:1:cf5331cc27]<?php
$query = "SELECT marka, model FROM baza WHERE accept='done' ORDER BY marka";
$do = mysql_query($query);
while ($row = mysql_fetch_array($do))
{
$marka = $row['marka'];
$model = $row['model'];
print ("$marka <b>$model</b><br><br>");
}
?>[/php:1:cf5331cc27]

Jednak mam problem tego typu, ze jezeli gdyby w bazie istnialy dwa wpisy o tej samej marce i modelu printowal wyniki tej postaci, np:

Audi RS4 x 3 - gdzie trojka jest iloscia wpisow Audi RS4.

Probowalem to zrobic dodajac do zapytania COUNT(marka,model) AS count, jednak powodowalo to wysypanie sie parsera. Please help.
Go to the top of the page
+Quote Post
Jabol
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

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


robisz to tablicą
[php:1:7dbf77bff4]<?php
$query = "SELECT marka, model FROM baza WHERE accept='done' ORDER BY marka";
$do = mysql_query($query);
while ($row = mysql_fetch_array($do))
{
if(!isset($tablica[$row['marka']][$row['model']])){
$tablica[$row['marka']][$row['model']]=1;
}
else{
$tablica[$row['marka']][$row['model']]++;
}
}
foreach($tablica as $marka){
foreach($marka as $model){
print ("{$marka['key']} <b>{$model['key']}</b> x {$model['value']}<br><br>");
}
}
?>[/php:1:7dbf77bff4]
I takim oto kodem możesz se to zrobić
Go to the top of the page
+Quote Post
itsme
post
Post #5





Grupa: Zarząd
Postów: 1 512
Pomógł: 2
Dołączył: 22.04.2002
Skąd: Koszalin




moze tak
[php:1:88b0a4db13]<?php
$query = "SELECT DISTINCT (marka, model) FROM baza WHERE accept='done' ORDER BY marka";

$query = "SELECT DISTINCT marka, DISTINCT model FROM baza WHERE accept='done' ORDER BY marka";
/*to sa dwa probne pytania zobacz ktore bedzie dzialac jezeli wogole nie bedzie dzialac to rozwiazanie masz ponizej*/
$do = mysql_query($query);
while ($pojazd= mysql_fetch_object($do))
{
print ("$pojazd->marka<b>$pojazd->model</b><br><br>");
}
?>[/php:1:88b0a4db13]
inne rozwiazanie
[php:1:88b0a4db13]<?php
$query = "SELECT DISTINCT marka FROM baza WHERE accept='done' ORDER BY marka";
$do = mysql_query($query);
while ($marka= mysql_fetch_object($do))
{
$query2 = "SELECT DISTINCT model FROM baza WHERE accept='done' and marka='$marka->marka' ORDER BY model";
$do2 = mysql_query($query2);
while ($model= mysql_fetch_object($do2))
{
print ("$marka->marka<b>$model->model</b><br><br>");
}
}
?>[/php:1:88b0a4db13]

pozniej pokaz jak to rozwiazales


--------------------
brak sygnaturki rowniez jest sygnaturką
Go to the top of the page
+Quote Post
Yasieq
post
Post #6





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 23.03.2003
Skąd: Radom

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


Zaskoczyl pierwszy skrypt itsme - dzieki smile.gif Jednak, to jeszcze nie koniec moich bojow - potrzebuje teraz zrobic zliczanie jednakowych wynikow. Probowalem w petli dodac drugie query, skrypt wyglada tak:

[php:1:9ea902b028]
$query = "SELECT DISTINCT marka, model FROM baza WHERE accept='done' ORDER BY marka";
$do = mysql_query($query);
while ($row = mysql_fetch_array($do))
{
$marka = $row['marka'];
$model = $row['model'];
$query2 = "SELECT marka, model FROM baza WHERE accept='done' AND marka='$marka' AND model='$model'";
$do2 = mysql_query($query2);
print ("$marka <b>$model</b><br><br>");
}
[/php:1:9ea902b028]
Jednak po zdefiniowaniu wynikow $do2 jako mysql_affected_rows w celu policzenia ilosci jednakowych wpisow skrypt znowu sie wysypuje.
Go to the top of the page
+Quote Post
itsme
post
Post #7





Grupa: Zarząd
Postów: 1 512
Pomógł: 2
Dołączył: 22.04.2002
Skąd: Koszalin




ok
uwaga 1 jezli mowisz blad napisz jaki !!
uwaga 2 jezeli w bledzie podany nr linii w ktorej ten blad wyskakuje to pokaz te linie lacznie z 3-4 wyzej


--------------------
brak sygnaturki rowniez jest sygnaturką
Go to the top of the page
+Quote Post
Yasieq
post
Post #8





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 23.03.2003
Skąd: Radom

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


Blad jest taki:

Cytat
Warning: mysql_affected_rows(): supplied argument is not a valid MySQL-Link resource in /home/users/sss/public_html/samochody.php on line 13


Pojawia sie on pod kazdym wypisanym samochodem, czyli query jest wykonywane zgodnie z petla (?)

Natomiast linijka 13 i wczesniejsze wygladaja tak (13 to ostatnia)

[php:1:1e896de949]
$marka = $row['marka'];
$model = $row['model'];
$query2 = "SELECT marka, model FROM baza WHERE accept='done' AND marka='$marka' AND model='$model'";
$do2 = mysql_query($query2);
$num = mysql_affected_rows($do2);

[/php:1:1e896de949]
Reszta jest tak jak w moim poscie wyzej.
Go to the top of the page
+Quote Post
Yasieq
post
Post #9





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 23.03.2003
Skąd: Radom

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


Sorki za repost, ale sprawa mozna by powiedziec pali mi sie pod nogami, a ja utknalem w tym martwym punkcie sad.gif Please help.
Go to the top of the page
+Quote Post
KaMeLeOn
post
Post #10





Grupa: Zarejestrowani
Postów: 680
Pomógł: 0
Dołączył: 1.10.2002
Skąd: Wrocław

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


mysql_query() zwraca identyfikator wyniku, a nie połączenia...
Więc nie...
[php:1:cfa613ac0d]<?php
$num = mysql_affected_rows($do2);
[/php:1:cfa613ac0d]
TYLKO ID_POŁACZENIA...
[php:1:cfa613ac0d]<?php
$num = mysql_affected_rows($conn);
[/php:1:cfa613ac0d]
BTW. $conn jest zwracane przez mysql_connect();


--------------------
"Czerp z innych, ale nie kopiuj ich. Bądź sobą." Michel Quoist
Go to the top of the page
+Quote Post
Yasieq
post
Post #11





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 23.03.2003
Skąd: Radom

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


Nie rozumiem 8O Przeciez jak w affected rows dam wynik mysql_connect to wyjda bzdury. Poza tym twoj post nie dal mi odpowiedzi na moj problem sad.gif
Go to the top of the page
+Quote Post
KaMeLeOn
post
Post #12





Grupa: Zarejestrowani
Postów: 680
Pomógł: 0
Dołączył: 1.10.2002
Skąd: Wrocław

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


To ty zanim napiszesz bzdury zaglądnij do manuala...
Cytat
int mysql_affected_rows ( [resource identyfikator_połączenia] )

mysql_affected_rows() zwraca ilość wierszy przetworzonych w ostatniej operacji INSERT, UPDATE lub DELETE na serwerze skojarzonym z podanym identyfikatorem połączenia. Jeżeli identyfikator połączenia nie został podany, domyślnie wykorzystywane jest ostatnie połączenie otwarte przez mysql_connect().  


A poza tym kolego...
Cytat
mysql_affected_rows() nie ma zastosowania do operacji SELECT, lecz tylko do operacji, które modyfikują rekordy. Aby uzyskać liczbę wierszy zwróconych przez SELECT, użyj funkcji mysql_num_rows().


Więc zanim napiszesz, że nie mam racji lub pisze bzdury doczytaj i zastanów się... angrysmiley.gif


--------------------
"Czerp z innych, ale nie kopiuj ich. Bądź sobą." Michel Quoist
Go to the top of the page
+Quote Post
Yasieq
post
Post #13





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 23.03.2003
Skąd: Radom

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


Spokojnie, nie napisalem nigdzie, ze piszesz bzdury, przeczytaj mojego posta jeszcze raz. Dzieki za pomoc!
Go to the top of the page
+Quote Post
KaMeLeOn
post
Post #14





Grupa: Zarejestrowani
Postów: 680
Pomógł: 0
Dołączył: 1.10.2002
Skąd: Wrocław

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


Miałem nerwowy dzień...


--------------------
"Czerp z innych, ale nie kopiuj ich. Bądź sobą." Michel Quoist
Go to the top of the page
+Quote Post
scanner
post
Post #15





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Za dużo żartów przeżyłeś? tongue.gif


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
uboottd
post
Post #16





Grupa: Zarejestrowani
Postów: 384
Pomógł: 0
Dołączył: 3.04.2003
Skąd: Chorzow

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


No wiecie co...

SELECT marka, model, count(model) as ilosc FROM baza WHERE accept='done' GROUP BY marka,model ORDER BY marka

Ale kody zeby to zrobic w phpie sa ladne winksmiley.jpg
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: 19.08.2025 - 13:20