Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PPP - pobrać, podzielić, posortować :)
Forum PHP.pl > Forum > Bazy danych > MySQL
arti1
Mam tabele w bazie MySQL:

[php:1:c10713df4c]<?php
CREATE TABLE `test` (
`osoba` varchar(40) NOT NULL default '',
`wyniki` varchar(40) NOT NULL default ''
) TYPE=MyISAM COMMENT='tabela';


INSERT INTO `test` VALUES ('adam', '11');
INSERT INTO `test` VALUES ('kuba', '12, 89');
INSERT INTO `test` VALUES ('ola', '56');
INSERT INTO `test` VALUES ('maciek', '4, 78, 54');
INSERT INTO `test` VALUES ('monika', '23, 13');
INSERT INTO `test` VALUES ('krzychu', '92');

?>[/php:1:c10713df4c]

Chciałbym na stronie wyświetlić tabelę posortowaną wg. wyników:
najpierw pole wynik, a pózniej osoba która osiągnęła ten wynik.
Najpierw jednak chciałbym, aby jeśli dana osoba ma przypisany więcej niż jeden wynik, zostały one podzielone.

Dla jasności przedstawię jak chciałbym otrzymać rezultat.
Kod
4 maciek

11 adam

12 kuba

13 monika

23 monika

54 maciek

56 ola

78 maciek

89 kuba

92 krzychu


proszę o pomoc bo kombinuje, ale coś mi nie idzie
kicaj
[sql:1:e51e3cf269]SELECT * FROM tabela ORDER BY kolumna_z_pkt[/sql:1:e51e3cf269]
jesli bedzie kilka wynikow w jednym polu (np. 1, 54, 57) to uzyj [manual:e51e3cf269]explode()[/manual:e51e3cf269]
Jabol
polecam zrobić struturę[sql:1:8e5a5377e7]CREATE TABLE costam (
imie VARCHAR(40) DEFAULT '',
wynik INT,
PRIMARY KEY(imie, wynik)
)[/sql:1:8e5a5377e7]Wtedy będzie dużo łatwiej i przyjemniej - a nie zapominaj, że dobry projekt bazy to podstawa.
arti1
->> kicaj

robie tak:
[php:1:346bcea101]<?php
$query = "SELECT * FROM test ORDER BY wyniki";
$mysql_result = mysql_query($query, $mysql_link);
while($row = mysql_fetch_row($mysql_result))
{
$osoba = $row[0];
$wyniki = $row[1];

$wynik = explode (", ", $wyniki);
for($i=0; $i<count($wynik); $i++){
echo("$wynik[$i] - $osoba<BR>");
}

}
?>[/php:1:346bcea101]

ale otrzymuje wynik
Kod
11 - adam

12 - kuba

89 - kuba

23 - monika

13 - monika

4 - maciek

78 - maciek

54 - maciek

56 - ola

92 - krzychu


czyli nie tak jak chcialem - wyniki nie sa pokolei sad.gif



->> Jabol
jak zmienie typ pola wyniki na INT to znika mi z rekordu wszystko po pierwszym przecinku, czyli zostaje tylko jedna liczba, czyli ni o to mi chodzi



CZEKAM NA DALSZE PODPOWIEDZI :wink:
A MOZE ROBIE COS ZLE
Jabol
najpierw stwórz sobie jedną dużą tablicę wyników a potem daj sort ( któreś z całej gamy - chyba usort będzie dobre ).
arti1
no wlasnie o tym myslalem - o stworzeniu jednej duzej tablicy
Ale nie wiem jak to zrobic (juz probowalem) - mozesz mi podpowiedziec?
arti1
drodzy wymiatacze kodu biggrin.gif
i co? nikt mi nie podpowie jak to zrobic?questionmark.gif? przeciez musicie wiedziec... tyle madrych glow na tym swiecie :wink:
Jabol
[php:1:7f91337a5f]<?php
$query = "SELECT * FROM test ORDER BY wyniki";
$mysql_result = mysql_query($query, $mysql_link);
while($row = mysql_fetch_row($mysql_result))
{
$osoba = $row[0];
$wyniki = $row[1];

$wynik = explode (", ", $wyniki);
for($i=0; $i<count($wynik); $i++){
//echo("$wynik[$i] - $osoba<BR>");
$tablica_wynikow[$i]=$osoba;
}

}
print_r(ktorystam[manual:7f91337a5f]sort[/manual:7f91337a5f]($tablica_wynikow));
?>[/php:1:7f91337a5f]jeżeli sam siebie do mądrych głów nie zaliczach to co tutaj robisz ? rolleyes.gif
arti1
Wybacz Jabol, ale nadal nie moge sobie poradzić. Zreszta dopiero sie ucze i zdaje sobie sprawe ze popełniam sporo błędów. Dlatego pisze na forum i prosze o pomoc.

Wicaz nie moge otrzymac rezultatu, o ktorym bylo na poczatku:
Kod
4 maciek

11 adam

12 kuba

13 monika

23 monika

54 maciek

56 ola

78 maciek

89 kuba

92 krzychu


Jesli wstawim kod w postaci z poprzedniego posta wyswietla mi sie:
Kod
1


Modyfiuje go na rózne sposobu, ale nigdy nie optrzymuje postaci, jakiej oczekuje.

Jeśli ktoś w stanie mi pomoc bede wdzieczny (a uwierzcie mi, ze probuje dojsc samemu w czym rzecz... ale bezskutecznie).
arti1
OK zrobiłem! biggrin.gif
koniec tematu
shima
Cytat
OK zrobiłem! biggrin.gif
koniec tematu


No wiesz, mógłbyś podzielić się z innymi.
arti1
Cytat
No wiesz, mógłbyś podzielić się z innymi.


Spoko biggrin.gif
Wsumie to całkiem inaczej niż chcaiłem na początku.
Zamiast pola wynik mam pole id_wyniku, i stworzylem osobna tabelke gdzie ma pola id_wyniku i wynik.
I tak to w tej drugiej tabelce kazdym wynik zapiuje jako nowy wiersz.
Pozniej pobieram rekordy porownujac id.

to tyle biggrin.gif
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-2024 Invision Power Services, Inc.