Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1160 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Étudiante en détresse !!!!

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Étudiante en détresse !!!!

n°2091894
cintiahtg
Posté le 28-07-2011 à 10:13:17  profilanswer
 

Bonjour à tous,
Actuellement en stage dans une entreprise, j'ai pour objectif de mettre en place un logiciel qui gère les demandes d’emplois.
Pour se faire, une application web (html, php, javascript, mysql) à été mise en place. Jusque la tout vas bien  :)  
 
Or pour répondre à une des différentes attentes utilisateurs, je dois réaliser une fonction "rechercher" qui, en fonction des critères de sélection, me renvoie le résultat attendu. Le problème : la recherche peux s'exécuter selon plus de 12 critères différents (localisation, age, mots clés, nom, formation, secteur, habilitation, permis etc).
 
Ma première idée à été de créer une requête spécifique à chaque cas,(exemple d'une demande : recherche un candidat majeur, dans le département 37, de formation commercial ayant le permis b). Cependant, après un petit calcul, je me suis rendu compte qu'il y a plus de 4000 possibilités ce qui rend le traitement cas par cas beaucoup trop long...
 
Autre idée : je souhaiterai fusionner le résultat de plusieurs requêtes SQL (et logique).
Mais techniquement, je ne trouve pas la solution...
 
Voici un exemple concret de se que j’attends :
 
L'utilisateur souhaite afficher le nom et le prénom des candidats qui possèdent le permis B et qui sont dans le département 37.
 
Première requête : "SELECT nom, prenom FROM `candidat` WHERE permis.libellepermis = 'B';
Résultat : DUPONT Simon, DUFOUR David, SELLIER Sylvie
 
Deuxième requête : "SELECT nom, prenom FROM `candidat` WHERE candidat.cp= 37;
Résultat : DUFOUR David, TOM alex
 
Désormais je voudrai connaître une commande qui fusionne ces deux requêtes pour obtenir le résultat suivant :DUFOUR David.
Est ce que c'est possible? Dois-je traitée les 4000 cas?
Merci à ceux qui liront mon problème et essayeront de le résolver  ;)  

mood
Publicité
Posté le 28-07-2011 à 10:13:17  profilanswer
 

n°2091896
flo850
moi je
Posté le 28-07-2011 à 10:40:37  profilanswer
 


en PHP, je ferai quelquechose comme ça  :  

Code :
  1. $query =  "SELECT nom, prenom FROM `candidat` WHERE 1=1 ";
  2. if($ GET['cp']){
  3.    $cp=mysql_real_escape_string($ GET['cp']);
  4.    $query .= "  AND cp = '$cp' ";
  5. }
  6.  
  7. //et ainsis de suite pour chacun de tes 12 paramètres


---------------

n°2091897
cintiahtg
Posté le 28-07-2011 à 10:43:39  profilanswer
 

Merci pour ta réponse très rapide, je vais tester sa immédiatement =)

n°2091900
cintiahtg
Posté le 28-07-2011 à 11:04:21  profilanswer
 

Sa fonctionne parfaitement, merci à toi flo ;)
Une fois fini, je posterai mon code pour ceux que sa intéresse.
Merci encore biz

n°2092167
cintiahtg
Posté le 29-07-2011 à 17:28:49  profilanswer
 

Bonjour à tous,
J'ai de nouveau un problème que je n'arriva pas à résoudre...
En effet je souhaite réaliser une requête, qui en fonction de la formation d'un candidat choisi me ressort son nom ainsi que son prénom.
 
Ma base de données possède les trois tables suivantes :  `candidat`;`posseder`;`formation`
 
        Candidat                                  posseder                               formation
Nom,prénom,idcandidat                idcandidat,idformation               idformation,intitule
 
Lorsque je sélectionne une seul formation, ma requête fonctionne correctement  
SELECT distinct candidat.nom, candidat.prenom FROM candidat,posseder WHERE 1=1  AND candidat.idCANDIDAT = posseder.idCANDIDAT AND posseder.idFORMATION = '8'
 
