1. #1
    Mulle's Avatar
    Registered
    08/01/03
    Location
    Wevelgem
    Posts
    1,801
    iTrader
    178 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/4

    PHP/SQL: Scores optellen

    Ik zit met het volgende probleem:
    Ik heb een lijst met spelletjes die de score opslaat in de database. Nu wil ik van iedere persoon al de hoogste scores per game optellen dat hij gespeeld heeft. Het volgende scriptje tell alle scores op. Hoe moet ik dit oplossen?

    Database structuur:
    ***********************************
    * USERID * GAMENR * SCORE * START *
    ***********************************
    * 4 * 2 * 1520 * 1 *
    * 4 * 5 * 322 * 1 *
    * 4 * 7 * 1302 * 1 *
    * 4 * 2 * 1110 * 1 *
    * 4 * 2 * 2563 * 1 *
    * 5 * 2 * 1558 * 0 *
    * 4 * 6 * 4556 * 1 *
    * 4 * 2 * 1563 * 1 *
    * 5 * 2 * 1236 * 1 *
    * 4 * 2 * 1550 * 1 *
    * 5 * 1 * 1000 * 1 *
    ***********************************

    <?
    $result = mysql_query(" SELECT SUM(SCORE) AS test,userid FROM ".$prefix."score WHERE start = '1' GROUP BY userid ORDER BY test DESC") or die (mysql_error());
    while($row = mysql_fetch_array($result)) {
    echo "".$row["test"].",".$row["userid"]."";
    echo "<br>";
    }
    ?>

    Alvast bedankt.
    no votes  

  2. #2
    0n3Liner's Avatar
    Registered
    10/09/03
    Location
    daar
    Posts
    1,198
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    2/2
    nieuwe code
    <?
    $result = mysql_query(" SELECT SUM(SCORE) AS test FROM ".$prefix."score WHERE start = '1' GROUP BY userid") or die (mysql_error());
    if($row = mysql_fetch_array($result)) {
    echo "".$row["test"].",".$row["userid"]."";
    echo "<br>";
    }
    ?>

    1. wrm while gebruiken?
    2. wrm de som als test en userid zetten?
    3. wrm order by? ge gaat toch mr 1 lijn weergeven
    no votes  

  3. #3

    Registered
    18/11/02
    Location
    Eke, Belgiƫ
    Posts
    2,448
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Zijde daar zo zeker van oneliner ???
    Nu wil ik van iedere persoon al de hoogste scores per game optellen dat hij gespeeld heeft.
    Het feit dat er een GROUP BY op userid gebeurt zegt al genoeg zeker?

    Als ge nu nog es grouped op het gamenr moet dat toch lukken ?
    En in plaats van SUM hebde MAX nodig, aangezien ge da hoogste scores per spel wilt:

    Code:
    SELECT *, MAX(score) AS maximum 
    FROM scores 
    WHERE start = '1' 
    GROUP BY userid, gamenr
    ORDER BY userid, gamenr, maximum DESC
    Loopen en optellen
    Last edited by DarkBone; 07-05-2004 at 10:55.
    no votes  

  4. #4
    0n3Liner's Avatar
    Registered
    10/09/03
    Location
    daar
    Posts
    1,198
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    2/2
    ahd het verkeerd verstaan
    no votes  

  5. #5
    Mulle's Avatar
    Registered
    08/01/03
    Location
    Wevelgem
    Posts
    1,801
    iTrader
    178 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/4
    Bedankt, ik zal het eens proberen.
    no votes  

  6. #6
    Mulle's Avatar
    Registered
    08/01/03
    Location
    Wevelgem
    Posts
    1,801
    iTrader
    178 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/4
    Omdat het niet in 1 keer gaat, heb ik iets anders gemaakt dat wel wel werkt.
    Ik zal het hier posten. Je kan nooit weten dat iemand het nodig heeft.

    PHP Code:
    <? 


    $i 
    0
    $result mysql_query(" SELECT max(score) as score,userid FROM ".$prefix."score WHERE start = '1' GROUP BY userid,gamenr ORDER BY userid DESC") or die (mysql_error()); 
    while(
    $row mysql_fetch_array($result)) { 
        if(
    $row["userid"] == $userid
            
    $score[$userid] += $row["score"]; 
        else{ 
            
    $i++; 
            
    $userid $row["userid"]; 
            
    $score[$userid] = $row["score"]; 
        } 


    $i=0
    arsort($score); 
    while (list(
    $player$punten) = each($score) AND $i<5) { //5 geeft de 5 hoogste scores aan 
        
    echo "$player$punten<br>\n"
        
    $i++; 

    ?>
    no votes  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in