PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 06-08-2009 17:34:12

grizly
Membre
Inscription : 06-08-2009
Messages : 1

Comparer 2 tableaux...

Bonjour,

J'ai plusieurs menus sur ma page, chaque menu est regroupé par catégorie.

J'ai une première requête 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ées
for($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-jeux
Testimania

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 smile
Jo

Hors ligne

#2 06-08-2009 18:41:35

mcAllan
Mowdérateur
Lieu : Châteaurenard en Provence
Inscription : 08-05-2009
Messages : 269

Re : Comparer 2 tableaux...

Salut,

$tab est un tableau de tableaux donc in_array ne trouve pas la valeur recherchée.

Si dans $tab tu ne stockes que le nom, c'est inutile de mettre à chaque fois "NomSiteJeux".

array_push($tab, $res['id_du_vote']); est suffisant et in_array fonctionnera.


Promotion de PPOO : Programmation Propre Orientée Objet !!
Recommande AAO : Apéritif Avec Olives...
Glop, glop

Hors ligne

Pied de page des forums