Yasieq
30.03.2003, 02:35:22
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.
itsme
30.03.2003, 08:10:53
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
Yasieq
30.03.2003, 12:21:35
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.
Jabol
30.03.2003, 12:39:25
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ć
itsme
30.03.2003, 12:43:36
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
Yasieq
30.03.2003, 13:37:15
Zaskoczyl pierwszy skrypt itsme - dzieki

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.
itsme
30.03.2003, 13:49:11
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
Yasieq
30.03.2003, 14:11:57
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.
Yasieq
31.03.2003, 12:36:17
Sorki za repost, ale sprawa mozna by powiedziec pali mi sie pod nogami, a ja utknalem w tym martwym punkcie

Please help.
KaMeLeOn
1.04.2003, 00:00:16
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();
Yasieq
1.04.2003, 19:45:24
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
KaMeLeOn
1.04.2003, 21:58:19
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ę...
Yasieq
1.04.2003, 22:00:41
Spokojnie, nie napisalem nigdzie, ze piszesz bzdury, przeczytaj mojego posta jeszcze raz. Dzieki za pomoc!
KaMeLeOn
1.04.2003, 22:01:56
Miałem nerwowy dzień...
scanner
2.04.2003, 08:16:27
Za dużo żartów przeżyłeś?
uboottd
3.04.2003, 09:07:46
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
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.