Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: W jedym zapytaniu SQL
Forum PHP.pl > Forum > PHP
Nitro
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
kurtz
Hej
Cytat
I tutaj moje pytanie. Jak rozwiązać to inaczej, jedyn zapytaniem
Usuwajac
Kod
else break
.


Pozdrawiam
Nitro
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]
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-2025 Invision Power Services, Inc.