Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> W jedym zapytaniu SQL
Nitro
post
Post #1





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 10.03.2003
Skąd: Szczecin

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


Mamy taki kod:
[php:1:f19b214d1f]<?php
$sql = mysql_query( "SELECT * FROM ".$dbpref."members ORDER BY `cl_level` ASC" );
for ( $i = 0; $i < 10; $i++ ) {
echo( 'Level '.$i.':<br />' )
while ( $rekord = mysql_fetch_array( $sql ) ) {
if ($rekord["cl_level"] == $i ) echo( $rekord["nick"].'<br />' );
else break;
}
}
?>[/php:1:f19b214d1f]
W zamyśle chodziło mi o to, żeby jednym zapytaniem wyciągnąć zawartośc tabeli, a następnie wyświetlić ją rozbijając na poszczególne elementy. Wszystko jest ok, do czasu gdy brakuje któregoś z koleji cl_level. Jeżeli dla przykładu występują 0, 1, 3, ..., itd. czyli brakuje 2, to zostanie zgubiny jeden element, jedna osoba zostanie przeskoczona.
Poradziłem sobie z tym, w taki sposób:
[php:1:f19b214d1f]<?php
for ( $i = 0; $i < 10; $i++ ) {
$sql = mysql_query( "SELECT * FROM ".$dbpref."members WHERE `cl_level` = '".$i."'" );
while ( $rekord = mysql_fetch_array( $sql ) ) {
echo( $rekord["nick"].'<br />' );
}
}
?>[/php:1:f19b214d1f]
Niestety w ten sposób otrzymaliśmy aż 10 zapytań do bazy, zdecydowanie za dużo. I tutaj moje pytanie. Jak rozwiązać to inaczej, jedyn zapytaniem
Go to the top of the page
+Quote Post
kurtz
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 786
Pomógł: 0
Dołączył: 18.03.2002
Skąd: Wroclaw/Warszawa

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


Hej
Cytat
I tutaj moje pytanie. Jak rozwiązać to inaczej, jedyn zapytaniem
Usuwajac
Kod
else break
.


Pozdrawiam


--------------------
.. make web your home ..
Go to the top of the page
+Quote Post
Nitro
post
Post #3





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 10.03.2003
Skąd: Szczecin

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


Dzięki za odpowiedź smile.gif Chociaż nie tyle trzeba było to wyrzucić, co podmienić. Rozwiązanie:
[php:1:9ff34415a8]<?php
$sql = mysql_query( "SELECT * FROM ".$dbpref."members ORDER BY `cl_level` ASC" );
for ( $i = 0; $i < 10; $i++ ) {
echo( 'Level '.$i.':<br />' );
while ( $rekord = mysql_fetch_array( $sql ) ) {
if ( $rekord["cl_level"] == $i ) echo( $rekord["nick"].'<br />' );
else {
$i = $rekord["cl_level"];
echo( 'Level '.$i.':<br />' );
echo( $rekord["nick"].'<br />' );
}
}
}
?>[/php:1:9ff34415a8]
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: 20.08.2025 - 08:06