Page 1 sur 1

pb foreach

Posté : 02 avr. 2017, 22:13
par quattro
Bonjour
Voici mon code :

Code : Tout sélectionner

//connexion BDD. require('../inc_/inc_connexion.php'); //recherche des produits. $result = $mysqli->query('SELECT produit_nom,produit_prix FROM produits') $row = $result -> fetch_array(); echo var_dump($row); //place dans un tableau $produit [$row['produit_nom']] = $row['produit_prix']; ?> <div> <ul><?php foreach ($produit as $cle => $val): ?> <li><?php echo $cle. ' - ' .$val. '€'; ?></li> </ul> <?php endforeach ?> </div>
je voudrais afficher dans ma liste, toutes les valeurs(foreach).
Mais là, il ne m'affiche que la première valeur??
Alors qu'il y en a une bonne dizaine ??

Re: pb foreach

Posté : 02 avr. 2017, 22:24
par or 1
http://php.net/manual/fr/mysqli-result.fetch-array.php
"mysqli_result::fetch_array -- mysqli_fetch_array — Retourne une ligne de résultat sous la forme d'un tableau associatif, d'un tableau indexé, ou les deux"
cela ne retourne qu'une seule ligne de résultats et pas toutes.

Re: pb foreach

Posté : 02 avr. 2017, 23:13
par Aureusms
Ce que veut dire or 1, c'est que tu dois d'abord "dés-empiler" le résultat de ta requête.
Les requêtes sont rendues comme une sorte de pile de résultats qui sont données une par une. Il faut donc que tu lises chaque pile ou que tu stockes chaque pile dans une variable.
//recherche des produits.
$result = $mysqli->query('SELECT produit_nom,produit_prix FROM produits')
while ($row = $result -> fetch_array()) :
    echo var_dump($row);
    //place dans un tableau
    $produit [$row['produit_nom']] = $row['produit_prix'];
endwhile;
Tu pourras ensuite afficher ta variable en format tableau $produit avec foreach.
?>
<div>
<ul><?php foreach ($produit as $cle => $val): ?>
<li><?php echo $cle. ' - ' .$val. '€'; ?></li>
</ul>
<?php endforeach ?>
</div>
Tu peux aussi gérer l'affichage à l'intérieur du while.