Pbe sur select dyn et pagination...merci

Chris75 -  
crabs Messages postés 909 Statut Membre -
Bonjour à tous,

Voilà en bref, je construis un select à partir d'un champ de ma db, ce select m'affiche en ordre des annonces, si il y en a plus de 3 j'affiche la pagination "Suite Retour", le soucis est que le script me renvoi bien les bonnes annonces mais ensuite la requete se poursuit sur l'ensemble des annonces de la base. Pourquoi ?
De plus sur ces annonces j'affiche un bouton pour postuler ce qui affiche un popup avec le recap de l'annonce choisie ainsi qu'un formulaire pour postuler. J'arrive à la faire sans probleme si je ne passe pas par le select et tt fonctionne mais dès que je choisi ds le select le bouton me renvoi la premiere annonce de la base et ainsi de suite.
Que faut-il faire ?
Pour ce faire une idée mon site en test à cet URL pour etre plus parlant.
http://19servan.free.fr/fr/htm/postes.php

Ainsi que mon code :

Merci d'avance pour votre aide précieuse.

<?
$table="postes";
$query = "SELECT DISTINCT specialite FROM $table";
$result = mysql_query($query) or die("Erreur MySQL : ".mysql_error());
?>
<form name="myform" method="post" action="spe_result.php">
<select name="liste" class="TxtNoir11">
<? while ($val = mysql_fetch_array($result)) { ?>
<option
<? if($_POST["liste"]==$val["specialite"]) { ?>
SELECTED
<? } ?>
><? echo $val["specialite"]; ?></option>
<? } ?>
</select>
<input type="submit" value="Rechercher" name="recherche">
</form>

<? // sélectionne toutes les fiches de la table
$table="postes";
$query="SELECT * FROM $table WHERE specialite = '$liste'";
$result = mysql_query($query) or die("Erreur MySQL : ".mysql_error());

$Nmax = 3; // nombre par page
$Ncur = 0; // n° de la fiche courante

$Ndeb=@$_GET["num"]; // 1ère fiche transmise par l'URL

// tant qu'il y a des fiches
while (($val = mysql_fetch_array($result))
&& ($Ncur<$Nmax+$Ndeb)) {
if($Ncur>=$Ndeb) { ?>
<span class="TxtVert">Réf :</span> <? echo $val["ref"]; ?><br>
<br>
<span class="TxtVert">Titre :</span> <? echo $val["titre"]; ?><br>
<br>
<span class="TxtVert">Spécialité :</span> <? echo $val["specialite"]; ?><br>
<span class="TxtVert">Statut :</span> <? echo $val["statut"]; ?><br>
<span class="TxtVert">Région :</span> <? echo $val["region"]; ?><br><br>
<span class="TxtVert">Description :</span><br> <? echo nl2br ($val["descrip"]); ?><br><br>
<div align="center"><A href="#" onClick="MM_openBrWindow('postuler.php?num=<? echo $Ncur; ?>','postuler','scrollbars=yes,width=550,height=600')" onMouseOver="MM_swapImage('Image1','','../img/btn_postuler_on.gif',1)" onMouseOut="MM_swapImgRestore()"><img src="../img/btn_postuler_off.gif" name="Image1" width="150" height="25" border="0" id="Image1" alt="POSTULER A CETTE OFFRE"></A></div>
<br>
<br>
<div align="center"><img src="../img/1pix_vert.gif" width="200" height="2" align="middle"></div><br>
<? }

// une de plus
$Ncur++;
} ?>

<table border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<? // Navigation
// Des fiches avant ?
if($Ndeb > 0) { ?>

<td class="LienVert"><A href="?num=<? echo $Ndeb-$Nmax; ?>" class="LienVert"><img src="../img/retour.gif" width="16" height="16" border="0"></A></td>
<? } ?>
<td class="TxtVertPetit"></td>
<td class="TxtVertPetit"></td>
<? // Des fiches après ?
if($val) { ?>
<td class="LienVert"><A href="?num=<? echo $Ncur; ?>" class="LienVert"><img src="../img/suite.gif" width="16" height="16" border="0"></A></td>
<? } ?>
</tr>
</table>

1 réponse

crabs Messages postés 909 Statut Membre 507
 
Salut,

Lorsque tu utilises un lien, ne pas oublier de passer dans les arguements la
specialité pour la navigation page par page.
Il faut que tu mettes dans le lien du 'postuler' la clé primaire de ta table
d'annonces et non le numéro de l'annonce dans l'affichage page/page
Pour l'affichage page par page, optimises tes requètes en utilisant un 'order by'
sur ta clé primaire et la clause de resctriction de mysql LIMIT
Si ta table est un peu volumineuse, tu risque d'avoir des timeout PHP chez free.
0