Remplir tableaux multidimension avec base mySQL

Invité
Invité n'ayant pas de compte PHPfrance

07 mai 2009, 09:41

Bonjour voilà je voudrais remplir deux tableaux avec mes tables SQL ( département et communes ) :
Pour le tableau departement pas de soucis (2 dimensions)
Mais pour le tableau commune ( 3 dimensions ) je n'arrive pas à le remplir correctement
Voici mon code:

$sql = "SELECT * FROM departements";
$result = mysql_query($sql); 	
			
	$DepPHP = array();
	$VillePHP = array();
	
	$j = 0;	
	while($rows = mysql_fetch_array($result))
	{
		@$departement	= $rows['departement'] ;
		@$Numero	= $rows['Numero'] ;
                //nouveau departement
		$DepPHP[$j] = array($Numero,$departement) ;
				
			$sql2 = "SELECT communes FROM communes WHERE Numero = '$Numero' ";
			$result2 = mysql_query($sql2); 	
			
			$i = 0;
			while($rows2 = mysql_fetch_array($result2))
			{
                                //Nouvelles villes pour le nouveau departement
				@$communes	= $rows2['communes'] ;
				$VillePHP[$j] = array();
				$VillePHP[$j][$i] = array($Numero,$communes) ;
				$i++;
			}
			$j ++;
	}
	echo $DepPHP[0][1]; //affiche mon premier departement
	echo $VillePHP[0][0][1]; // affiche une erreur ,devrai afficher la premiere ville de mon premier departement


Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

07 mai 2009, 09:58

est-ce que tu as essayé de faire un
var_dump($VillePHP);
pour voir ce que contenais réellement ton tableau ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Invité
Invité n'ayant pas de compte PHPfrance

07 mai 2009, 10:11

Voici la reponse :
une centaine d'enregistrements alors qu'il devrai contenir beaucoup plus

Code : Tout sélectionner

