Avatar billede xtr0 Nybegynder
17. marts 2003 - 19:03 Der 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>";
    }
}
}
Avatar billede mortrr Praktikant
17. marts 2003 - 19:54 #1
$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.
Avatar billede mortrr Praktikant
17. marts 2003 - 19:54 #2
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++;
}
}
Avatar billede xtr0 Nybegynder
17. marts 2003 - 20:01 #3
Den viser:
1 - - 8 point på 1 kast
1 - - 7 point på 1 kast
1 - - 6 point på 1 kast
Den henter ikke navnene og skriver ikke hvilken plads de er op
Avatar billede xtr0 Nybegynder
17. marts 2003 - 20:01 #4
op = på
Avatar billede mortrr Praktikant
17. marts 2003 - 21:00 #5
Det er fordi jeg ikke holdt øjnene åbne - Du har 2 loop inden i hinanden.
Det er lidt spild. Lav det om til et:

$res = mysql_query("SELECT terningkast.*, chatusers.navn FROM terningkast, chatusers where terningkast.spiller_id=chatusers.id ORDER BY score DESC");
$sCount=1
$NotFound=true;
while ($row = mysql_fetch_array($res) && ($NotFound || $sCount<4)) {
  if($row[navn] == $s_navn) {
    echo"<b>$sCount - $row[navn] - $row[score] point på $row[kast] kast </b><br>";
    $NotFound=false;
  } else {
    if ($sCount<4) {
      echo "$sCount - $row[navn] - $row[score] point på $row[kast] kast<br>";
    }
  }
  $sCount++;
}

Det ser nogenlunde ud.
Avatar billede xtr0 Nybegynder
18. marts 2003 - 08:31 #6
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?
Avatar billede mortrr Praktikant
18. marts 2003 - 11:15 #7
selecten skulle være god nok.
Prøv:
while (($row = mysql_fetch_array($res)) && ($NotFound || $sCount<4)) {
Avatar billede xtr0 Nybegynder
18. marts 2003 - 15:24 #8
Nu har jeg denne kode, men den viser:
1 - BoB - 17 point på 2 kast

Kode:
if($_GET[cmd] == top) {
$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 (($row = mysql_fetch_array($res)) && ($NotFound || $sCount<4)) {
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++;
}

}
}
Avatar billede mortrr Praktikant
18. marts 2003 - 16:02 #9
Det kan være din database er opbygget på en anden måde end jeg regner med.

Men flyt $sCount ned i den yderste while:

if($_GET[cmd] == top) {
$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 (($row = mysql_fetch_array($res)) && ($NotFound || $sCount<4)) {
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++;
}
}
Avatar billede xtr0 Nybegynder
18. marts 2003 - 17:38 #10
Database struktur:
  spiller_id tinyint(4) NOT NULL default '0',
  kast tinyint(4) NOT NULL default '0',
  score tinyint(2) NOT NULL default '0',
  sidst_spillet varchar(20) NOT NULL default ''

Og den viser:
1 - BoB - 17 point på 2 kast

selvom der er 3 i databasen
Avatar billede mortrr Praktikant
18. marts 2003 - 18:30 #11
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).
Avatar billede xtr0 Nybegynder
21. marts 2003 - 15:40 #12
tak for din tålmodige hjælp
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester