![]() |
[Sql] moteur de recherche par affinitées - Version imprimable +- N-PN White-Hat Project (https://dev.n-pn.fr/forum) +-- Forum : Programmation (https://dev.n-pn.fr/forum/forumdisplay.php?fid=72) +--- Forum : Langages interprétés (https://dev.n-pn.fr/forum/forumdisplay.php?fid=27) +--- Sujet : [Sql] moteur de recherche par affinitées (/showthread.php?tid=2032) |
[Sql] moteur de recherche par affinitées - Saitek - 07-05-2012 Je dois rendre un truc assez compliqué dans pas longtemps et je vois pas comment le faire U_U Dans mon site j'ai deux groupes de membres, des élèves et des profs. Le but du site est de permettre aux élèves de trouver le meilleur prof en fonction de ce qu'ils recherchent. Chaque prof est doté de plusieurs compétences (dans ma base de données les champs : competence0 à competence9). L'élève doit pouvoir à travers le moteur de recherche choisir le prof qui correspond le plus à ses besoin. Je pense à une page accessible qu'aux élèves avec une combobox de toutes les compétences disponibles des profs. Comment je peux choisir le bon professeur ? En fait, comment regarder lequel a le plus de compétences (competence0 à competence9) par rapport au choix de l'élève. Serait-ce une requête du style SELECT competence0, competence1 (jusqu'à 9) FROM lesprofs WHERE competence1 = laCaseCoché1 OR competence2 = laCaseCoché2 Les profs pourraient ajouter eux-mêmes leur compétences ce qui poserait alors problème =( Question bonus : Je pense qu'il y aura énormément de compétences différentes. Comment faire varier le nombre de champs en fonction du prof ? (genre un tel prof aura des champs competence0 a competence5 tandis que l'autre aura de competence0 à competence153 ) ? Je ne suis pas certain que définir des champs compétence+numéro soit très propre. Vous en pensez quoi ? RE: moteur de recherche par affinitées - supersnail - 07-05-2012 Bonjour, Effectivement définir des champs "competeceX" est dégueu et risque de devenir un joyeux bordel :> Regarde du côté de l'opérateur LIKE en SQL, ça devrait te donner des idées (enfin j'espère :þ). Sinon tu peux toujours faire une table "competences" qui est reliée à l'uid de l'utilisateur (avec un truc du genre). Code : +----------------------+ +-----------+ RE: moteur de recherche par affinitées - Booster2ooo - 08-05-2012 Je plussoie aaSSfxxx, il est nettement plus intelligent de créer une table de relations entre les prof et leurs compétences. Par contre, j'ajouterai une table indépendante de compétences et une table de relations: [Profs] Id (clé primaire autoincrémentée)| Nom | Prenom | Adresse ... [Compétences] Id (clé primaire autoincrémentée)| Nom | Descriptif ... [ProfComp] ProfId | CompId Tu peux ainsi avoir Profs 1| aaSSfxxx 2| Saitek 3| Cybersee Competences 1| HTML 2| ASM 3| Java 4| Reseau 5| TheGame ProfComp 1|1 (aaSSfxx - HTML) 1|2 (aaSSfxx - ASM) 2|1 (Saitek - HTML) 2|4 (Saitek - Reseau) 2|5 (Saitek - TheGame) 3|1 (CyberSee - HTML) 3|2 (Cybersee - ASM) ... Mots clés pour tes recherches Google: primary key (clés primaires) foreign key (clés étrangères) relations Enjoy ![]() RE: moteur de recherche par affinitées - EpicOut - 08-05-2012 Booster: Pute RE: moteur de recherche par affinitées - Saitek - 09-05-2012 Merci pour vos réponses. LIKE me dit bien quelque chose effectivement. Je vais faire une table prof, une compétences et une qui fera la relation entre les deux. Ce sera bien mieux ![]() Je vais déguster avec les clés je sens mais c'est tout de même bien sympa. Et aussi sur uid / cid parce que là je suis un peu perdu ![]() RE: moteur de recherche par affinitées - Booster2ooo - 10-05-2012 Tu n'es pas obligé de jouer avec des clés mais c'est nettement plus propre. Tu peux faire (schématiser): int profId = SELECT id FROM professeurs WHERE name = 'Dupont' // Recup l'id de M. Dupont array[int] compId = SELECT cid FROM profcomp WHERE pid = profId // Recup un tableau d'id de compétences de M. Dupont (via son Id) for(cid in compId) compName = SELECT name FROM competences WHERE id = cid // Pour chaque id de compétence, récup son nom Après, toutes les recherches se font sur des ID, tu cherche dans la table de relations les ID des compétences qui t'intéressent et tu retourne les profs correspondants. (mais c'est quand mm bcp mieux avec des clés étrangères je pense ![]() |