rray(88) { [9]=> array(1) { [432]=> array(2) { [0]=> string(2) "10" [1]=> string(15) "YEVRES-LE-PETIT" } } [10]=> array(1) { [437]=> array(2) { [0]=> string(2) "11" [1]=> string(8) "VINASSAN" } } [11]=> array(1) { [303]=> array(2) { [0]=> string(2) "12" [1]=> string(5) "CURAN" } } [12]=> array(1) { [118]=> array(2) { [0]=> string(2) "13" [1]=> string(19) "CARNOUX-EN-PROVENCE" } } [13]=> array(1) { [705]=> array(2) { [0]=> string(2) "14" [1]=> string(13) "PONT-D'OUILLY" } } [14]=> array(1) { [259]=> array(2) { [0]=> string(2) "15" [1]=> string(5) "BESSE" } } [15]=> array(1) { [403]=> array(2) { [0]=> string(2) "16" [1]=> string(19) "YVRAC-ET-MALLEYRAND" } } [16]=> array(1) { [471]=> array(2) { [0]=> string(2) "17" [1]=> string(14) "BREE-LES-BAINS" } } [17]=> array(1) { [289]=> array(2) { [0]=> string(2) "18" [1]=> string(8) "VOUZERON" } } [18]=> array(1) { [285]=> array(2) { [0]=> string(2) "19" [1]=> string(8) "YSSANDON" } } [19]=> array(1) { [123]=> array(2) { [0]=> string(2) "2A" [1]=> string(4) "ZOZA" } } [20]=> array(1) { [235]=> array(2) { [0]=> string(2) "2B" [1]=> string(5) "CHISA" } } [21]=> array(1) { [706]=> array(2) { [0]=> string(2) "21" [1]=> string(23) "VOULAINES-LES-TEMPLIERS" } } [22]=> array(1) { [372]=> array(2) { [0]=> string(2) "22" [1]=> string(15) "YVIGNAC-LA-TOUR" } } [23]=> array(1) { [259]=> array(2) { [0]=> string(2) "23" [1]=> string(10) "VILLETELLE" } } [24]=> array(1) { [556]=> array(2) { [0]=> string(2) "24" [1]=> string(6) "VITRAC" } } [25]=> array(1) { [593]=> array(2) { [0]=> string(2) "25" [1]=> string(15) "VYT-LES-BELVOIR" } } [26]=> array(1) { [368]=> array(2) { [0]=> string(2) "26" [1]=> string(28) "SAINT-VINCENT-LA-COMMANDERIE" } } [27]=> array(1) { [674]=> array(2) { [0]=> string(2) "27" [1]=> string(12) "VAL-DE-REUIL" } } [28]=> array(1) { [402]=> array(2) { [0]=> string(2) "28" [1]=> string(9) "YMONVILLE" } } [29]=> array(1) { [282]=> array(2) { [0]=> string(2) "29" [1]=> string(25) "PONT-DE-BUIS-LES-QUIMERCH" } } [30]=> array(1) { [352]=> array(2) { [0]=> string(2) "30" [1]=> string(8) "RODILHAN" } } [31]=> array(1) { [587]=> array(2) { [0]=> string(2) "31" [1]=> string(5) "CAZAC" } } [32]=> array(1) { [541]=> array(2) { [0]=> string(2) "33" [1]=> string(11) "MARCHEPRIME" } } [33]=> array(1) { [342]=> array(2) { [0]=> string(2) "34" [1]=> string(12) "GRANDE-MOTTE" } } [34]=> array(1) { [352]=> array(2) { [0]=> string(2) "35" [1]=> string(9) "PONT-PEAN" } } [35]=> array(1) { [246]=> array(2) { [0]=> string(2) "36" [1]=> string(8) "VOUILLON" } } [36]=> array(1) { [276]=> array(2) { [0]=> string(2) "37" [1]=> string(18) "YZEURES-SUR-CREUSE" } } [37]=> array(1) { [532]=> array(2) { [0]=> string(2) "38" [1]=> string(10) "CHAMROUSSE" } } [38]=> array(1) { [543]=> array(2) { [0]=> string(2) "39" [1]=> string(8) "ARESCHES" } } [39]=> array(1) { [330]=> array(2) { [0]=> string(2) "40" [1]=> string(6) "YZOSSE" } } [40]=> array(1) { [290]=> array(2) { [0]=> string(2) "41" [1]=> string(14) "YVOY-LE-MARRON" } } [41]=> array(1) { [326]=> array(2) { [0]=> string(2) "42" [1]=> string(12) "CHAUSSETERRE" } } [42]=> array(1) { [259]=> array(2) { [0]=> string(2) "43" [1]=> string(10) "YSSINGEAUX" } } [43]=> array(1) { [220]=> array(2) { [0]=> string(2) "44" [1]=> string(10) "GRIGONNAIS" } } [44]=> array(1) { [333]=> array(2) { [0]=> string(2) "45" [1]=> string(14) "YEVRE-LA-VILLE" } } [45]=> array(1) { [339]=> array(2) { [0]=> string(2) "46" [1]=> string(22) "SAINT-PIERRE-LAFEUILLE" } } [46]=> array(1) { [318]=> array(2) { [0]=> string(2) "47" [1]=> string(13) "SAINT-GEORGES" } } [47]=> array(1) { [184]=> array(2) { [0]=> string(2) "48" [1]=> string(9) "VILLEFORT" } } [48]=> array(1) { [362]=> array(2) { [0]=> string(2) "49" [1]=> string(7) "YZERNAY" } } [49]=> array(1) { [600]=> array(2) { [0]=> string(2) "50" [1]=> string(13) "YVETOT-BOCAGE" } } [50]=> array(1) { [619]=> array(2) { [0]=> string(2) "51" [1]=> string(7) "MAGENTA" } } [51]=> array(1) { [432]=> array(2) { [0]=> string(2) "52" [1]=> string(5) "WASSY" } } [52]=> array(1) { [260]=> array(2) { [0]=> string(2) "53" [1]=> string(6) "VOUTRE" } } [53]=> array(1) { [593]=> array(2) { [0]=> string(2) "54" [1]=> string(21) "HAN-DEVANT-PIERREPONT" } } [54]=> array(1) { [499]=> array(2) { [0]=> string(2) "55" [1]=> string(19) "XIVRAY-ET-MARVOISIN" } } [55]=> array(1) { [260]=> array(2) { [0]=> string(2) "56" [1]=> string(12) "KERNASCLEDEN" } } [56]=> array(1) { [729]=> array(2) { [0]=> string(2) "57" [1]=> string(9) "STUCKANGE" } } [57]=> array(1) { [311]=> array(2) { [0]=> string(2) "58" [1]=> string(11) "VITRY-LACHE" } } [58]=> array(1) { [651]=> array(2) { [0]=> string(2) "59" [1]=> string(3) "DON" } } [59]=> array(1) { [692]=> array(2) { [0]=> string(2) "60" [1]=> string(6) "MARAIS" } } [60]=> array(1) { [504]=> array(2) { [0]=> string(2) "61" [1]=> string(8) "YVRANDES" } } [61]=> array(1) { [894]=> array(2) { [0]=> string(2) "62" [1]=> string(5) "YTRES" } } [62]=> array(1) { [469]=> array(2) { [0]=> string(2) "63" [1]=> string(17) "YSSAC-LA-TOURETTE" } } [63]=> array(1) { [473]=> array(2) { [0]=> string(2) "65" [1]=> string(8) "CANTAOUS" } } [64]=> array(1) { [225]=> array(2) { [0]=> string(2) "66" [1]=> string(6) "VIVIER" } } [65]=> array(1) { [526]=> array(2) { [0]=> string(2) "67" [1]=> string(11) "ZOEBERSDORF" } } [66]=> array(1) { [376]=> array(2) { [0]=> string(2) "68" [1]=> string(11) "ZIMMERSHEIM" } } [67]=> array(1) { [292]=> array(2) { [0]=> string(2) "69" [1]=> string(18) "COLOMBIER-SAUGNIEU" } } [68]=> array(1) { [544]=> array(2) { [0]=> string(2) "70" [1]=> string(13) "VY-LES-FILAIN" } } [69]=> array(1) { [572]=> array(2) { [0]=> string(2) "71" [1]=> string(10) "FLEURVILLE" } } [70]=> array(1) { [374]=> array(2) { [0]=> string(2) "72" [1]=> string(13) "YVRE-L'EVEQUE" } } [71]=> array(1) { [304]=> array(2) { [0]=> string(2) "73" [1]=> string(5) "YENNE" } } [72]=> array(1) { [293]=> array(2) { [0]=> string(2) "74" [1]=> string(6) "YVOIRE" } } [73]=> array(1) { [0]=> array(2) { [0]=> string(2) "75" [1]=> string(5) "PARIS" } } [74]=> array(1) { [744]=> array(2) { [0]=> string(2) "76" [1]=> string(16) "YVILLE-SUR-SEINE" } } [75]=> array(1) { [513]=> array(2) { [0]=> string(2) "77" [1]=> string(6) "YEBLES" } } [76]=> array(1) { [261]=> array(2) { [0]=> string(2) "78" [1]=> string(21) "VOISINS-LE-BRETONNEUX" } } [77]=> array(1) { [304]=> array(2) { [0]=> string(2) "79" [1]=> string(8) "XAINTRAY" } } [78]=> array(1) { [781]=> array(2) { [0]=> string(2) "80" [1]=> string(6) "YONVAL" } } [79]=> array(1) { [322]=> array(2) { [0]=> string(2) "81" [1]=> string(12) "SAINTE-CROIX" } } [80]=> array(1) { [194]=> array(2) { [0]=> string(2) "82" [1]=> string(9) "VILLEMADE" } } [81]=> array(1) { [152]=> array(2) { [0]=> string(2) "83" [1]=> string(20) "SAINT-ANTONIN-DU-VAR" } } [82]=> array(1) { [150]=> array(2) { [0]=> string(2) "84" [1]=> string(20) "VITROLLES-EN-LUBERON" } } [83]=> array(1) { [281]=> array(2) { [0]=> string(2) "85" [1]=> string(13) "FAUTE-SUR-MER" } } [84]=> array(1) { [280]=> array(2) { [0]=> string(2) "86" [1]=> string(7) "YVERSAY" } } [85]=> array(1) { [200]=> array(2) { [0]=> string(2) "87" [1]=> string(11) "VILLEFAVARD" } } [86]=> array(1) { [514]=> array(2) { [0]=> string(2) "88" [1]=> string(8) "ZINCOURT" } } [87]=> array(1) { [453]=> array(2) { [0]=> string(2) "89" [1]=> string(8) "YROUERRE" } } [88]=> array(1) { [101]=> array(2) { [0]=> string(2) "90" [1]=> string(14) "VILLARS-LE-SEC" } } [89]=> array(1) { [195]=> array(2) { [0]=> string(2) "91" [1]=> string(4) "ULIS" } } [90]=> array(1) { [35]=> array(2) { [0]=> string(2) "92" [1]=> string(21) "VILLENEUVE-LA-GARENNE" } } [91]=> array(1) { [39]=> array(2) { [0]=> string(2) "93" [1]=> string(12) "VILLETANEUSE" } } [92]=> array(1) { [46]=> array(2) { [0]=> string(2) "94" [1]=> string(15) "VITRY-SUR-SEINE" } } [93]=> array(1) { [184]=> array(2) { [0]=> string(2) "95" [1]=> string(19) "WY-DIT-JOLI-VILLAGE" } } [94]=> array(1) { [33]=> array(2) { [0]=> string(3) "972" [1]=> string(13) "BELLEFONTAINE" } } [95]=> array(1) { [21]=> array(2) { [0]=> string(3) "973" [1]=> string(10) "PAPAICHTON" } } [96]=> array(1) { [23]=> array(2) { [0]=> string(3) "974" [1]=> string(6) "CILAOS" } } }

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

