Eviter une boucle dans une autre en PHP

Fermé
Ro - 28 déc. 2008 à 12:20
redlifebig Messages postés 59 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 17 mars 2010 - 1 janv. 2009 à 12:44
Bonjour,
Je liste les news situées dans ma base de données SQL à l'aide d'une boucle. Ma table news est comme ceci :
id, titre, contenu, categorie
Cependant categorie est stocké en tant que l'ID de la catégorie. Le nom de la catégorie est situé dans un fichier serializé comme ceci :
ID -> nom
ID -> nom
...

J'aimerais de façon légère pouvoir afficher le nom de ma catégorie, je pourrais faire ceci :
<?php
//Récupération des catégories
$categories=unserialize(file_get_contents('categories.txt'));

$query = mysql_query("SELECT id,titre,contenu,categorie ORDER BY id DESC");
while($news=mysql_fetch_assoc($query) {
echo'<h1>'.$news['titre'].'</h1>';
echo $news['contenu'];

//Affichage de la catégorie
foreach($categories as $id=>$categorie) {
if($news['categorie]==$id) $news['categorie']=$categorie; //Si les id correspondent on donne le nom de la catégorie
}
}
?>

Voici ce que j'aurais pu faire mais c'est lourd de devoir faire une boucle dans une autre ! Pouvez-vous m'aider à trouver une autre solution ?
A voir également:

1 réponse

redlifebig Messages postés 59 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 17 mars 2010 23
1 janv. 2009 à 12:44
Bonjour

Vous pouvez enregistrer vos catégories dans une table SQL et utiliser une jointure
Maintenant si vous avez besoin d’utiliser serialize/unserialize voila la modification

$query = mysql_query("SELECT id,titre,contenu,categorie ORDER BY id DESC");
while($news=mysql_fetch_assoc($query) {
echo'<h1>'.$news['titre'].'</h1>';
echo $news['contenu'];
echo $categorie[$news['categorie]] ;
}

Cordialement
0