2010-08-06 6 views
0

J'ai un petit problème avec ma pagination PHP, j'ai 6 enregistrements et j'en affiche 2 à la fois, quand je clique sur suivant et ça affiche de 2 à 4 enregistrements, ça marche bien, mais pour afficher de 4 à 6 enregistrements, cela ne fonctionne pas. Je ne suis pas sûr de ce que je fais mal. Quelqu'un a des idées? le problème est lié au calcul des enregistrements suivants à afficherPetit Problème PHP Pagination Mathématiques Aide

<?php 
$per_page = 2; 
$start = $_GET['start']; 
$query = mysql_query("SELECT * FROM Directory"); 
$record_count = mysql_num_rows($query); 
$record_count = round($record_count/$per_page); 

if(!$start) { 
    $start = 0; 
} 

$query = mysql_query("SELECT * FROM Directory LIMIT $start,$per_page") or  die(mysql_error()); 
$row = mysql_num_rows($query); 
// Output Records here 

// Setup next and previous button variables 
$prev = $start - $per_page; 
$next = $start + $per_page; 

echo '<p> <h4>'; 
if($prev < 0) { 
    echo 'Previous'; 
} else { 
    echo '<a href="directory.php?start='.$prev.'>Previous</a>'; 
} 

echo ' ' . $start . ' of ' . $record_count; 

if($next < $record_count) { 
    echo ' <a href="directory.php?start='.$next.'>Next</a>'; 
} else { 
    echo ' Next'; 
} 
echo '</h4> </p>'; 
?> 
+0

Vous pouvez tester ce qu'il se passe sur http: // gebsbo .limewebs.com/directory/directory.php puisque mes compétences d'explication ne sont pas si bonnes – Gebsbo

+0

Que se passe-t-il quand vous faites des lignes 4-6? Quelle est l'URL à laquelle il est redirigé? – umop

+0

Quand je fais les lignes 4-6 il ne me permet pas d'aller à la prochaine et dernière série d'enregistrements – Gebsbo

Répondre

1

Il semble que ce soit un problème de formatage. Quand je regarde votre source pour l'URL http://gebsbo.limewebs.com/directory/directory.php?start=1 je vois:

<br /><p> <h4>Previous 1 of 4 <a href="directory.php?start=3>Next</a></h4> </p> </body> 

On dirait que vous manquez une citation sur l'attribut href.

Dans votre code, vous voulez:

echo '<a href="directory.php?start='.$prev.'">Previous</a>'; 

et

echo ' <a href="directory.php?start='.$next.'">Next</a>'; 
+0

Merci, j'ai aussi changé le bouton Next codant un peu aussi à if ($ next <= $ record_count) {. Le problème semble maintenant résolu, merci à tous pour votre aide! – Gebsbo

+0

est ce que je voudrais dire, mais si je change le nombre d'enregistrements à afficher à 3 sur 6 puis le bouton suivant n'apparaît pas, je vais essayer si ($ next - 1 <$ record_count) { – Gebsbo

+0

, if (($ start> = $ Record_Count - page_per de $)!) { \t \t \t \t \t echo 'Next'; \t \t \t \t} else { \t \t \t \t \t echo 'Suivant'; \t \t \t \t Cela fonctionne maintenant dans une certaine mesure – Gebsbo

0

utiliser ce code pour le calcul:

$num = 10; // number of items on page 
$p = $_GET['page']; // the var that comes from url (for ex: htttp://..../xxx.php?page=3) 
$r = mysql_query(" select * from your_table "); 

$posts=mysql_num_rows($r); // total posts 
$total=(($posts-1)/$num)+1; // toatal pages 
$total=intval($total); 
$p=intval($p); 
if(empty($p) or $p<0 or !isset($p)) $p=1; 
if($p>$total) $p=$total; 
$start=$p*$num-$num; 

// here print the html for pagination (for ex: htttp://...../xxx.php?page=1 .. 2 ...3 .... and so on ...) you can make a for() here 

$r = mysql_query(" select * from your_table limit ".$start.", ".$num); 
while (....) { 
..... 
}