Catégories et sous catégories

Eléphanteau du PHP | 38 Messages

27 mars 2015, 12:37

Bonjour,

Cela fesait un moment que je n'était pas passé et je tiens à dire que le design du forum est très joli.

Je suis en train de développer un site internet et j'essaie de tout automatisé, mais je suis coincé, je tiens à dire que je suis curieux mais j'ai besoin d'un petit coup de main concernant les bases...

Voilà déjà les bases de données que j'ai crée:

http://i.imgur.com/nObbeS1.png

Maintenant je sais afficher une ou plusieur bases, mais comment dois-je faire et je pense que ceci est très simple pour lorsque je clique sur le lien d'une catégorie, elle affiche les sous catégories qu'elle contient, et que lorsque je clique sur une sous catégorie, elle affiche les commerces quel contient.

Je vous remercie d'avance pour votre aide.

Bonne journée !

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

27 mars 2015, 13:13

Bonjour,

Cela fesait un moment que je n'était pas passé et je tiens à dire que le design du forum est très joli.
Merci :D
Maintenant je sais afficher une ou plusieur bases, mais comment dois-je faire et je pense que ceci est très simple pour lorsque je clique sur le lien d'une catégorie, elle affiche les sous catégories qu'elle contient, et que lorsque je clique sur une sous catégorie, elle affiche les commerces quel contient.
En PHP pur, a chaque fois que tu cliques, cela recharge la page sur laquelle tu es en passant en paramètre la catégorie ou sous-catégorie cliquée.
Voici un exemple :
page.php :arrow: là tu affiches la liste des catégories où pour chacune tu fais un lien vers "page.php?categorie=id_categorie1"

page.php?categorie=id_categorie_cliquee :arrow: là tu affiches la liste des sous-catégories en indiquant dans ta requête SQL de filtrer sur la catégorie $_GET['categorie']
Sur chaque sous-catégorie tu fais un lien vers "page.php?souscategorie=id_souscategorie"

page.php?souscategorie=id_souscategorie_cliquee :arrow: là tu affiches la liste des commerces en filtrant sur la sous-catégorie passée en paramètre $_GET['souscategorie']


Pour éviter de recharger la page à chaque clic, la solution est d'utiliser du javascript en complément à ton PHP.
- Si tu as peu de sous-catégories et peu de commerce, tu peux charger dans ta page toutes les sous-catégories et tous les commerces dans des div invisibles (style CSS display:none) que tu déclencheras l'affichage au clic sur la catégorie/sous-catégorie
- Si tu as beaucoup de sous-catégories et commerces,alors il faut faire un chargement dynamique lors du clic via de l'ajax et ça complexifie un peu le développement.


Si tu es débutant (notamment en JS), il vaut mieux commencer par la solution en pur PHP et voir dans un 2nd temps pour rajouter du javascript.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 38 Messages

27 mars 2015, 13:28

Et si je te demande de me donner la requete SQL pour filtrer ou un lien qui m'explique cela serait possible. :s

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

27 mars 2015, 14:44

J'avais pas vu que tu fonctionnais avec des id, du coup en paramètres tu as juste à passer tes id plutôt que le nom, j'ai mis à jour mon post précédent.

La requête SQL est très simple :
SELECT * FROM souscategories WHERE categories_id=3
En remplaçant dans mon exemple 3 par le paramètre $_GET['categorie'] après l'avoir filtrée pour être sûr ce que ce soit un entier. Par exemple avec la fonction filter_var() http://php.net/manual/fr/function.filter-var.php
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 38 Messages

27 mars 2015, 14:54

Très bien.

Pour la requete c'est compris.

J'ai reussis à recuperer les catégories de cette manière:
<?php

include 'includes/config.php';

?>

<?php

$reponse = mysql_query ("SELECT * FROM categories"); // Requête SQL
$
    
 while ($donnees = mysql_fetch_array($reponse)) 
 {
?>
<?php echo $donnees['id'];?> |
<?php echo $donnees['nom'];?> |
<?php echo '<a href="index.php?categorie=' . $donnees['id'] . '">'; ?>Voir</a>

 

<?php
 }
 
?>




<?php
mysql_close();
?>
Maintenant il me faut afficher ces sous catégories en intéraction avec la catégorie parents, le soucis étant que malgrés tes explications très précise j'ai saisie pour la requete mais pas pour le code php :evil:

Mammouth du PHP | 688 Messages

27 mars 2015, 18:16

quand on click sur voir, on passe le paramètre categorie à la page index.php.
dans index.php, si le parametre categorie existe
if(isset($_GET['categorie'])){
et est bien un entier, alors la requete à exécuter est :
$reponse = mysql_query ("SELECT * FROM souscategories WHERE categories_id=".$categorie); // Requête SQL

Eléphanteau du PHP | 38 Messages

27 mars 2015, 20:16

Je te remercie tof73 j'essaie de mettre ça en oeuvre et je vous tiens au courant de l'avancement.

EDIT:

Nouvelle essai mais c'est un echec, désolé pour mon amateurisme...
<?php

include 'includes/config.php';

?>

<?php

$reponse = mysql_query ("SELECT * FROM categories"); // Requête SQL
    
 while ($donnees = mysql_fetch_array($reponse)) // On boucle pour afficher toutes les données et on met toutes données dans un tableau
 {
?>
<?php echo $donnees['id'];?> |
<?php echo $donnees['nom'];?> |
<?php echo '<a href="index.php?categorie=' . $donnees['id'] . '">'; ?>Voir</a>

 

<?php
 }
 
?>
<?php
if(isset($_GET['id'])){
$reponse = mysql_query ("SELECT * FROM souscategories WHERE categories_id=".$id); // Requête SQL
while ($categorie = mysql_fetch_array($reponse)) // On boucle pour afficher toutes les données et on met toutes données dans un tableau
 {
?>
<?php echo $categorie['id'];?> |
<?php echo $categorie['nom'];?> |


 

<?php
 }
}
?>

<?php
mysql_close(); // On oubli pas de déconnecter la base de données
?>