2010-10-29 5 views
2

Excuses si je devrais savoir mieux, mais j'ai lutté pendant un certain temps avec celui-ci. J'ai un DB mysql avec 300 lignes. Il contient 4 colonnes, "eventid", "player1", "player2", "score". Dans le jeu, player1 donne un score sur 100 à d'autres joueurs (player2).Foreach juste en écho première entrée

Ce que j'essaie de faire est de montrer à l'utilisateur connecté (player1) une table des "joueurs2" qu'ils ont marqués.

Mon code ressemble à ceci:

$currentuserid = 00001; 

$opponent_data = mysql_query("SELECT * FROM `scores` WHERE `player1` = $currentuserid ORDER by score"); 

$opponent_count = mysql_num_rows($opponent_data); 

    echo $opponent_count.'<br>'; // Just to test -> and it shows I have 144 entries in the array, i.e. 144 player 2's that player 1 has scored 

$opponent_scores = mysql_fetch_assoc($opponent_data); 

$runrows = $opponent_scores; 

foreach ($opponent_scores as &$runrows); 

    { 
    $id = $runrows['eventid']; 
    $player2 = $runrows['player2']; 
    $score = $runrows['score']; 


    echo $player2." got ".$score; 

    echo "<br>"; 

    } 

Quand je lance ce tout ce que je peux voir est

73 a 44

mais j'espérais pour voir 144 rangées de "joueur 2" a "le score du joueur 2".

Qu'est-ce que je fais mal?

Répondre

6

En outre: mysql_fetch_assoc ne retournera le pointeur sur votre première ligne dans l'ensemble de résultats. C'est pourquoi vous ne vous retrouverez qu'avec une seule ligne imprimée.

Changer votre code:

while($opponent=mysql_fetch_assoc($opponent_data)) { 
    echo $opponent['player2']." got ".$opponent['score']; 
} 
+1

Merci beaucoup, surtout pour m'avoir expliqué ce que faisait le mysql_fetch_assoc - je pensais qu'il recevait toutes les lignes. –

9

Vous avez un point-virgule après la boucle for-each; ça ne devrait pas être là.

+0

Merci, bien repéré. –

1

Il semble qu'il y ait un colon après la demi pour Mesures anormales chaque déclaration

1
$currentuserid = 00001; 

$opponent_data = mysql_query("SELECT * FROM `scores` WHERE `player1` = $currentuserid ORDER by score"); 

$opponent_count = mysql_num_rows($opponent_data); 

    echo $opponent_count.'<br>'; // Just to test -> and it shows I have 144 entries in the array, i.e. 144 player 2's that player 1 has scored 

$opponent_scores = mysql_fetch_assoc($opponent_data); 

foreach ($opponent_scores as $row); 

    { 
    $id = $row['eventid']; 
    $player2 = $row['player2']; 
    $score = $row['score']; 


    echo $player2." got ".$score; 

    echo "<br>"; 

    } 
1

mysql_fetch_assoc retourne un tableau associatif d'un seul enregistrement.

Vérifiez la documentation pour un exemple de ce que vous devez faire: http://uk3.php.net/mysql_fetch_assoc

while ($row = mysql_fetch_assoc($opponent_scores)) { 
    // var_dump($row); 
}