17. marts 2003 - 19:03Der er
11 kommentarer og 1 løsning
top20 skal vise 1. 2. 3. og hvor man selv ligger
har en lille top20 visning i mit terning spils system, men vil gerne have den til at vise 1. 2. 3. foran der hvor de ligger og så skal den skrive i bunden hvor man selv ligger f.eks du ligger nr 21. kan det gøres?
har denne kode:
$res = mysql_query("SELECT * FROM terningkast ORDER BY score DESC"); while ($row = mysql_fetch_array($res)) { $res2 = mysql_query("SELECT navn FROM chatusers WHERE id = '$row[spiller_id]'"); while ($row2 = mysql_fetch_array($res2)) { if($row2[navn] == $s_navn) {
echo"<b>$row2[navn] - $row[score] point på $row[kast] kast </b><br>"; } else { echo"$row2[navn] - $row[score] point på $row[kast] kast<br>"; } } }
$res = mysql_query("SELECT * FROM terningkast ORDER BY score DESC"); while ($row = mysql_fetch_array($res)) { $res2 = mysql_query("SELECT navn FROM chatusers WHERE id = '$row[spiller_id]'"); $sCount=1 $NotFound=false; while ($row2 = mysql_fetch_array($res2) && ($NotFound || $sCount<4)) { if($row2[navn] == $s_navn) {
echo"<b>$sCount - $row2[navn] - $row[score] point på $row[kast] kast </b><br>"; $NotFound=true; } else { if ($sCount<4) { echo "$sCount - $row2[navn] - $row[score] point på $row[kast] kast<br>"; } } $sCount++; } }
Det vil nok være en god idé at åbne dit recordset af et par omgange, hvis nu det fantastiske skulle ske at du får mange tusind brugere. Men ind til da, burde ovenstående (totalt uaftestede) virke.
Og det var meningen af $notFound skulle virke modsat, så det rigtige er:
$res = mysql_query("SELECT * FROM terningkast ORDER BY score DESC"); while ($row = mysql_fetch_array($res)) { $res2 = mysql_query("SELECT navn FROM chatusers WHERE id = '$row[spiller_id]'"); $sCount=1 $NotFound=true; while ($row2 = mysql_fetch_array($res2) && ($NotFound || $sCount<4)) { if($row2[navn] == $s_navn) {
echo"<b>$sCount - $row2[navn] - $row[score] point på $row[kast] kast </b><br>"; $NotFound=false; } else { if ($sCount<4) { echo "$sCount - $row2[navn] - $row[score] point på $row[kast] kast<br>"; } } $sCount++; } }
Nu viser den 1-2-3 men den viser ikke indholdet? tror det er $res = mysql_query("SELECT terningkast.*, chatusers.navn FROM terningkast, chatusers where terningkast.spiller_id=chatusers.id ORDER BY score DESC"); der fejler noget?
Arh - nu har du jo også fået lavet tre loop inden i hinanden.
if($_GET[cmd] == top) { $res = mysql_query("SELECT * FROM terningkast ORDER BY score DESC"); $sCount=1; $NotFound=true; while (($row = mysql_fetch_array($res)) && ($NotFound || $sCount<4)) { $res2 = mysql_query("SELECT navn FROM chatusers WHERE id = '$row[spiller_id]'"); while ($row2 = mysql_fetch_array($res2)) { if($row2[navn] == $s_navn) { echo"<b>$sCount - $row2[navn] - $row[score] point på $row[kast] kast </b><br>"; $NotFound=false; } else { if ($sCount<4) { echo "$sCount - $row2[navn] - $row[score] point på $row[kast] kast<br>"; } } } $sCount++; } }
Men det burde altså ikke være nødvendigt at åbne de to database hver for sig. Det første eksempel jeg viste, burde have været OK (med få tilretninger).
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.