Avatar billede dotcom1 Nybegynder
08. september 2005 - 21:27 Der er 4 kommentarer og
1 løsning

PHP og MySQL paging

Dette script udtrækker data og viser dem x antal ad gangen. Eller, dvs. paging-delen virker ikke. 'Næste'-linket virker ikke...der sker ikke noget når man klikker...den viser ikke de resterende resultater. Nogen, der kan fixe det?

<?php
  // Get the search variable from URL
  $var = @$_GET['q'] ;
  $trimmed = trim($var); //trim whitespace from the stored variable

    // rows to return
    $limit = 6;

    // check for an empty string and display a message.
    if ($trimmed == "") {
    include ('misc/footer_soeg.php');
    exit;
  }

// check for a search parameter
    if (!isset($var)) {
  echo "<p>Angiv søgeparameter!</p>";
  exit;
  }
 
  //Connect to db
  include($_SERVER['DOCUMENT_ROOT']."/sql.php");
 
  // Build SQL query 
  $query = "SELECT * FROM downloads WHERE (kategori = 'Scripts' OR kategori = 'Opgaver') AND titel LIKE \"%$trimmed%\" ORDER BY downloads DESC";

  $numresults=mysql_query($query);
  $numrows=mysql_num_rows($numresults);

  // If we have no results, offer a google as an alternative

  if ($numrows == 0)
  {
  //echo "<h4>Resultater:</h4>";
  echo "<p>Beklager, din søgning efter <b>&quot;" . $trimmed . "&quot;</b> gav ingen resultater.</p>";

  // google
  echo "<p><a href=\"http://www.google.com/search?q=" . $trimmed . "\" target=\"_blank\" title=\"Søg efter
  " . $trimmed . " på Google\" class=\"orange\">Klik her</a> for at søge efter <b>&quot;" . $trimmed . "&quot;</b> på google.</p>";
  }

// next determine if s has been passed to script, if not use 0
  if (empty($s)) {
  $s=0;
  }

// get results
  $query .= " limit $s,$limit";
  $result = mysql_query($query) or die("Couldn't execute query");

// begin to show results set
    if ($numrows > 0) {
    echo "<b>Resultater:</b><br />";
    $count = 1 + $s ;
}

  // now you can display the results returned
  while ($row= mysql_fetch_array($result)) {
  $title = $row["titel"];
  // Søgning i forskellige kategorier
  echo "$count.&nbsp;$row[kategori]:&nbsp;<a href=\"";
    if ( $row['kategori'] == 'Scripts' )
    {
    echo "scripts";
    }
    else
    {
    echo "opgaver";
    }
  echo "/downloads.php?file=$row[name]\" class=\"plain\">$title</a><br />";
  $count++ ;
  }

  $currPage = (($s/$limit) + 1);

  //break before paging
  echo "<br />";

  // next we need to do the links to other results
  if ($s>=1) { // bypass PREV link if s is 0
  $prevs=($s-$limit);
  print "&nbsp;<a href=\"$PHP_SELF?s=$prevs&q=$var\" class=\"orange\">&lt;&lt;
  Forrige</a>&nbsp;&nbsp&nbsp;";
  }
    if($count>$limit) {
  // calculate number of pages needing links
  $pages=intval($numrows/$limit);

  // $pages now contains int of pages needed unless there is a remainder from division

  if ($numrows%$limit) {
  // has remainder so add one page
  $pages++;
  }

  // check to see if last page
  if (!((($s+$limit)/$limit)==$pages) && $pages!=1) {

  // not last page so give NEXT link
  $news=$s+$limit;

  echo "&nbsp;<a href=\"$PHP_SELF?s=$news&q=$var\" class=\"orange\">Næste&nbsp;&gt;&gt;</a>";
  }

  $a = $s + ($limit) ;
  if ($a > $numrows) { $a = $numrows ; }
  $b = $s + 1 ;
  echo "<p>\n"
  ."------------------------------------<br />\n"
  ."Viser resultater $b til $a af $numrows</p>";
}
?>

Mvh.
Avatar billede alaflam Nybegynder
08. september 2005 - 21:53 #1
det er bare en simpel måder at gøre det på...jeg ved ikke hvad alt det der kode er til :P

$limit = $_REQUEST["limit"] + 0;
$sql = "select * from table";
$num = mysql_num_rows(mysql_query($sql)) / 10;
$query = mysql_query($sql." limit $limit,10);
while($row=mysql_fetch_array($query))
{
  echo $row["coloum"];
}

for($i=0;$i<$num;$i++)
{
echo " <a href=?limit=$s>($i+1)</a>";
$s += 10;
}
Avatar billede dotcom1 Nybegynder
08. september 2005 - 21:56 #2
Hvad er der blevet af 'Forrige' og 'Næste'-links? Ville bare gerne have rettet i det eksisterende script så det virker.
Avatar billede coderdk Praktikant
09. september 2005 - 01:04 #3
Prøv, lige efter:

$var = @$_GET['q'] ;

at tilføje:

$s = @$_GET['s'] ;
Avatar billede dotcom1 Nybegynder
09. september 2005 - 10:16 #4
Det var det, der skulle til. Tak igen igen, coderdk. Smid et svar. :)
Avatar billede coderdk Praktikant
09. september 2005 - 10:44 #5
hehe ok :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester