Problème avec une boucle for each

Signaler
Messages postés
20
Date d'inscription
jeudi 1 juillet 2004
Statut
Membre
Dernière intervention
1 juillet 2010
-
Messages postés
20
Date d'inscription
jeudi 1 juillet 2004
Statut
Membre
Dernière intervention
1 juillet 2010
-
Bonjour à tous, j'essaye d'afficher les éléments d'un tableau avec une boucle for each mais cela m'affiche 5 fois (il y a 5 produits dans ma table) le même élément :

********************* CODE *************************
<?
// Include : Chemins virtuels du site //
require_once("/home/site/www/inc/config.inc.php");

$produits = new produits ($connection);
$result = $produits->getProduits1();

if (sizeof($result) > 0) {

foreach ($result as $key => $val) {

echo "Nom : ".$val->field("prod_NomProduit")." - Poids : ".$val->field("prod_PoidsProduit")."
";

}
} else {echo "Aucun produit" ;}
?>

********************* RÉSULTAT *************************
Nom : produit numéro1 - Poids : 100grammes
Nom : produit numéro1 - Poids : 100grammes
Nom : produit numéro1 - Poids : 100grammes
Nom : produit numéro1 - Poids : 100grammes
Nom : produit numéro1 - Poids : 100grammes

Merci d'avance...

4 réponses

Messages postés
82
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
1 avril 2011
1
Salut.

Si tu fais
print_r($result);


Ca t'affiches quoi?

-- message approuvé par Jean-Claude Van Damme --
Messages postés
20
Date d'inscription
jeudi 1 juillet 2004
Statut
Membre
Dernière intervention
1 juillet 2010

Ca me donne ça :

Array (

[1006] => navigation Object (

[tbl_ligne] => Array (

[0] => 21
[prod_idProduit] => 21
[1] => produit numéro1
[prod_NomProduit] => produit numéro1
[2] => 100grammes
[prod_PoidsProduit] => 100grammes

)
[rang] => 37
[result] => Resource id #21
[tabResult] => [EOF] => 1 [BOF] => 1 [count] => 37 [erreur_n] => 0 [erreur] => Fin de jeu d'enregistrements atteintes. )

[21] => navigation Object ( [tbl_ligne] => Array (

[0] => 21
[prod_idProduit] => 21
[1] => produit numéro1
[prod_NomProduit] => produit numéro1
[2] => 100grammes
[prod_PoidsProduit] => 100grammes

)
[rang] => 37
[result] => Resource id #21
[tabResult] => [EOF] => 1 [BOF] => 1 [count] => 37 [erreur_n] => 0 [erreur] => Fin de jeu d'enregistrements atteintes. )


) ------------
1
Messages postés
82
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
1 avril 2011
1
D'accord.

Donc c'est ton tableau qui ne va pas.

Je supposes que derrière $produits->getProduits1(), il y a une requête qui va te chercher une liste de produits en base.

Fais un "echo" sur cette requête, passes-la dans l'éditeur de requête SQL, et vérifie si le résultat retouné te semble correct.
En tout cas, ça ressemble à un problème de jointure qui ferait que ta requête te sort des doublons.

A+

-- message approuvé par Jean-Claude Van Damme --
Messages postés
20
Date d'inscription
jeudi 1 juillet 2004
Statut
Membre
Dernière intervention
1 juillet 2010

En fait, j'ai créé une classe produits. La fonction produits me récupère tous les produits grâce à une requête sql, et la fonction getProduits1 me permet de ne sélectionner que les produits de type 1. Ma requête sql ($sql) est valide (elle m'affiche bien tous les produits) mais quand je veux trier mes produits par type (getProduits1) ça ne me marche plus. Si je tape ma requête sql en ajoutant une condition AND prod_TypeProduit=1, ça marche, donc ça doit venir de ma fonction getProduits1 mais je ne comprends pas le problème... Merci encore!

class produits {

var $connect ;
var $erreur_n ;
var $erreur ;
var $produitsbdd ;

function produits ($connection) {
// Constructeur de la classe produits
$this->connect = $connection ;

$sql = "SELECT prod_idProduit, prod_NomProduit, prod_PoidsProduit, prod_TypeProduit, prpd_ValeurTTCPrixProduit FROM pro_produits, pro_prix_produits
WHERE prpd_fkProduit=prod_idProduit ORDER BY prod_NomProduit" ;

if ($this->connect->execute ("produits", 1, $sql) == 0) {
$this->erreur_n = 0 ;
$this->erreur = mysql_errno()." : ".mysql_error()."
" ;
echo $this->erreur ;
}

$this->produitsbdd = $this->connect->liste_req["produits"];
}


function getProduits () {
// Recupere tous les produits presents dans la BDD
return ($this->produitsbdd);
}


function getProduits1 () {
// Recupere les produits1 seulements
$liste = $this->produitsbdd ;
while (!$liste->EOF) {
if ($liste->field("prod_TypeProduit") == 1) {
$Produits1[$liste->field("prod_idProduit")] = $liste ;
}
$liste->moveNext() ;
}
if (isset($Produits1)){ return ($Produits1);}
}


}