Récupération de lignes multiples dans un tableau de type Array

Par niko, il y a 12 ans


Bonjour,

Mon application va chercher des données dans MySql et je souhaite les afficher dans ma page web
J utilise une classe php pour la connexion et la requête et le retour des données se fait sous la forme d'un tableau array()

Problème, lorsque je n'ai qu'une ligne en retour, j arrive bien à récupérer mes données

exemple :

Mon appel de fonction :

$query = "select * from clients where idecli=1";
$input = $oMySQL->ExecuteSQL($query);
echo $input"IDECLI"]."<br />";
echo $input"NOMCLI"]."<br />";
echo $input"LONGITUDE"]."<br />";
echo $input"LATITUDE"];

Résultat sur ma page :
1
Boulangerie de septeuil
1.6806804
48.8920054

Mon tableau de résultat est sous la forme :

Array
(
    [IDECLI] => 1
    [NOMCLI] => Boulangerie de septeuil
    [LONGITUDE] => 1.6806804
    [LATITUDE] => 48.8920054
)

Mais dès que j'ai plusieurs lignes de résultat :

$query = "select * from clients";
$input = $oMySQL->ExecuteSQL($query);

Mon tableau est sous la forme

Array
(
    [0] => Array
        (
            [IDECLI] => 1
            [NOMCLI] => Boulangerie de septeuil
            [LONGITUDE] => 1.6806804
            [LATITUDE] => 48.8920054
        )
    [1] => Array
        (
            [IDECLI] => 2
            [NOMCLI] => test
            [LONGITUDE] => 2
            [LATITUDE] => 5
        )
    [2] => Array
        (
            [IDECLI] => 3
            [NOMCLI] => test2
            [LONGITUDE] => 6
            [LATITUDE] => 6
        )

J ai essayé une trentaine de combinaisons de la fonction foreach, mais je ne parvient pas à passer à la ligne suivante, etc...

foreach ($input as $k => $v) {
    echo "\$a$k] => $v.\n";
}

J'obtiens :

$a[0] => Array.
$a[1] => Array.
$a[2] => Array.

J'ai loupé quelque chose et après y avoir passé la nuit et quelques cafés, je me permet de vous demander un petit coup de main

merci

Niko

3 réponses

maxfr, il y a 12 ans

As-tu essayé quelquechose comme ça ?

if(!empty($input'IDECLI'])){
  echo $input"IDECLI"]."<br />";
  echo $input"NOMCLI"]."<br />";
  echo $input"LONGITUDE"]."<br />";
  echo $input"LATITUDE"];
} else {
  foreach ($input as $v) {
    echo $v"IDECLI"]."<br />";
    echo $v"NOMCLI"]."<br />";
    echo $v"LONGITUDE"]."<br />";
    echo $v"LATITUDE"];
  }
}
MrGuillou, il y a 12 ans

Bonjour,
La solution de @maxfr devrait fonctionner. Après si la classe que tu utilises te retourne 2 types de structure, désolé de te le dire, mais elle est bidon, c'est une source de bug colossale.
La plus part des classes ont une méthode find et findOne pour bien différencié le retour.
Cordialement,

PS : merci d'utiliser pour ta prochaine question les balises 'code' du forum pour rendre plus lisible ton code

niko, il y a 12 ans

merci @maxfr, en effet cela fonctionne correctement
MrGuillou, si je comprends bien, cette classe est impropre à la consommation.
Je vais continuer à chercher quelque chose de plus fiable
Merci à vous deux