joboy84 Posté 6 Août 2009 Posté 6 Août 2009 (modifié) Bonjour, J'ai plusieurs menus sur ma page, chaque menu est regroupé par catégorie. J'ai une premiere requete mysql dont le résultat est mis dans un tableau, contenant le top 10 des sites visités. Ensuite, j'ai une autre requête qui met le résultat dans un second tableau et qui contient tous les sites visités, sans distinction. Je souhaite, que si le site est présent dans le top 10 (tableau 1), il ne soit pas affiché lorsque je liste le contenu du tableau 2. <?php$tab=array();$tab1=array();//On crée un premier tableau$sql=mysql_query('SELECT id_du_vote FROM NoteGlobaleVotes ORDER BY note DESC LIMIT 10');while($res = mysql_fetch_array($sql)){array_push($tab,array('NomSiteJeux' => $res['id_du_vote']));} //On cree le second tableau$requete = mysql_query('SELECT NomSiteJeux, Categorie FROM FicheSitesJeux WHERE Taille = "Long" GROUP BY NomSiteJeux') or die ('Erreur: '.mysql_error());while($donnees = mysql_fetch_array ($requete)){array_push($tab1,array('NomSiteJeux' => $donnees['NomSiteJeux'], 'Categorie' => $donnees['Categorie']));} print_r($tab);echo'<p>';print_r($tab1);echo'<p>';//On affiche les donnéesfor($i = 0; $i < count($tab1); $i++) { //La je demande de ne sélectionner que les éléments du tableau ayant pour catégorie Multi-Jeux et if($tab1[$i]["Categorie"] == "Multi-Jeux" AND !in_array(''.$tab1[$i]["NomSiteJeux"].'', $tab)) { echo'<li><a href="/jeux-en-ligne-'.$tab1[$i]["NomSiteJeux"].'.html">'.$tab1[$i]["NomSiteJeux"].'</a></li>'; } }?> print_r de $tab retourne: Array ( [0] => Array ( [NomSiteJeux] => Toilokdo ) [1] => Array ( [NomSiteJeux] => Testimania ) [2] => Array ( [NomSiteJeux] => Marre ) ) print_r de $tab1 retourne: Array ( [0] => Array ( [NomSiteJeux] => Find-jeux [Categorie] => Multi-Jeux ) [1] => Array ( [NomSiteJeux] => Kadokado [Categorie] => Fun ) [2] => Array ( [NomSiteJeux] => Marre [Categorie] => Grattage ) [3] => Array ( [NomSiteJeux] => Testimania [Categorie] => Multi-Jeux ) [4] => Array ( [NomSiteJeux] => Toilokdo [Categorie] => Top ) ) Logiquement, je voudrais que cela retourne: Find-jeux En effet, c'est la seule entrée non présentes dans le premier tableau et ayant pour catégorie Multi-Jeux. Mais cela me retourne en réalité: Find-jeuxTestimania C'est comme si la condition !in_array etait ignorée ! Pourtant Testimania est présent dans le premier tableau... Ou est l'erreur et comment y remédier? Merci pour votre aide Jo Modifié 6 Août 2009 par joboy84 Pour les longs codes, nous utilisons la balise [codebox] elle permet d'ajouter un scroll au cadre ;) (Olitax)
joboy84 Posté 7 Août 2009 Auteur Posté 7 Août 2009 Finalement j'ai fais des boucles.. <?phpfor($i = 0; $i < count($tab1); $i++) { // condition de la 1ere boucle : tu cherches multi jeux if($tab1[$i]["Categorie"] == "Multi-Jeux") { // booleen qui détermine la condition d'arret pour chercher dans le tableau tab $trouve = 0; // 2eme boucle : on cherche dans tab for($j = 0; $j < count($tab); $j++) { // condition de la 2eme boucle : on cherche si on trouve le nom du site dans tab if ($tab1[$i]["NomSiteJeux"] == $tab[$j]["NomSiteJeux"]) { // on a trouvé donc on sort de la boucle $trouve = 1; break; } } // si on n'a pas trouvé on affiche if ($trouve==0) { echo'<li><a href="/jeux-en-ligne-'.$tab1[$i]["NomSiteJeux"].'.html">'.$tab1[$i]["NomSiteJeux"].'</a></li>'; } }}?> Merci tout de meme à ceux qui ont voulu aider Bonne continuation
captain_torche Posté 7 Août 2009 Posté 7 Août 2009 Il me semble que tu aurais obtenu la même chose avec array_diff.
jcaron Posté 7 Août 2009 Posté 7 Août 2009 Le array_in je peut pas fonctionner parce que le tableau n'est pas "plat" (il ne contient pas directement les noms, mais des tableaux qui eux contiennent les noms). Plusieurs options: - comme tu ne stockes qu'une seule information par jeu dans le premier tableau, le mettre à plat - faire une boucle pour aller chercher au deuxième niveau - faire l'exclusion au niveau de la deuxième requête SQL en ajoutant un AND NomSiteJeux NOT IN (recopier_premier_select) dans ta requête (à la fin de ta clause WHERE). Jacques.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant