Portail PHP

Forum de discussion et d'aide au php

Vous n'êtes pas identifié.

Annonce

Regles d'utilisation des forums : pensez à toujours les respecter si vous désirez obtenir des réponses rapides.
FAQ : pensez à toujours chercher dedans si la réponse à votre question est dedans.
Proposez vos news : si vous avez un evenement à annoncer
le chat : venez discuter de php.
 

#1 06-04-2008 13:45:58

KiwiToast
Membre
Date d'inscription: 06-04-2008
Messages: 2
Site web

Affectation qui ne fonctionne pas

Bonjour !

Je ne sais pas vraiment comment expliquer mon problème, alors je décris :

Le code :

Code:

            $id_base[$a] = $datac6['ID_base'];
            echo "première id_base : ".$id_base[$a]."/".$datac6['ID_base']."<br>";

Le résultat :
première id_base : 2/20


=> Le "20" est normal, mais le "2" sort vraiment de nul part.

Je ne comprend vraiment pas pourquoi l'affectation de la valeur $datac6['ID_base'] à $id_base[$a] ne fonctionne pas. sad


Merci de votre aide. smile

Hors ligne

 

#2 06-04-2008 17:54:45

KiwiToast
Membre
Date d'inscription: 06-04-2008
Messages: 2
Site web

Re: Affectation qui ne fonctionne pas

En fait j'ai fini par trouver la solution moi même. Enfin, pour être plus précis, maintenant ça marche et j'ai peut-être compris le problème. cool

Au cas ou ça interesse quelqu'un je met explication ici :

Code qui pose problème :

Code:

    $queryc6 = "SELECT T.ID_base, T.ID_Cible, V.ID, T.Type, V.ID_Proprio, V.Partie, T.Initiative, T.Quantite FROM troupes T, vaisseaux V WHERE T.ID_Cible > 0 AND T.ID_base = V.ID AND V.Partie = '".$data1['ID']."' ORDER BY Initiative, ID_base";
    $SQLc6 = mysql_query($queryc6)or die(mysql_error());


    $id_base=0;
    $a = 0;

// On regroupe les armées
    while($datac6 = mysql_fetch_assoc($SQLc6)){
// $a défini l'ID de l'armée, si on change de vaisseau, on commence une nouvelle armée

1        if($datac6['ID_base'] != $id_base){
2            $a++;
3            $id_base = $datac6['ID_base'];
4            $id_base[$a] = $datac6['ID_base'];       <======== Pose problème !
5            $cible[$a] = $datac6['ID_Cible'];
6            $proprio[$a] = $datac6['ID_Proprio'];
7            $base[$a] = $datac6['ID_base'];        
8        }
9      }

Pourquoi est-ce qu'il y a un problème ? Parceque quand on affecte un résultat obtenu par la fonction mysql_fetch_assoc(), ça passe au résultat suivant. Or ici $datac6['ID_base'] à déjà été "vidé" deux fois déjà : lignes 1 et 3 sur mon dessin.


Solution :

Code:

    $queryc6 = "SELECT T.ID_base, T.ID_Cible, V.ID, T.Type, V.ID_Proprio, V.Partie, T.Initiative, T.Quantite FROM troupes T, vaisseaux V WHERE T.ID_Cible > 0 AND T.ID_base = V.ID AND V.Partie = '".$data1['ID']."' ORDER BY Initiative, ID_base";
    $SQLc6 = mysql_query($queryc6)or die(mysql_error());


    $id_base=0;
    $a = 0;

// On regroupe les armées
    while($datac6 = mysql_fetch_assoc($SQLc6)){
// $a défini l'ID de l'armée, si on change de vaisseau, on commence une nouvelle armée
$test999 = $datac6['ID_base'];                                                    <=============== Une seul utilisation de $datac6['ID_base'];

        if($test999 != $id_base){
            $a++;
            $id_base = $test999;
            $test[$a] = $id_base;
            $cible[$a] = $datac6['ID_Cible'];
            $proprio[$a] = $datac6['ID_Proprio'];
            $base[$a] = $datac6['ID_base'];
        
        }
      }

Bon je sais pas si mon explication est vrai, ou si elle sera utile a quelqu'un un jour, mais en tout cas chez moi ça marche. J'éspère que mon après midi a me tirer les cheveux n'aura pas été complètement inutile. ^^

Hors ligne

 

#3 06-04-2008 18:10:08

Asherah
Membre
Date d'inscription: 15-11-2007
Messages: 161
Site web

Re: Affectation qui ne fonctionne pas

merci pour ta resolution smile

Hors ligne