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 15/12/2011, 09h25   #1
Membre éprouvé
 
Avatar de gtraxx
 
Homme Aurélien Gérits
Développeur Web
Inscription : mai 2006
Messages : 1 045
Détails du profil
Informations personnelles :
Nom : Homme Aurélien Gérits
Âge : 30
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2006
Messages : 1 045
Points : 498
Points : 498
Par défaut Afficher le 2e foreach sans doublon

Bonjour, je ne savais pas exactement comment construire mon intitulé mais bon, je vais vous résumer la situation.
Je récupère via une requête mysql un résultat qui doit être afficher avec un double foreach.
Le premier qui liste les éléments principaux et le second qui liste les résultat secondaire de chaque élément principal.
Jusque la rien de compliquer, cependant lorsque j'affiche les résultats secondaire il retourne dans certain enregistrements ceux des précédents.
ce qui est vraiment embêtant et je suis certain que tout vient du tableau.
Voici ma requête SQL:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SELECT m.idmovies, m.m_name, m.m_img, f.m_f_name, lang.iso, rel.WORD_LIST_KIND, rel.ID_LIST_KIND
FROM mg_movies AS m
JOIN mg_movies_format AS f
USING ( idformat )
LEFT OUTER JOIN (
 
SELECT rel.idmovies, GROUP_CONCAT( h.m_k_name
ORDER BY h.idkind
SEPARATOR "," ) AS WORD_LIST_KIND, GROUP_CONCAT( CAST( h.idkind AS CHAR )
ORDER BY h.idkind
SEPARATOR "," ) AS ID_LIST_KIND
FROM mg_movies_kind_rel rel
JOIN mg_movies_kind_helper AS h
USING ( idkind )
GROUP BY rel.idmovies
)rel ON ( rel.idmovies = m.idmovies )
JOIN mg_language AS lang ON ( m.idlang = lang.idlang )
Celle-ci me retourne des résultats bien formée (voir ma pièce jointe)
Pour afficher les résultats je fais comme ceci :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
foreach ($movies_db->s_film_last_record('fr',$max) as $list){
			if($list['WORD_LIST_KIND'] != null OR $list['ID_LIST_KIND'] != null){
				$wordtabs = explode(',', $list['WORD_LIST_KIND']);
				$idtabs = explode(',', $list['ID_LIST_KIND']);
				$arr_conb = array_combine($idtabs,$wordtabs);
				foreach($arr_conb as $subrow=>$subval){
					$url = magetools_model_string::movieUrlKind(
							'fr',
							$subrow,
							$subval
					);
					$word []= '<a href="'.$url.'">'.$subval.'</a>';
				}
				$tag = implode(', ', $word);
			}else{
				$tag = null;
			}
}
J'ai réduit le code pour que ce soit lisible mais le résultat est assez surprenant:
Résultat d'un print_r sur le tableau principal :
Code :
Array ( [0] => Array ( [idmovies] => 0000022 [m_name] => Le Maître d'armes [m_img] => 4vvgvnz9dp4wcg4cw0.jpg [m_f_name] => long métrage [iso] => fr [WORD_LIST_KIND] => Action,Arts Martiaux [ID_LIST_KIND] => 1,5 ) [1] => Array ( [idmovies] => 0000021 [m_name] => Piège de cristal [m_img] => [m_f_name] => long métrage [iso] => fr [WORD_LIST_KIND] => Action,aventure [ID_LIST_KIND] => 1,2 ) [2] => Array ( [idmovies] => 0000013 [m_name] => test [m_img] => [m_f_name] => long métrage [iso] => fr [WORD_LIST_KIND] => Action,documentaire,romantique [ID_LIST_KIND] => 1,3,4 ) [3] => Array ( [idmovies] => 0000001 [m_name] => machin truc [m_img] => [m_f_name] => long métrage [iso] => fr [WORD_LIST_KIND] => [ID_LIST_KIND] => ) [4] => Array ( [idmovies] => 0000002 [m_name] => mon film [m_img] => [m_f_name] => long métrage [iso] => fr [WORD_LIST_KIND] => [ID_LIST_KIND] => ) )
Résultat d'un print_r sur le second tableau (dans la boucle):
Code :
Array ( [1] => Action [5] => Arts Martiaux ) Array ( [1] => Action [2] => aventure ) Array ( [1] => Action [3] => documentaire [4] => romantique )
Je pense que tout vient du second tableau (probablement mal formaté)
car quand j’exécute tout fonctionne bien sauf que je résupère des enregistrement venant des précédents donc Art martiaux reviens dans plusieurs enregistrement alors que je n'ai qu'une seul fois en principe.
Voir mon fichier attaché numéro 2 pour voir le résultat actuel, on distingue que les liens en bleu sont doublé.

EDIT: Bon j'ai trouvé à mon avis j'étais pas bien réveillé ce matin donc la solution est toute simple.
il faut ajouté $word = ''; avant le foreach et tout roule dingue sa
Images attachées
Type de fichier : png rq-film.png (49,2 Ko, 4 affichages)
Type de fichier : png cine2011-12-15.png (5,8 Ko, 2 affichages)
__________________
Au petit déjeuner, je prend du PHP et au souper du jQuery.
AFUP 2009 : Bien optimiser son code pour le référencement
Mon projet open source de librairie PHP 5: magix cjquery
gtraxx 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 05h05.


 
 
 
 
Partenaires

Hébergement Web