07 mai 2009, 10:22

En ne prennant que les quelques 1eres lignes de ton exemple et en les formattant, j'obtiens le résultat suivant :

Code : Tout sélectionner

array(88) { [9]=> array(1) { [432]=> array(2) { [0]=> string(2) "10" [1]=> string(15) "YEVRES-LE-PETIT" } } [10]=> array(1) { [437]=> array(2) { [0]=> string(2) "11" [1]=> string(8) "VINASSAN" } } [11]=> array(1) { [303]=> array(2) { [0]=> string(2) "12" [1]=> string(5) "CURAN" } } [12]=> array(1) { [118]=> array(2) { [0]=> string(2) "13" [1]=> string(19) "CARNOUX-EN-PROVENCE" } }
La 1ère chose que je remarque, c'est que jamais tu ne pourras faire
echo $VillePHP[0][0][1]
Par exemple, pour la 1ère ville stockée dans ton tableau, il faudrait faire
echo $VillePHP[9][432][1]
Je te conseille donc de faire des echo de $j et $i dans chaque boucle pour savoir si elles évoluent bien comme tu le penses.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Invité
Invité n'ayant pas de compte PHPfrance

07 mai 2009, 10:37

Alors en épluchant un peu plus mes boucles je suis arrivé à une erreur :

le numéro dans ma table département : 1,2,3...
le numéro dans ma table communes: 01,02,03...

ce champs est en varchar et oui malheureusement il n'y as pas que des numéro dans les département ,la corse : 2A et 2B :?

Je n'est pas corriger l'erreur mais je pense que ca viens de là ...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

07 mai 2009, 10:38

mais pourquoi $j commence à 9 ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Invité
Invité n'ayant pas de compte PHPfrance

07 mai 2009, 10:52

Il commençait à 9 parce que dans mon code je rajoute une ville quand le numéro du département contenu dans ma table département) est le même que celui contenu dans ma table communes ,or comme je l'expliquais dans une table les unité commencé par 0 (01 ,02 ,03...) et dans l'autre le 0 n'y était pas (1 ,2 ,3 ....)

Je sais pas si je répond à ta question .

Incrémentation de mon i et de mon j semble correct ,je récupère bien toute mes ville
echo @$communes	= $Dblocal2->current['communes'] ;
mais quand je veux les insérer dans mon tableau il semble y avoir un problème :
$VillePHP[$j] = array();
$VillePHP[$j][$i] = array($Numero,$communes) ;