tags:

views:

64

answers:

2

hello

can anyone help me with this code?the next and previous links don't work

$limit=20;
mysql_connect("localhost","root","");
mysql_select_db("autoschool") or die("Unable to select database");
$query = "select * from student";
$numresults=mysql_query($query);
$numrows=mysql_num_rows($numresults);
if ($numrows == 0)
{
echo "empty";
}
if (empty($s)) {
$s=0;
}
$query .= " limit $s,$limit";
$result = mysql_query($query) or die("Couldn't execute query");
$count = 1 + $s ;
while ($row= mysql_fetch_array($result)) {
$title = $row["id"];
echo "$count.)$title"."
" ;
$count++ ;
}
$currPage = (($s/$limit) + 1);
echo "
";
if ($s>=1) { // bypass PREV link if s is 0
$prevs=($s-$limit);
print " <<
Prev 10&nbsp ";
}
$pages=intval($numrows/$limit);
if ($numrows%$limit) {
$pages++;
}
if (!((($s+$limit)/$limit)==$pages) && $pages!=1) {
$news=$s+$limit;
echo " Next 20 >>";
}
$a = $s + ($limit) ;
if ($a > $numrows) { $a = $numrows ; }
$b = $s + 1 ;
echo "
Showing results $b to $a of $numrows
";
A: 

Your "next 20" and "prev 10" are simply text displays. They are not links to begin with. Further more you have no way of handling input. It appears your example is incomplete.

ChronoFish
+1  A: 

OMG, where to start?

Firstly, you're not processing $s at the beginning so the LIMIT statement will always 0,20.

Try something like:

if (isset ($_GET['page']) ){
  $s=round($_GET['page'];
  if($s<0) {
    $s=0;
  }
}
else {
  $s=0;
}

...

$query .= " LIMIT ".($s*$limit).",$limit";

Then you need to add links the previous and next text:

if ($s>0) { // bypass PREV link if s is 0
  echo '<a href="myscript.php?page='.($s-1).'">Prev </a>';
}

...


   echo echo '<a href="myscript.php?page='.($s+1).'">Next </a>';

...

To be honest, I'd start again from scratch if I was you, the code is very messy. Write pseudo-code to plan the logic first, then code.

Pete