Affichage catégories et articles

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Affichage catégories et articles

Re: Affichage catégories et articles

par Yann29 » 21 mai 2011, 20:26

Merci Dux, cela fonctionne parfaitement ;)

J'ai juste amélioré ma raquête avec LEFT JOIN pour pouvoir choper les données des deux tables plus facilement.

Tu m'a sauvé sur le coup, merci ;)

Re: Affichage catégories et articles

par Dux » 21 mai 2011, 16:04

Salut,

dans ta requête utilise GROUP BY pour que les articles sortent groupés par catégorie.
Puis dans ton while d'affichage, utilise une variable $cat_temp pour lancer l'affichage du DIV catégorie à chaque changement de celle-ci

Exemple de while à améliorer
echo '<div><ul style="display:none">';
$affiche = mysql_fetch_array($reqcategories)){
    if ($cat_tmp != $affiche['nom_categorie']) {
        $cat_tmp = $affiche['nom_categorie'];
        echo '</ul></div>';  // Ferme le DIV précédent
        echo '<div class="blocs-categories-tutos">';
        echo '<img class="img-left" src="pages/images/categories_tutoriels/paper/'.$affiche['id_categorie'].'.png" alt=""/><h3>'.$affiche['nom_categorie'].'</h3>
        <p>'.$affiche['description_categorie'].'</p>
        <ul class="liste-tutos">
        ';
        }
    echo '<li><img src="pages/images/tutoriels/'.$affiche['niveaux'].'.png" alt="'.$affiche['niveaux'].'"/> <a href="index.php?p=voirtuto&id='.$affiche['id'].'">'.$affiche['titre'].'</a></li>';
}
echo '</ul></div>';  // Ferme le DIV précédent

Re: Affichage catégories et articles

par Yann29 » 21 mai 2011, 12:11

Bonjour moogli,

La requête fonctionne bien, je l'ai testée sur phpmyadmin, je récupère les infos que je souhaite. Le problème survient à l'affichage. Comme tu peux le constater dans le code, j'ai créé un container pour chaque catégorie (exemple: HTML, CSS, SQL etc).

Je cherche à afficher les catégories avec les tutos comme ceci:

Image

Le problème c'est que ce container (en DIV) se répète à chaque ajout de tutos, si par exemple ce dernier fait partie de la catégorie "CSS", le tuto ne s'ajoute pas dans les "<li>" mais recréer le container de cette façon:

Image

Je pense que le problème vient du fait que tout est dans la boucle while. Je ne sais vraiment pas comment faire pour que la catégorie ne se répète pas et que les tutos correspondant s'ajoutes dans les listes <li>.

Merci.

Re: Affichage catégories et articles

par moogli » 21 mai 2011, 00:15

salut,

j'ai pas tout compris tu veux que si tu ajoute un tuto dans la table tu a deux fois la catégorie à l'affichage ?

a tu testé tes requêtes sur la console mysql ?

@+

Affichage catégories et articles

par Yann29 » 20 mai 2011, 22:22

Bonsoir,

Je continue activement mon développement mais là je suis complétement freiné. Je m'explique:

Sur mon site, j'ai créé une partie tutoriels avec catégories. J'ai créé deux tables (contenu_tutoriels et categories_tutoriels) je ne vais pas entrer dans les détails concernant ces deux tables, je pense que vous connaissez le principe avec une colonne id_categorie dans la table contenu_tutoriels...bref

Je souhaite lister tous ce bon monde sur une seule page, je ne vais pas le cacher je souhaite faire le même style que sur alsacreations.com. J'arrive à récupérer le tous sans problème, mais un souci survient quand j'ajoute un tuto. La même catégorie se dédouble à chaque ajout de tutos.

Je pense savoir pourquoi, en fait j'ai tous mis dans une boucle en me disant "c'est pas bien compliqué le PHP, je fout ça dans une boucle comme je fait à chaque fois", du coup tous se répète à chaque ajout de tuto, ce qui est normal après tout...

Franchement, la je sèche complétement. Je vous propose le code actuel, donc la fameuse boucle while:

	$sqltuto = "SELECT contenu_tutoriels.id,titre,description,date,auteur,niveaux,contenu, id_categorie, categories_tutoriels.nom_categorie, description_categorie
	FROM categories_tutoriels, contenu_tutoriels
	WHERE id_categorie=categories_tutoriels.id ORDER BY date DESC";
	$reqcategories = mysql_query($sqltuto) or die('Erreur SQL !<br/>'.$sqltuto.'<br/>'.mysql_error());
	echo '<div id="titre-tutoriels"><span>Tutoriels</span> Ci-dessous, les tutoriels classés par catégories</div>';

	
	while($affiche = mysql_fetch_array($reqcategories)){
	echo '<div class="blocs-categories-tutos">';
	echo '<img class="img-left" src="pages/images/categories_tutoriels/paper/'.$affiche['id_categorie'].'.png" alt=""/><h3>'.$affiche['nom_categorie'].'</h3>
	<p>'.$affiche['description_categorie'].'</p>
	<ul class="liste-tutos">
	<li><img src="pages/images/tutoriels/'.$affiche['niveaux'].'.png" alt="'.$affiche['niveaux'].'"/> <a href="index.php?p=voirtuto&id='.$affiche['id'].'">'.$affiche['titre'].'</a></li>
	</ul>
	';
	echo '</div>';
	}

J'ai essayé avec le while qui enveloppe la liste des tutos mais après ça plante niveau catégories.

Si c'est mal expliqué n'hésitez pas à me remonter ;)

Merci.