Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> PPP - pobrać, podzielić, posortować :)
arti1
post
Post #1





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 18.11.2003

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


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
Go to the top of the page
+Quote Post
kicaj
post
Post #2





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

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


[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]


--------------------
PHP Developer

"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola
Go to the top of the page
+Quote Post
Jabol
post
Post #3





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

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


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.
Go to the top of the page
+Quote Post
arti1
post
Post #4





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 18.11.2003

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


->> 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
Go to the top of the page
+Quote Post
Jabol
post
Post #5





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

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


najpierw stwórz sobie jedną dużą tablicę wyników a potem daj sort ( któreś z całej gamy - chyba usort będzie dobre ).
Go to the top of the page
+Quote Post
arti1
post
Post #6





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 18.11.2003

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


no wlasnie o tym myslalem - o stworzeniu jednej duzej tablicy
Ale nie wiem jak to zrobic (juz probowalem) - mozesz mi podpowiedziec?
Go to the top of the page
+Quote Post
arti1
post
Post #7





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 18.11.2003

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


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:
Go to the top of the page
+Quote Post
Jabol
post
Post #8





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

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


[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
Go to the top of the page
+Quote Post
arti1
post
Post #9





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 18.11.2003

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


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).
Go to the top of the page
+Quote Post
arti1
post
Post #10





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 18.11.2003

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


OK zrobiłem! biggrin.gif
koniec tematu
Go to the top of the page
+Quote Post
shima
post
Post #11





Grupa: Zarejestrowani
Postów: 245
Pomógł: 0
Dołączył: 9.09.2002

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


Cytat
OK zrobiłem! biggrin.gif
koniec tematu


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


--------------------
Nie ma nic stałego prócz zmiany...
Go to the top of the page
+Quote Post
arti1
post
Post #12





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 18.11.2003

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


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
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: 21.08.2025 - 13:55