Le problème : lorsque j'ajoute une autre formation, la requête me renvoie aucun résultat
 
SELECT distinct candidat.nom, candidat.prenom FROM candidat,posseder WHERE 1=1  AND candidat.idCANDIDAT = posseder.idCANDIDAT AND posseder.idFORMATION = '8'  AND posseder.idFORMATION = '2'
 
Après des heures d'acharnement, je m'en remet à vous pour m'aider.
Merci d'avance cintia  ;)  
 
Ps : par la suite j'aimerai pouvoir sélectionner un candidat résultant de la recherche afin d'afficher directement à l'utilisateur le cv du candidat. Avez vous une solution? j'avais pensé à créer une checkboxe devant chaque candidat avec un bouton afficher cv, est-ce une bonne idée?

n°2092210
flo850
moi je
Posté le 29-07-2011 à 20:40:31  profilanswer
 

là , ça va etre un peu plus compliqué.
la requete que tu fais, cherche une ligne de la base de données avec idFormation qui est a la fois égal a 8 et a 2 . Tu comprends donc que tu n'auras pas de résultat

 

Là , on va sortir quelques outils en plus

 

1/ utiliser de belles jointures

Code :
  1. SELECT DISTINCT candidat.nom, candidat.prenom FROM candidat INNER JOIN posseder ON candidat.id = posseder.idcandidat
  2. WHERE 1=1    AND posseder.idFORMATION = '8'
 

2/ aliaser les tables

 
Code :
  1. SELECT DISTINCT c.nom, c.prenom
  2. FROM candidat  AS c
  3.    INNER JOIN posseder AS p ON c.id = p.idcandidat
  4. WHERE 1=1    AND p.idFORMATION = '8'


3/appeler plusieurs fois la meme table

 


Code :
  1. SELECT DISTINCT c.nom, c.prenom
  2. FROM candidat  AS c
  3.      INNER JOIN  posseder AS p1 ON c.id = p1.idcandidat
  4.      INNER JOIN  posseder AS p2 ON c.id = p2.idcandidat
  5. WHERE 1=1    AND p1.idFORMATION = '8' AND p1.idFORMATION = '2'
 

4/on généralise ça avec php

 
Code :
  1. $join = '';
  2. $where ='';
  3. if($ GET['idFormation']){ // c'est un tableau , n'est ce pas ?
  4.    for($cpt = 0 ; $ cpt < sizeof($ GET['idFormation']) ; $ cpt++){
  5.         $idFormation =  $ GET['idFormation'][$cpt];
  6.         $join .="  INNER JOIN  posseder AS p$cpt on c.id = p$cpt.idcandidat ";
  7. $where .=" AND p$cpt.idFORMATION = '8' ";
  8.  
  9.    }
  10.    $cp=mysql_real_escape_string($ GET['cp']);
  11.    $query .= "  AND cp = '$cp' ";
  12. }
  13.  
  14. $query =  "SELECT c.id,c.nom, c.prenom FROM `candidat` AS c $join WHERE 1=1 $where";


 
5/ utiliser des requetes preparées et/ou PDO

 

pour ton lien , tu affiche ton tableau avec des liens
<a href="afficheCV.php?idCandidat=$id">$nom $prenom</a>


Message édité par flo850 le 29-07-2011 à 20:43:15

---------------


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Étudiante en détresse !!!!

 

Sujets relatifs
Problème incompatibilité type Excel VBA (Help, Stagiaire en détresse!)Sos Femme en détresse: SqlDumpExceptionHandler
Etudiante en lettre recherche aide pour devoir !!2eme éditionEtudiante en lettre recherche aide pour devoir !!
[Site Web] Webradio étudiante recherche webmasterAppel de détresse messieurs les codeurs ;[
aidez une pauvre etudiante avec une requete bloquantejeune fille en détresse
[ MySQL ] Pour un newbie en détresse... 
Plus de sujets relatifs à : Étudiante en détresse !!!!


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)