Page 1 sur 2

probleme de sélection

Posté : 21 juin 2006, 08:52
par béka
Bonjour tout le monde, voila j'ai fais un script qui permet d'afficher un secteur d'activité une seule fois et d'afficher le nombre d'offres d'emploi qui correspond à ce secteur d'activité. Pour cela, je compare le nom du champ dans la table offre_emploi avec celui dans la table secteur.
et si c'est les mêmes, ca les affiche.

Seulement je n'arrive pas à faire l'affichage du nombre d'offres car ca me met le même nombre partout.

Voici mon code :
<? include("../../connexion.php");
//requete SQL 
$sql = "SELECT * FROM secteur, offre_emploi WHERE secteur.intitule=offre_emploi.milieu_professionnel GROUP BY intitule"; 
$req = mysql_query($sql) or die(mysql_error());

//combien de résultat ?/////////// 
///////////////////////////////////// 
$nb_enregistrement = mysql_num_rows($req); 



//si il existe des enregistrements////////// 
///////////////////////////////////////////////// 
if($nb_enregistrement > 0) 
   { 
//Boucle d'affichage des liens qui affiche le titre et envoie vers toutes les offres 
while ($affichage = mysql_fetch_array($req)){ ?> 
<p class="Texte"><a href="milieu1.php?id=<? echo $affichage[0]; ?>"><font color="black"><? echo $affichage['milieu_professionnel']." (".$nb_enregistrement." offres)"; ?> <br></font></a></p> 
<? 
}//end while 
} //end if } //end if 
else 
{ 
echo "il n'y a aucun renseignement correspondant à votre requète"; 
} 
mysql_close($db); 
Pouvez vous m'aider ?

Posté : 21 juin 2006, 08:58
par agité
tu selectionne sur la même requete la même reponse je pense.

Essaye de faire une autre requete peut être en changeant les parametres pour voir si ca viens de la.

Cordialement.

Posté : 21 juin 2006, 09:07
par béka
en fait je crois qu'il faudrait calculé le nombre d'enregistrments pour chaques cas et après affiché le nombre d'enregistrement correspondant à l'intitulé quon affiche, seulement je ne vois pas du tout comment on fait.

Posté : 21 juin 2006, 09:14
par guilt92
Il faut comment par faire une requete pour avoir tous les intitulés :

SELECT DISTINCT intitule FROM secteur

Ensuite tu fais une boucle sur le résultat de cette requete un par un qui cherche le nombre d'offres d'emploi relatif a ce secteur
while($resultat1=mysql_fetch_array($rq1) {
SELECT * FROM offre_emploi WHERE milieu_professionnel = $resultat1["intitule"]
//...
}
Et enfin tu peux compter et afficher ce que tu veux.

Posté : 21 juin 2006, 09:32
par béka
ok j'essai
je dois mettre le reste de ma boucle while après la requete qui est dans ta boucle while?

Posté : 21 juin 2006, 09:42
par béka
voila ma boucle while :
<? while ($affichage = mysql_fetch_array($req)){
$req1 = "SELECT * FROM offre_emploi WHERE milieu_professionnel = $affichage[intitule]";
$sql1 = mysql_query($req1); ?> 
<p class="Texte"><a href="milieu1.php?id=<? echo $affichage[0]; ?>"><font color="black"><? echo $affichage['intitule']." (".$nb_enregistrement." offres)"; ?> <br></font></a></p> 
<? 
}//end while ?>
mais ca ne marche pas, ca m'affiche tous les secteurs d'activité de la table 'secteur' alors que j'aiemerais que ca n'affiche que ceux présents dans la table 'offre_emploi' et puis ca me mets pour chaque qu'il y a 6 offres, or ce n'est pas (ca doit calculer le nombre d'intitule dans la table 'secteur')

comment arranger ca?

Posté : 21 juin 2006, 09:44
par guilt92
en créant un $affichage2 qui est le mysql_fetch_array($sql1)...
Ensuite tu comptes et tu affiches ces résultats la...
Tu crées une requete mais tu ne l'utilises pas... ;)

Posté : 21 juin 2006, 09:46
par béka
ben si je l'utilise puisque je fais des echo $affichage[xxx] et cette variable est définie garse a ce mysql_fetch_array()

Posté : 21 juin 2006, 09:47
par béka
je vois comment faire le $affichage2 mais je ne vois pas où l'utiliser et comment l'utiliser

Posté : 21 juin 2006, 09:48
par guilt92
Lis ton propre code...

$affichage est le resultat de ta première requete, celle qui selectionne les secteurs d activités...

De plus pour moi $req1 est fausse, il faudrait plutot :
$req1 = "SELECT * FROM offre_emploi WHERE milieu_professionnel = '".$affichage[intitule]."'"; 
car tu compares des chaines.

Posté : 21 juin 2006, 09:52
par guilt92
je vois comment faire le $affichage2 mais je ne vois pas où l'utiliser et comment l'utiliser
N'oublie pas ton objectif final.
$req1 te permet de selectionner les offres d emploi dans le secteur d activités.

Je ne sais pas a quoi correspondait $affichage[0] dans ton code mais tu dois avoir l'équivalent dans un des résultats, $affichage2["titre"] ou quelque chose du genre je suppose.
Ensuite le nom du secteur est toujours $affichage["intitule"], et le nombre de résultat est mysql_num_rows($sql1).

Aussi si tu n utilise qu un seul champ de emploi n utilise pas SELECT *, utilise SELECT titre par exemple.

Posté : 21 juin 2006, 09:53
par béka
non je vois pas et je comprends là, je suis perdu
J'ai réussi à me perdre das mon propre code

Posté : 21 juin 2006, 10:00
par guilt92
ok alors reprenons la modélisation :

Ton but si j ai bien compris est d obtenir le nombre d offre emploi par secteur d'activités.
Pour cela je t'ai proposé le modèle suivante :

Une requete s occupe de selectionner un par un les différents secteurs d activités. Pour chaque résultat une seconde requete se crée qui elle selectionne les offres d emplois correspondant a ce secteur. Il te suffit donc de compter le nombre de résultats de la seconde requete pour chaque itération.

Soit dit au passage si tu n'as besoin que du nombre d'emploi tu peux faire un SELECT COUNT(*) mais bon peu importe ca sera le même modèle.

Posté : 21 juin 2006, 10:09
par béka
oui alors c'est bien ca, je souhaite savoir :

tous les intitulés des secteurs d'activité qui sont dans la table secteur donc là, un

Code : Tout sélectionner

SELECT intitule FROM secteur
-> ok

connaitre tous les secteurs d'activité qui ont été utilisés, mentionnés dans la table offre_emploi, pour ca

Code : Tout sélectionner

SELECT milieu_professionnel FROM offre_emploi
->ok

j'affiche que les secteurs d'activité de la table secteur uniquement lorsqu'ils figurent dans la table offre_emploi, pour ca

Code : Tout sélectionner

SELECT intitule FROM secteur, offre_emploi WHERE secteur.intitule = offre_emploi.milieu_professionnel
->ok

maintenant, ce que je souhaiterais faire, c'est afficher le nombre d'offres qu'il y a pour chaque secteur affiché et là je ne vois pas comment faire

Posté : 21 juin 2006, 10:28
par guilt92
Euh... tu repars à 0 là. Ceci dit il doit y avoir une solution en une seule requete peut etre, selon la version de sql que tu utilises et tu peux tenter ta chance sur le forum Base de données.

Sinon moi je te proposais de faire une requete en te servant du resultat d'une autre requete mais apparemment ca ne te convient pas parce que la on tourne en rond.