IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] Probleme de boucle for


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 162
    Par défaut [Tableaux] Probleme de boucle for
    Bonjour, je travaille actuellement sur deux bases de données distinctes, et donc je doit faire une jointure entre des infos sur ces deux bases par le biais d'un script php.

    Chaque requête est récupérée dans un tableau, et ce que je veux faire, c'est remplir le tableau jointure à partir des deux tableaux de requête à une certaine condition (numéro ISIN égal)

    Je parcours donc le premier tableau, et pour chaque valeur de ce tableau je parcours le second pour trouver si il existe un numéro d'ISIN.

    Jusque là, ca va. Je remplis ensuite le tableau jointure avec l'intégralité de mon second tableau plus la seconde colonne de mon premier tableau si la condition de test est vérifiée.

    Le problème, c'est que cela ne fonctionne que pour la premiere boucle, car je ne sais pas utiliser les foreach (*se cache*) et donc le pointeur sur mon tableau reste au dernier element, ce qui fait que la seconde colonne de mon premier tableau reste toujours à la meme valeur, et le champs dans mon tableau jointure conserve cette valeur pour toutes les lignes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $jointure = array();
    $cpt = 0;
    for ( $i = 0 ; $res =& $result->fetch() ; $i++ ) {
    	for ( $j = 0 ; $res2 =& $result2->fetch() ; $j++ ) {
    		echo "taille de res = ".count($res)." taille de res2 = ".count($res2);"   ";
    		if (strcmp($res["CVALISIN"],$res2["CODE_VALEUR"])){
    			$jointure[$cpt] = array("CVAL" => $res2["CVAL"],"CODE_PLISIN" => $res2["CODE_PLISIN"], "LIBELLE" => $res2["LIBELLE"], "CODE_PLACE" => $res2["CODE_PLACE"], "CODE_VALEUR" => $res2["CODE_VALEUR"], "MAR_COT_ID" => $res2["MAR_COT_ID"], "NB_CLIENTS" => $res["NB_CLIENTS"] );
    			$cpt++;
    			echo "taille de jointure = ".count($jointure)."\n";
    		}
    	}
    }

    J'ai essayé pas mal de choses avec les foreach, mais ca va pas du tout, je n'ai plus de valeurs dans mon tableau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $jointure = array();
    $cpt = 0;
    for ( $i = 0 ; $res =& $result->fetch() ; $i++ ) {
    	foreach ($res2 as $key => $valeur) {
    		echo "taille de res = ".count($res)." taille de res2 = ".count($res2);"   ";
    		if (strcmp($res["CVALISIN"],$valeur["CODE_VALEUR"])){
    			$jointure[$cpt] = array("CVAL" => $valeur["CVAL"],"CODE_PLISIN" => $valeur["CODE_PLISIN"], "LIBELLE" => $valeur["LIBELLE"], "CODE_PLACE" => $valeur["CODE_PLACE"], "CODE_VALEUR" => $valeur["CODE_VALEUR"], "MAR_COT_ID" => $valeur["MAR_COT_ID"], "NB_CLIENTS" => $res["NB_CLIENTS"] );
    			$cpt++;
    			echo "taille de jointure = ".count($jointure)."\n";
    		}
    	}
    }

    Voila voila, si quelqu'un peut m'expliquer le fonctionnement du foreach dans le cadre de ce tableau à deux dimensions, je ne pourrais que le remercier

  2. #2
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 162
    Par défaut
    Je n'arrive à rien, j'ai même tenté un reset de $res2 à la fin de mon for imbriqué, mais rien à faire, je me retrouve toujours avec un NB_CLIENTS identique pour tous les tuples

  3. #3
    Membre émérite
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Par défaut
    oui mais tu donne pas de conditions de limites a $i ??

    tu par...pour $i = 0 to $res qui égale le fetch...fait $++

    j'aimegine que ca provient de la conditions du milieu de tes boucles

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 162
    Par défaut
    Comment ca?


    Avant cette boucle, je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for ( $i = 0 ; $res =& $result->fetch() ; $i++ ) {
    	echo "NB_CLIENTS = ".$res["NB_CLIENTS"]."    ";
    	echo "CVALISIN = ".$res["CVALISIN"]."    ";
    	echo "CPLCOT = ".$res["CPLCOT"]."\n";
    }
    Et ca marche parfaitement :S

    Et le pire, c'est que j'ai mis un compteur pour mes deux boucles, elles font bien le bon nombre d'itération, je comprends vraiment plus rien!

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 162
    Par défaut
    J'ai inversé mes deux for, et ca m'a fait un truc super drole:

    je me retrouve avec les 6 premiers champs identiques, et le dernier qui change, pffff, je suis surlecuté ^^

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 162
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    <?
    $arr_res = array();
    $arr_res[] = array("indice" => "1","libelle" => "toto");
    $arr_res[] = array("indice" => "2","libelle" => "tata");
    $arr_res[] = array("indice" => "3","libelle" => "titi");
    $arr_res[] = array("indice" => "4","libelle" => "tutu");
    $arr_res[] = array("indice" => "5","libelle" => "tete"); 
    $arr_res[] = array("indice" => "6","libelle" => "dodo");
    $arr_res[] = array("indice" => "7","libelle" => "dada"); 
     
    $arr_res2 = array();
    $arr_res2[] = array("indice" => "1","nb" => "10");
    $arr_res2[] = array("indice" => "2","nb" => "20");
    $arr_res2[] = array("indice" => "3","nb" => "30");
    $arr_res2[] = array("indice" => "6","nb" => "40");
    $arr_res2[] = array("indice" => "7","nb" => "50"); 
    $arr_res2[] = array("indice" => "8","nb" => "45"); 
     
     
    echo "RES\n";
     
    foreach($arr_res as $key => $value)
    {
    	echo "indice ".$value["indice"]." libelle ".$value["libelle"]."\n";
    }
     
    echo "RES 2\n";
     
    foreach($arr_res2 as $key2 => $value2)
    {
    	echo "indice ".$value2["indice"]." nb ".$value2["nb"]."\n";
    }
     
    echo "RES 3\n";
     
    $arr_res3 = array();
     
    foreach($arr_res as $key => $value)
    {
    	foreach($arr_res2 as $key2 => $value2)
    	{
    		if(!strcmp($value2["indice"],$value["indice"]))
    		{
    			$arr_res3[] = array("indice" => $value["indice"], "libelle" => $value["libelle"] , "nb" => $value2["nb"] );
    		}
    	}	
    }
     
     
    foreach($arr_res3 as $key3 => $value3)
    {
    	echo "indice ".$value3["indice"]." libelle ".$value3["libelle"]." nb ".$value3["nb"]."\n";
    }
     
    ?>

    Un collègue m'a montré sur un petit exemple le foreach, ca fonctionne, mais pas sur mes tableaux... Je dois pas être loin

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme avec boucle "for"
    Par kentaro dans le forum ActionScript 1 & ActionScript 2
    Réponses: 16
    Dernier message: 30/01/2008, 20h15
  2. probleme de boucle for
    Par afssaLERH dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 30/10/2007, 17h30
  3. [Tableaux] Utiliser une boucle for dans un echo
    Par maoboy dans le forum Langage
    Réponses: 7
    Dernier message: 18/06/2007, 13h55
  4. Probleme de boucle for
    Par rawkus dans le forum Flash
    Réponses: 2
    Dernier message: 14/05/2007, 20h15
  5. [C#] Probleme de boucle for et random
    Par Freeman166 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 09/01/2005, 14h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo