Récuperation de données dans une bases de données

Résolu
ljmontana - 6 févr. 2013 à 14:25
cs_stay
Messages postés
493
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
24 mai 2017
- 7 févr. 2013 à 21:13
Bonjour à tous.
Voilà j'implemente actuellement, un projet sur un site de vente de produits, ma question est de savoir comment recuperer les produits d'une catégories avec les produits qui sont dans les sous catégories de cette categorie, sachant que au niveau de ma conception j'ai créer une table catégories qui contient les catégories et les sous catégories, et table produit qui contient tous les produits.
conception de ma table:
--------------------------------------
| id |categorie | mere |
--------------------------------------
| 1 |Hight Tech | 0 |
| 2 |Laptop | 1 |
| 3 |Desktop | 1 |
--------------------------------------

5 réponses

cs_stay
Messages postés
493
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
24 mai 2017
3
7 févr. 2013 à 13:42
Tu es obligé de faire une boucle si tu veux trouver les enfants.
Tu as essayé de créer une fonction php récursive pour rechercher les enfants ?
Et vérifier si c'est plus rapide !
Pour moi c'est plus simple car en temps réel, tu crées un tableau (array en php) optimisé.

Par la suite, enregistrer en cache le résultat n'est pas à négliger.
Cela dépend de l'application.

stéph
3
cs_stay
Messages postés
493
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
24 mai 2017
3
6 févr. 2013 à 16:51
Tu veux créer une récursive qui recherche mere = id ?.

stéph
0
J'ai fait cette requête, elle fonctionne à merveille:
*******************************************************************************
$req = $bdd->query("SELECT * FROM categories WHERE id=".$_GET['id']."
UNION
SELECT id FROM categories WHERE mere=".$_GET['id']);
while($data = $req->fetch()) {
$requete = $bdd->query("SELECT * FROM produits WHERE id_cat=".$data[0]);
while($reponse = $requete->fetch()) {
echo $reponse['titre']."
";
}
$requete->closeCursor();
}
********************************************************************************
Mais le temps de reponse est trop long, n'y a t-il pas une autre maniere sans imbrication de boucle ?
0
Merci beaucoup, ça marche et c'est plus rapide que l'autre
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_stay
Messages postés
493
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
24 mai 2017
3
7 févr. 2013 à 21:13
Super, :)

stéph
0