8792 sujets

Développement web côté serveur, CMS

Bonjour à tous !

Pour une appli de gestion des stocks, je crée un array à partir des données d'une table.
Je récupère l'id produit ainsi que les valeurs des options (couleurs et tailles) pour chaque produit.
Ce tableau multi-dimensions, une fois créé, se présente ainsi (exemple sur deux produits) et est stocké dans une variable $tableau :

array(array(102,array(10,11,13,14,49,50),array(1,2,5,6,7,8)),array(183,array(41,44,47,50),array(5,6,7,8)))


Ce code fonctionne très bien lorsque je code "en dur" $tableau :
$ tableau = array(array(102,array(10,11,13,14,49,50),array(1,2,5,6,7,8)),array(183,array(41,44,47,50),array(5,6,7,8)))


Voici le code que j'utilise pour l'exploiter :

function afficher_tableau($tableau)
	{
	// on fait une boucle qui lit les éléments du tableau
	foreach ($tableau as $cle=>$valeur)
		{
		// si l'un des éléments est lui même un tableau
		// alors on applique la fonction à ce tableau
		if(is_array($valeur))
			{
			// on affiche le nom de la clé et
			// le début d'une liste pour
			//  décaler le contenu vers la droite
			echo $cle.' : <ul>';
		   
			// ici se réalise la récursivité
			// c'est à dire qu'on applique la fonction
			// à l'élément en cours car c'est lui aussi un tableau
			afficher_tableau($valeur);
		   
			// on ferme la liste
			echo '</ul>';
			}
	   
		// si ce n'est pas un tableau
		// alors on affiche le contenu de l'élément
		else
			{
			echo $cle.' = '.$valeur.' <br>'; 
			}
		}
	}


Seulement, lorsque je veux exploiter le $tableau créé à partir de ma requête SQL, je me retouve avec cette erreur :
Warning: Invalid argument supplied for foreach() in etc...

Logique, puisque lorsque je fais un gettype(), il me retourne qu'il s'agit d'un type String.
Forcer le type par un settype($tableau, "array"); ne fonctionne pas.

Des idées ?

Merci d'avance !
Modifié par Keyser Soze (26 Mar 2007 - 14:12)
Salut,
tu sais, si php te dit que ce n'est pas un tableau, il y a des chances que ce n'en soit pas un Smiley smile et inutile d'essayer de forcer le typage si le contenu n'y est pas

la question est donc : comment crées-tu le tableau en question ?
derrière un simple select mysql, le résultat est un tableau, essaye

$quer="mysql select * from blabla where ce que tu veux";
$res=mysql_query($quer);
echo $res; 

tu auras Array comme résultat.
Mais comme tu dis que ton tableau contient des éléments qui sont eux-mêmes des tableaux, tu dois le créer autrement, alors comment, c'est par là qu'une gonade doit trainer dans la terrine Smiley smile

Have swing
Modifié par virtualgadjo (26 Mar 2007 - 07:12)
Merci de ta réponse, j'ai solutionné le problème en créant des sous-tableaux que j'inclus dans mon tableau principal (auparavant, je ne faisais que créer une chaine de caractères commençant par array(... ).