probleme de sélection

Mammouth du PHP | 536 Messages

21 juin 2006, 08:52

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 ?
Un prof désespéré à son élève :
- Et maintenant, dessinez-moi un cercle au tableau... Voila... Alors qu'est-ce que c'est?
- Ben un cercle ?
- Non, c'est votre note, sortez !!

Mammouth du PHP | 965 Messages

21 juin 2006, 08:58

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.

Mammouth du PHP | 536 Messages

21 juin 2006, 09:07

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.
Un prof désespéré à son élève :
- Et maintenant, dessinez-moi un cercle au tableau... Voila... Alors qu'est-ce que c'est?
- Ben un cercle ?
- Non, c'est votre note, sortez !!

Mammouth du PHP | 1353 Messages

21 juin 2006, 09:14

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.
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Mammouth du PHP | 536 Messages

21 juin 2006, 09:32

ok j'essai
je dois mettre le reste de ma boucle while après la requete qui est dans ta boucle while?
Un prof désespéré à son élève :
- Et maintenant, dessinez-moi un cercle au tableau... Voila... Alors qu'est-ce que c'est?
- Ben un cercle ?
- Non, c'est votre note, sortez !!

Mammouth du PHP | 536 Messages

21 juin 2006, 09:42

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?
Modifié en dernier par béka le 21 juin 2006, 09:45, modifié 1 fois.
Un prof désespéré à son élève :
- Et maintenant, dessinez-moi un cercle au tableau... Voila... Alors qu'est-ce que c'est?
- Ben un cercle ?
- Non, c'est votre note, sortez !!

Mammouth du PHP | 1353 Messages

21 juin 2006, 09:44

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... ;)
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Mammouth du PHP | 536 Messages

21 juin 2006, 09:46

ben si je l'utilise puisque je fais des echo $affichage[xxx] et cette variable est définie garse a ce mysql_fetch_array()
Un prof désespéré à son élève :
- Et maintenant, dessinez-moi un cercle au tableau... Voila... Alors qu'est-ce que c'est?
- Ben un cercle ?
- Non, c'est votre note, sortez !!

Mammouth du PHP | 536 Messages

21 juin 2006, 09:47

je vois comment faire le $affichage2 mais je ne vois pas où l'utiliser et comment l'utiliser
Un prof désespéré à son élève :
- Et maintenant, dessinez-moi un cercle au tableau... Voila... Alors qu'est-ce que c'est?
- Ben un cercle ?
- Non, c'est votre note, sortez !!

Mammouth du PHP | 1353 Messages

21 juin 2006, 09:48

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.
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Mammouth du PHP | 1353 Messages

21 juin 2006, 09:52

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.
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Mammouth du PHP | 536 Messages

21 juin 2006, 09:53

non je vois pas et je comprends là, je suis perdu
J'ai réussi à me perdre das mon propre code
Un prof désespéré à son élève :
- Et maintenant, dessinez-moi un cercle au tableau... Voila... Alors qu'est-ce que c'est?
- Ben un cercle ?
- Non, c'est votre note, sortez !!

Mammouth du PHP | 1353 Messages

21 juin 2006, 10:00

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.
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Mammouth du PHP | 536 Messages

21 juin 2006, 10:09

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
Un prof désespéré à son élève :
- Et maintenant, dessinez-moi un cercle au tableau... Voila... Alors qu'est-ce que c'est?
- Ben un cercle ?
- Non, c'est votre note, sortez !!

Mammouth du PHP | 1353 Messages

21 juin 2006, 10:28

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.
Tell me and I forget. Teach me and I remember. Involve me and I learn.