Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/07/2008, 09h48   #1
Membre du Club
 
Inscription : février 2007
Messages : 117
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 117
Points : 45
Points : 45
Par défaut Sortir de 2 tableaux imbriqués

Bonjour,

Dans une classe générant un select dans une table, après le mysql_query et le mysql_fetch_assoc, j'obtiens un tableau imbriquant deux autres tableaux :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
$sql = "SELECT $requete[0] FROM $requete[1]
		$where
		$order";
        $query = makeQuery($sql);
 
        while ($line = mysql_fetch_assoc($query)) {
            $result[] = $line;
        }
 
        print_r($result);
        return $result;
Le print_r($result) donne donc ceci à l'écran :

Code :
1
2
 
Array ( [0] => Array ( [statutid] => 2 [statutstatut] => NOK ) [1] => Array ( [statutid] => 1 [statutstatut] => OK ) )
J'aimerai que le return $result retourne un seul tableau et pas 2 tableaux imbriqués, ce qui ne m'obligerait pas à faire deux foreach dans mes applications pour atteindre les données.

Quel code puis-je placer dans ma classe pour que le print_r($result) retourne qq chose du genre :

Code :
1
2
 
Array ( [statutid] => 2 [statutstatut] => NOK ) Array ( [statutid] => 1 [statutstatut] => OK )
Merci :-)
oranocha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2008, 09h54   #2
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 453
Points : 5 453
Euh... a priori le seul moyen d'obtenir des tableaux séparés, c'est de les stocker dans des variables séparées. Autrement, je ne vois pas comment faire
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2008, 09h56   #3
Expert Confirmé
 
Avatar de Eusebe
 
Inscription : mars 2006
Messages : 1 989
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : mars 2006
Messages : 1 989
Points : 3 606
Points : 3 606
Bonjour,

Ce n'est pas possible. D'ailleurs dans ce que tu veux récupérer, ça ne représente que deux tableaux sans liens entre eux. Tu ne pourrais faire ça qu'avec deux variables.

Mais ce que je ne comprend pas, c'est pourquoi tu dis que tu dois faire deux foreach pour accéder aux données... Un seul suffit ! :
Code :
1
2
3
4
5
foreach ($result as $line)
{
    echo 'Id : '.$line['statutid'].'<br />';
    echo 'Statut : '.$line['statutstatut'].'<br />';
}
Edit : Grillé
Eusebe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2008, 09h58   #4
Membre du Club
 
Inscription : février 2007
Messages : 117
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 117
Points : 45
Points : 45
un truc du genre ...

Code :
1
2
3
4
5
6
7
8
 
$total = count($result);
 
for ($i = 0; $i < $total; $i++) {
foreach ($result as $cle => $valeur) {
$tabl[$i] = $valeur[$i];
}
}
Le problème est : comment alors faire le return en sachant qu'en fonction de la requête sql, je pourrai aussi bien bien 1 $tabl comme je pourrai en avoir 10 :-)
oranocha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2008, 10h00   #5
Membre du Club
 
Inscription : février 2007
Messages : 117
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 117
Points : 45
Points : 45
Citation:
Envoyé par Eusebe Voir le message
Bonjour,

Ce n'est pas possible. D'ailleurs dans ce que tu veux récupérer, ça ne représente que deux tableaux sans liens entre eux. Tu ne pourrais faire ça qu'avec deux variables.

Mais ce que je ne comprend pas, c'est pourquoi tu dis que tu dois faire deux foreach pour accéder aux données... Un seul suffit ! :
Code :
1
2
3
4
5
foreach ($result as $line)
{
    echo 'Id : '.$line['statutid'].'<br />';
    echo 'Statut : '.$line['statutstatut'].'<br />';
}
Edit : Grillé


Je suis honteux ...

Navré ...

Effectivement ...

bon, je vais m'acheter un fusil et une balle :-)

merci ...
oranocha est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h09.


 
 
 
 
Partenaires

Hébergement Web