Page 1 sur 2

eviter la redondance

Posté : 22 mai 2006, 13:54
par béka
bonjour tout le monde, voila, je voudrais faire un affichage par catégorie de certaines informations. Je fais d'abord une requete sql pour récupérer les informations (uniquement le titre qui pointera vers l'intitulé en entier et l'information en entier (ici le titre de chaue information fait office de lien vers l'intitulé de l'iinformation). Voici mon code pour cela :
//Premiere Page

//requete SQL
$sql = "SELECT id, poste FROM `offre_emploi` GROUP BY poste" ;
$req = mysql_query($sql);
//Boucle d'affichage des liens qui affiche le titre est envoie l'id
while ($affichage = mysql_fetch_array($req)){ ?>
<p class="Texte"><a href="poste2.php?id=<? echo $affichage[0]; ?>"><font color="black"><? echo $affichage['poste']; ?>
Après, j'arrive sur la seconde page qui affiche l'intitulé de l'information :

<?php


$db = mysql_connect("localhost", "root");
mysql_select_db("hippolyte",$db);


////////////////////////
//Deusieme Page//
///////////////////////
//Recupération de l'id envoyer par page1
$id = $_GET['id'] ;
//requete sql
$sql = "SELECT * FROM `offre_emploi` WHERE id='$id'" ;
$req = mysql_query($sql);
// affichage des informations
$affichage = mysql_fetch_row($req);
echo "<p class=\"Texte\"><font color=\"red\">Nom de l'entreprise : </font><br></p><p class=\"Texte2\">".$affichage[1]."</p><p class=\"Texte\"><font color=\"red\">Poste à pourvoir : </font></p><p class=\"Texte2\">".$affichage[4]."</p><p class=\"Texte\"><font color=\"red\">Intitulé de l'offre : <br></font></p><p class=\"Texte2\">".$affichage[5]."</p><p class=\"Texte\"><br>Pour tout renseignement, ou pour répondre à cette offre, veuillez contacter : <br><br></p><p class=\"Texte2\">".$affichage[2]."<br><a href=\"mailto:".$affichage[3]."\">".$affichage[3]."</a></p>";

mysql_close($db);
?>
Mon probleme maintenant, est que j'aimeraiais qu'on affiche plusieurs informations lorsque le titre est le meme. Je voudrais que le titre qui est en fait un lien redirige vers toutes les informations qui ont le meme titre pour qu'il n'y ai pas d'informations redondantes dans la premiere page.

Comment faire?

Posté : 22 mai 2006, 14:04
par béka
Peut-on peut être utilisé la fonction while par exemple ou une autre boucle mais dans ce cas, si cela est possible, comment l'utiliser et où?

Posté : 22 mai 2006, 16:03
par béka
personne pour m'aider? :cry:

Posté : 22 mai 2006, 16:13
par Tessai
Salut béka,

Peux tu préciser ta demande, tu veux à partir d'un lien toutes les infos ou que plusieurs liens s'affiche avec chacun ses propres infos ?

lien 1 : titre1 (1 page avec peut etre le lien vers lien2)
lien 2 : titre1 (1 autre page avec peut etre le lien vers lien1)

ou

lien : titre1 - titre1 (affichage des 2 titres dans 1 page )

Posté : 22 mai 2006, 16:20
par béka
en fait voila, je fais un site qui propose de déposer des offres d'emploi
Et donc dans ce cas, il est possible qu'il y ait plusieurs postes à pourvoir identiques et à ce moment je voudrais savoir comment faire pour afficher TOUS les intitulés des offres d'emploi correspondant au meme titre (le champ poste à pourvoir)

En fait : titre 1 -> redirige vers offre 1, offre 2, offre 45...

Est-ce plus clair?

Posté : 22 mai 2006, 16:32
par Tessai
Perso j'affinerais ma requete SQL avec un LIKE :

Genre :
$debut = "prendrait les x premières lettres de ton titre avec un ereg sur le nom de ton titre"
SELECT id, poste FROM `offre_emploi` WHERE poste like ’$debut%’
Je n'ai jamais testé le "$debut%’" je ne sais pas si ça peut fonctionner mais c'est une voie à suivre non ? :-k

Posté : 22 mai 2006, 16:38
par béka
le probleme c'est que je ne connais pas les titres, ce sont d'autres utilisateurs qui les saisissent. Je ne connais qu'une chose, c'est l'id.

Posté : 22 mai 2006, 16:43
par Tessai
Tu n'as pas vraiment besoin de les connaitres...

Avec la fonction ereg_replace tu peux prendre les x premiers caractères de ton champ titre que tu utilises dans ta query.

Tu vois vers quoi je veux aller ?

Posté : 22 mai 2006, 16:47
par béka
non je vois pas exactement ton raisonnement...
As tu bien compris mon raissonement?
peux-tu m'expliquer la solution que tu me propose?

Posté : 22 mai 2006, 16:52
par Tessai
Heu en fait je crois que je me suis emballé un peu avec mes ereg_replace...

On peut faire plus simple :lol:
$titre = 'poste2.php?id=<? echo $affichage[0]; ?>';
SELECT id, poste FROM `offre_emploi` WHERE poste like ’$titre’
ça devrait aller mieux non ?

Posté : 22 mai 2006, 16:55
par béka
comme ca nom car afffichage[0] correspond a l'id dans ma table
Et tous les id sont différents, donc j'aurais toujours de la redondance..

Posté : 23 mai 2006, 09:46
par Tessai
Re béka,

Bon j'ai un peu plus de temps là :)

Premier problème : tu n'es pas maitre de ce que les gens mettent dans ta base de donnée, difficile donc de faire un tri par titre vu qu'ils peuvent différencier, juste ?

Donc il faudrait que tu crées des catégories afin de pouvoir utiliser un critère de recherche fiable.

Est-ce possible ?

Posté : 23 mai 2006, 10:38
par béka
ben en fait je ne peux guere faire un tri. Car ce que les gens vont saisir c'est l'intitulé du poste a pourvoir (ex commercial, chargé d'affaire..).
Mais il est possible que deux entreprise cherche un commercial et dans ce cas je ne voudrais pas que commercial apparaissent deux fois mais je voudrais que cela n'apparraisse qu'une seule fois et que quand on clique desus, on affiche les DEUX offres.

Posté : 23 mai 2006, 10:53
par Tessai
Le soucis est que les personnes mettant ces offres en ligne peuvent utiliser des intitulés différents... ne fut-ce qu'au niveau de la casse...

Commercial
commercial
Commercial Junior
comercial junior vetement
commercial bijoux senior
....

D'ou la nécessité de standardisé les possibilités.

Sinon c'est toujours faisable mais tu te lances dans qqchose d'assez complexes au niveau programmation vu que tu dois faire un recherche sur un terme précis (ici commercial) mais qui peut se trouver n'importe ou dans le titre...
Et là c'est hors de mes compétences désolé... ça prendrait bien trop de temps :oops:

Posté : 23 mai 2006, 10:56
par béka
et donc admettons, j'offre la possibilté de choisir le poste a pourvoir dans un menu déroulant. Après ca devient beaucoup plus simple c'est sur, car le probleme se solutionnerai a partir de ma requete SQL non?