page(suivante, précedente) comment passer les vides

Eléphant du PHP | 125 Messages

24 nov. 2005, 11:39

Bonjour à toutes et à tous,

Pour naviguer de pages en pages j'ai créé des liens premier,suivant,précédent et denier mais le problème c'est que lorsqu'on supprime un valeur quand j'appuie sur suivant ou précédent ça fait que +1 ou -1 ça ne va pas directement à l'enregistrement suivant ou précédent (ce qui est normal en lisant mon code)
Quelle est l'astuce pour passer les enregitrement effacés, cad si l'enregistrement 2 est supprimé quand je suis sur le 1 faire en sorte que ça passe directement au 3 et inversement pour précédent?

Haut de page :
mysql_select_db($database_programme, $programme);
$query_first = "SELECT * FROM tab_prog ORDER BY numero_fiche ASC";
$first = mysql_query($query_first, $programme) or die(mysql_error());
$row_first = mysql_fetch_assoc($first);
$totalRows_first = mysql_num_rows($first);

mysql_select_db($database_programme, $programme);
$query_last = "SELECT * FROM tab_prog ORDER BY numero_fiche DESC";
$last = mysql_query($query_last, $programme) or die(mysql_error());
$row_last = mysql_fetch_assoc($last);
$totalRows_last = mysql_num_rows($last);

mysql_select_db($database_programme, $programme);
$query_compte = "SELECT * FROM tab_prog";
$compte = mysql_query($query_compte, $programme) or die(mysql_error());
$row_compte = mysql_fetch_assoc($compte);
$totalRows_compte = mysql_num_rows($compte);

mysql_select_db($database_programme, $programme);
$query_affichage = "SELECT * FROM tab_prog WHERE numero_fiche=".$param3bis."";
$affichage = mysql_query($query_affichage, $programme) or die(mysql_error());
$row_affichage = mysql_fetch_assoc($affichage);
$totalRows_affichage = mysql_num_rows($affichage);

Bas de page :
<div align="center"> <a href="<?php printf("%s?param3bis=%s&Premier", $currentPage, $row_first['numero_fiche']); ?>">Premier</a> <a href="<?php if ($row_affichage['numero_fiche']>$row_first['numero_fiche']) {printf("%s?param3bis=%s&Precedent", $currentPage, $param3bis-1);} else {printf("%s?param3bis=%s&Precedent", $currentPage, $param3bis);}?>">Pr&eacute;c&eacute;dent</a> <a href="<?php if ($row_affichage['numero_fiche']<$row_last['numero_fiche']) {printf("%s?param3bis=%s&Suivant", $currentPage, $param3bis+1);}  else {printf("%s?param3bis=%s&Suivant", $currentPage, $param3bis);}?>">Suivant</a> <a href="<?php printf("%s?param3bis=%s&Dernier", $currentPage, $row_last['numero_fiche']); ?>">Dernier</a> </div></td>
petit ou grand l'important c'est la référence

Eléphant du PHP | 153 Messages

24 nov. 2005, 11:52

Tu peux créer une requete comme pour ton premier et ton dernier
mysql_select_db($database_programme, $programme); 
$query_next = "SELECT * FROM tab_prog where numero_fiche>".$param3bis." ORDER BY numero_fiche ASC"; 
$next = mysql_query($query_next, $programme) or die(mysql_error()); 
$row_next = mysql_fetch_assoc($next); 
$totalRows_next = mysql_num_rows($next);

mysql_select_db($database_programme, $programme); 
$query_prec = "SELECT * FROM tab_prog where numero_fiche<".$param3bis." ORDER BY numero_fiche DESC"; 
$prec = mysql_query($query_prec, $programme) or die(mysql_error()); 
$row_prec = mysql_fetch_assoc($prec); 
$totalRows_prec = mysql_num_rows($prec);


<div align="center"> <a href="<?php printf("%s?param3bis=%s&Premier", $currentPage, $row_first['numero_fiche']); ?>">Premier</a> <a href="<?php if ($row_affichage['numero_fiche']>$row_first['numero_fiche']) {printf("%s?param3bis=%s&Precedent", $currentPage, $row_prec['numero_fiche']);} else {printf("%s?param3bis=%s&Precedent", $currentPage, $param3bis);}?>">Pr&eacute;c&eacute;dent</a> <a href="<?php if ($row_affichage['numero_fiche']<$row_last['numero_fiche']) {printf("%s?param3bis=%s&Suivant", $currentPage, $row_next['numero_fiche']);}  else {printf("%s?param3bis=%s&Suivant", $currentPage, $param3bis);}?>">Suivant</a> <a href="<?php printf("%s?param3bis=%s&Dernier", $currentPage, $row_last['numero_fiche']); ?>">Dernier</a> </div></td> 

Eléphant du PHP | 281 Messages

24 nov. 2005, 11:55

Salut,

Si j'ai bien compris tu souhaite réaliser une sorte de multipage ?

Si c'est le cas le fait de réaliser 4 requêtes sur une même table ne me semble pas une très bonne idée. Pour créer un multipage de base je penses que deux requêtes peuvent suffir et encore :

(1) Une pour connaître le nombre total d'enregistrement
(2) Une permettant de selectionner les résultats à afficher selon le nombre de résulats par page.

Pour réaliser la deuxième reqûete je penses qu'il serait de bon ton d'utiliser dans ta requête l'indication LIMIT qui te permettra de choisir les résultats à afficher dans un intervalle. A partir de là je penses que tu as les bases pour commencer ton multipage.

Si tu souhaite pas réinventer la roue rechercher sur un internet tu devrais pouvoir trouver des scripts dont t'auras juste à modifier certaines parties.

@+

Eléphant du PHP | 125 Messages

24 nov. 2005, 12:05

Merci à vous 2

@Pitt : ça marche =D> Thanks
petit ou grand l'important c'est la référence