Matrice declaration, synthaxe ou logique ... ?

Alien
Invité n'ayant pas de compte PHPfrance

25 mars 2013, 19:18

Je debute en php, je ne pense pas que ce soit un probleme de logique, mais ca reste possible, il m'affiche correctement l'utilisateur et l'inventaire du premier joueur en ligne, mais tous le joueurs suivant on le meme inventaire que le premier, j'ai deja utilisé la technique du on efface tout et on recommence, mais j'ai tjrs le meme probleme a l'arrive
	mysql_connect($MySQL["host"], $MySQL["username"], $MySQL["password"]);
	mysql_select_db($MySQL["database"]);
	
	$query = "SELECT `invsql_users`.`name`, `invsql_inventories`.*\n"
    . "FROM invsql_users, online_players, invsql_inventories\n"
    . "WHERE ((`invsql_users`.`name` =`online_players`.`player`) AND (`online_players`.`online` =1))";
    $query2 = "SELECT `online_players`.`player`\n"
    . "FROM online_players\n"
    . "WHERE (`online_players`.`online` =1)";
	$Nbjr=array();
    $joueurs=array();
    $Result2 = mysql_query($query2);
	$i = 1;
    $Nbjr=0;
	$rows = mysql_num_rows($Result2);
	while( $row = mysql_fetch_array($Result2) ){
    $joueurs[$i]=$row["player"];
    $Nbjr=$i;
    printf("<br> %d %s",$Nbjr,$row["player"]);
    $i++;
}
if($Nbjr==0){
    printf("Aucun joueurs en ligne");
    }
    else
    {
    $tabobus=array(array());
    $tabinit=array(array());
    
    printf("<br><br>");
	$Result = mysql_query($query);
    $i = 0;
	$rows = mysql_num_rows($Result);
	while( $row = mysql_fetch_array($Result) )
    {   $tabobus[$i]["A"]=($row["name"]);
        $tabobus[$i]["B"]=($row["world"]);
        $tabobus[$i]["C"]=($row["owner"]);
        $tabobus[$i]["D"]=($row["item"]);
        $tabobus[$i]["E"]=($row["count"]);
        $tabobus[$i]["F"]=($row["slot"]);
        $i++;
    }
    printf("nombre d'entree: %d",$i);
    $nbre=$i;
    
    
    
    for($i=1;$i<$Nbjr+1;$i++)
    {   printf("<br><br>joueur%d %s <br>",$i,$joueurs[$i]);
        for($y=0;$y<36;$y++)
        {   for($z=0;$z<2;$z++)
            {   $tabinit[$y][$z]=0;
            }
        }
        for($x=0;$x<$nbre;$x++)
        {   if($joueurs[$i]==$tabobus[$x]["A"])
            {   if($tabobus[$x]["C"]==1)
                {   if($tabobus[$x]["B"]=="001")
                    {   $tabinit[$tabobus[$x]["F"]][0]=$tabobus[$x]["D"];
                        $tabinit[$tabobus[$x]["F"]][1]=$tabobus[$x]["E"];
                    }
                }
            }
        }
        for($y=0;$y<36;$y++)
        {   printf(" |%dx%d ",$tabinit[$y][0],$tabinit[$y][1]);
            if(($y+1)%9==0){printf("<br>");}
        }
    }
Modifié en dernier par Ryle le 31 mars 2013, 13:05, modifié 1 fois.
Raison : Merci d'utiliser les balises php quand vous postez du code

Alien
Invité n'ayant pas de compte PHPfrance

25 mars 2013, 21:50

apres avoir ajouté un espion je peux dire ceci
le probleme provient de:

$tabobus[$i]["A"]=($row["name"]);
$tabobus[$i]["B"]=($row["world"]);
$tabobus[$i]["C"]=($row["owner"]);
$tabobus[$i]["D"]=($row["item"]);
$tabobus[$i]["E"]=($row["count"]);
$tabobus[$i]["F"]=($row["slot"]);

$row["name"] change a la lecture de la DB
mais pas les autres valeurs :'(
c'est donc un probleme de lecture
qq un aurait t'il une idee ?
ou deja rencontré ce genre de probleme ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

25 mars 2013, 23:09

il faut voir ce que contient row, et si la requete est correcte.


tous ceci est bien complexe, il y a surement moyen de simplifier la chose et de rendre le code plus clair.

@+
Il en faut peu pour être heureux ......

Alien
Invité n'ayant pas de compte PHPfrance

26 mars 2013, 04:08

innutile de chercher plus l'erreur vient des tables dans la db :'(
merci et désolé