PHP : Erreur Double foreach imbriqué
Résolu
maverickz
Messages postés
49
Date d'inscription
Statut
Membre
Dernière intervention
-
alain1967 Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
alain1967 Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un petit souci avec l'imbrication d'un double foreach qui me donne l'erreur :
Warning: Invalid argument supplied for foreach() in C:\wamp\www\prog\products\show.php on line 26
Je vous donne le contenu du fichier "show.php" qui affiche le tableau et de "functions.php" pour l'appel de la fonction venant de la DB.
show.php
---------------
Voila l'appel de la fonction dans la DB du fichier functions.php, elle , elle marche mais elle serait plus propre avec un foreach aussi sans doute ?:-)
Le but du jeu serait que <th> $cell </th> m'affiche chaque produit ligne par ligne dans le tableau et si possible avec les deux échos des liens EDIT et DELETE qui pour le moment sont encore en dehors de la boucle.
Pour ces deux echos, je n'ai pas trouvé comment faire pour que la variable $productID prenne l'ID du produit de chaque ligne, j'ai pensé enlever cette variable et faire un explode($cell) mais sans succès vu l'erreur ;-)
Merci a vous pour votre coup de main et d'avoir pris la peine de me lire.
J'ai un petit souci avec l'imbrication d'un double foreach qui me donne l'erreur :
Warning: Invalid argument supplied for foreach() in C:\wamp\www\prog\products\show.php on line 26
Je vous donne le contenu du fichier "show.php" qui affiche le tableau et de "functions.php" pour l'appel de la fonction venant de la DB.
show.php
---------------
$tab=showProduct(); echo "<table border='1'> <caption> Products </caption> <tr> <th> ID </th> <th> Product Name </th> <th> Quantity </th> <th> UnitPrice </th> <th> Description </th> <th> Edit </th> <th> Delete </th> </tr> "; for ($i = 0; isset($tab[$i]); $i+=sizeof($tab)) { $productID=$tab[$i]; foreach ($tab as $tab[$i] => $row) { foreach ($row as $cell) { <= Ligne 26 echo "<th> $cell </th>"; } } echo '<th> <a href="../products/edit.php?productID='.$productID.' "<img border=0 src="../images/edit.png"/> </a></th>'; echo '<th> <a href="../products/delete.php?productID='.$productID.' "<img border=0 src="../images/delete.gif"/> </a></th>'; } echo '</table>';
Voila l'appel de la fonction dans la DB du fichier functions.php, elle , elle marche mais elle serait plus propre avec un foreach aussi sans doute ?:-)
// Permet d'afficher la liste complète de tous les produits. function showProduct() { $connect=MySQLConnect(); $cpt=0; $request = mysql_query('SELECT * FROM products'); while($result = mysql_fetch_array($request)) { $size=mysql_num_fields($request); $tab[$size*$cpt] = $result['productID']; $tab[$size*$cpt+1] = $result['productName']; $tab[$size*$cpt+2] = $result['quantity']; $tab[$size*$cpt+3] = $result['unitPrice']; $tab[$size*$cpt+4] = $result['description']; $cpt++; } return $tab; mysql_close($connect); }
Le but du jeu serait que <th> $cell </th> m'affiche chaque produit ligne par ligne dans le tableau et si possible avec les deux échos des liens EDIT et DELETE qui pour le moment sont encore en dehors de la boucle.
Pour ces deux echos, je n'ai pas trouvé comment faire pour que la variable $productID prenne l'ID du produit de chaque ligne, j'ai pensé enlever cette variable et faire un explode($cell) mais sans succès vu l'erreur ;-)
Merci a vous pour votre coup de main et d'avoir pris la peine de me lire.
A voir également:
- PHP : Erreur Double foreach imbriqué
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour a la ligne php - Forum Webmastering
- Alert php - Forum PHP
- Retour a la ligne php ✓ - Forum PHP
3 réponses
Bonjour,
La structure de ton array à la base n'est pas top.
Tu devrais plutôt t'arranger pour obtenir quelque chose comme :
La structure de ton array à la base n'est pas top.
Tu devrais plutôt t'arranger pour obtenir quelque chose comme :
function showProduct() { $tab = array(); $request = mysql_query('SELECT productId, productName, quantity, unitPrice, description FROM products'); while($result = mysql_fetch_array($request)) { $tab[$result['productID']]['name'] = $result['productName']; $tab[$result['productID']]['quantity'] = $result['quantity']; $tab[$result['productID']]['price'] = $result['unitPrice']; $tab[$result['productID']]['description'] = $result['description']; } return $tab; }