Avatar billede from_kolding Nybegynder
02. december 2004 - 23:43 Der er 6 kommentarer og
1 løsning

Paging - opdel SQL søgeresultat i sider

Hejsa

Jeg har lavet en paging baseret på en artikel her, men når jeg trykker på side 2, så kommer der godt nok en ny side men uden tabel opslag - nogen som kan gennemskue hvad der går galt

Mange tak på forhånd

Allan
<?
$db=mysql_connect("localhost", "xxxx", "xxxxx");
mysql_select_db("catnews_dk", $db);
  $pr_side = 2;
  $resultater = mysql_num_rows(mysql_query ("SELECT distinct phpSP_users.*, opdraet_farve.* FROM phpSP_users inner join opdraet_farve on opdraet_farve.user = phpSP_users.user where opdraet_farve.farve = '$D1' and phpSP_users.country = '$D2'"));
  $vis_fra = (isset($_GET["visfra"]) && is_numeric($_GET["visfra"]) && $_GET["visfra"] < $resultater) ? $_GET["visfra"] : 0;
$tilWhile = mysql_query("SELECT distinct phpSP_users.*, opdraet_farve.* FROM phpSP_users inner join opdraet_farve on opdraet_farve.user = phpSP_users.user where opdraet_farve.farve = '$D1' and phpSP_users.country = '$D2' LIMIT $vis_fra, $pr_side");
while ($row = mysql_fetch_array($tilWhile)){
echo "<table>";
echo "<table border='1' cellspacing='1' width='250'>";
echo "  <tr>";
echo "    <td width='50%' style='border-left-style: solid; border-left-width: 1; border-right-style: solid; border-right-width: 1; border-top-style: solid; border-top-width: 1; border-bottom-style: none; border-bottom-width: medium' bgcolor='#C0C0C0'>    <font size='1'>Cattery name:</font></td>";
echo "    <td width='50%' style='border-left-style: solid; border-left-width: 1; border-right-style: solid; border-right-width: 1; border-top-style: solid; border-top-width: 1; border-bottom-style: none; border-bottom-width: medium' bgcolor='#C0C0C0'>    <font size='1'>Country:</font></td>";
echo "  </tr>";
echo "  <tr>";
echo "    <td width='50%' height='25'>$row[user]</td>";
echo "    <td width='50%' height?'25'>$row[country]</td>";
echo "  </tr>";
echo "  <tr>";
echo "    <td width='50%' style='border-left-style: solid; border-left-width: 1; border-right-style: solid; border-right-width: 1; border-top-style: solid; border-top-width: 1; border-bottom-style: none; border-bottom-width: medium' bgcolor='#C0C0C0'>    <font size='1'>Breeder:</font></td>";
echo "    <td width='50%' style='border-left-style: solid; border-left-width: 1; border-right-style: solid; border-right-width: 1; border-top-style: solid; border-top-width: 1; border-bottom-style: none; border-bottom-width: medium' bgcolor='#C0C0C0'>    <font size='1'>email:</font></td>";
echo "  </tr>";
echo "  <tr>";
echo "    <td width='50%' height='25'>$row[name]</td>";
echo "    <td width='50%' height='25'>$row[email]</td>";
echo "  </tr>";
echo "  <tr>";
echo "    <td width='50%' style='border-left-style: solid; border-left-width: 1; border-right-style: solid; border-right-width: 1; border-top-style: solid; border-top-width: 1; border-bottom-style: none; border-bottom-width: medium' bgcolor='#C0C0C0'>    <font size='1'>Phone</font></td>";
echo "    <td width='50%' style='border-left-style: solid; border-left-width: 1; border-right-style: solid; border-right-width: 1; border-top-style: solid; border-top-width: 1; border-bottom-style: none; border-bottom-width: medium' bgcolor='#C0C0C0'>    <font size='1'>Homepage:</font></td>";
echo "  </tr>";
echo "  <tr>";
echo "    <td width='50%' height='25'>$row[$C1]</td>";
echo "    <td width='50%' height='25'> <a href='$row[homepage]'>$row[homepage]</td>";
echo "  </tr>";
echo "</table>";
echo "<BR>";
  }
/* Der undersøges om der skal udskrives et ”forrige side”-link, er dette tilfældet udskrives linket */
if ($vis_fra > 0) {
$back= $vis_fra - $pr_side;
echo "<a href='$_SERVER[PHP_SELF]?visfra=$back'>Forrige</a> ";
}
$page = 1;

/* Alle siderne udskrives så man med et klik kan få resultaterne fra fx 90-100 */
for ($start = 0; $resultater > $start; $start = $start + $pr_side) {
if($vis_fra != ($page * $pr_side) - $pr_side) {
echo "<a href='$_SERVER[PHP_SELF]?visfra=$start'>$page</a> ";
} else {
echo $page." ";
}
$page++;
}

/* Der undersøges om der skal udskrives et ”næste side”-link, er dette tilfældet udskrives linket */
if ($vis_fra < $resultater - $pr_side) {
$next = $vis_fra + $pr_side;
echo " <a href='$_SERVER[PHP_SELF]?visfra=$next'>Næste</a>";
}

echo "The search have submitted <b>$resultater</b> breeders, which fullfills the criterias!";
mysql_close();
?>
Avatar billede schaefner Juniormester
03. december 2004 - 08:57 #1
Prøv:

<?php
$db = mysql_connect("localhost", "xxxx", "xxxxx");
mysql_select_db("catnews_dk", $db);

$total = mysql_num_rows(mysql_query ("SELECT DISTINCT phpSP_users.*, opdraet_farve.* FROM phpSP_users INNER JOIN opdraet_farve ON opdraet_farve.user = phpSP_users.user WHERE opdraet_farve.farve = '$D1' AND phpSP_users.country = '$D2'"));

$limit = 2;
$page_number = 1;
$offset = (isset($_GET['offset']) && is_numeric($_GET['offset'])) ? $_GET['offset'] : 0;

$tilWhile = mysql_query("SELECT DISTINCT phpSP_users.*, opdraet_farve.* FROM phpSP_users INNER JOIN opdraet_farve ON opdraet_farve.user = phpSP_users.user WHERE opdraet_farve.farve = '$D1' AND phpSP_users.country = '$D2' LIMIT $offset, $limit") or die(mysql_error());

while ($row = mysql_fetch_array($tilWhile)){
echo "<table>";
echo "<table border='1' cellspacing='1' width='250'>";
echo "  <tr>";
echo "    <td width='50%' style='border-left-style: solid; border-left-width: 1; border-right-style: solid; border-right-width: 1; border-top-style: solid; border-top-width: 1; border-bottom-style: none; border-bottom-width: medium' bgcolor='#C0C0C0'>    <font size='1'>Cattery name:</font></td>";
echo "    <td width='50%' style='border-left-style: solid; border-left-width: 1; border-right-style: solid; border-right-width: 1; border-top-style: solid; border-top-width: 1; border-bottom-style: none; border-bottom-width: medium' bgcolor='#C0C0C0'>    <font size='1'>Country:</font></td>";
echo "  </tr>";
echo "  <tr>";
echo "    <td width='50%' height='25'>$row[user]</td>";
echo "    <td width='50%' height?'25'>$row[country]</td>";
echo "  </tr>";
echo "  <tr>";
echo "    <td width='50%' style='border-left-style: solid; border-left-width: 1; border-right-style: solid; border-right-width: 1; border-top-style: solid; border-top-width: 1; border-bottom-style: none; border-bottom-width: medium' bgcolor='#C0C0C0'>    <font size='1'>Breeder:</font></td>";
echo "    <td width='50%' style='border-left-style: solid; border-left-width: 1; border-right-style: solid; border-right-width: 1; border-top-style: solid; border-top-width: 1; border-bottom-style: none; border-bottom-width: medium' bgcolor='#C0C0C0'>    <font size='1'>email:</font></td>";
echo "  </tr>";
echo "  <tr>";
echo "    <td width='50%' height='25'>$row[name]</td>";
echo "    <td width='50%' height='25'>$row[email]</td>";
echo "  </tr>";
echo "  <tr>";
echo "    <td width='50%' style='border-left-style: solid; border-left-width: 1; border-right-style: solid; border-right-width: 1; border-top-style: solid; border-top-width: 1; border-bottom-style: none; border-bottom-width: medium' bgcolor='#C0C0C0'>    <font size='1'>Phone</font></td>";
echo "    <td width='50%' style='border-left-style: solid; border-left-width: 1; border-right-style: solid; border-right-width: 1; border-top-style: solid; border-top-width: 1; border-bottom-style: none; border-bottom-width: medium' bgcolor='#C0C0C0'>    <font size='1'>Homepage:</font></td>";
echo "  </tr>";
echo "  <tr>";
echo "    <td width='50%' height='25'>$row[$C1]</td>";
echo "    <td width='50%' height='25'> <a href='$row[homepage]'>$row[homepage]</td>";
echo "  </tr>";
echo "</table>";
echo "<BR>";
  }

/*
Tjekker om der er resultater til en side tilbage,
i så fald udskrives der et link til forrige resultater
*/
print ($offset >= $limit) ? "<a href=\"?offset=".($offset-$limit)."\">Prev</a> | " : "Prev | ";

/*
Kører en for-løkke der udskriver de links der er brug for.
*/
for ($i=0; $i<$total; $i=$i+$limit) {
  // Hvis $i er lig med det nuværende offset udskrives den ikke som link.
  print ($offset == $i) ? ($page_number++)." " : "<a href=\"?offset=".$i."\">".($page_number++)."</a> ";
}

/*
Tjekker om der er resultater til en side frem,
i så fald udskrives der et link til næste resultater
*/
print ($offset+$limit < $total) ? "| <a href=\"?offset=".($offset+$limit)."\">Next</a>" : "| Next";

print "The search have submitted <b>$total</b> breeders, which fullfills the criterias!";

mysql_close($db);
?>
Avatar billede from_kolding Nybegynder
05. december 2004 - 23:02 #2
Hejsa

Mange tak for dit svar og jeg beklager jeg ikke vender tilbage før nu, men jeg har ikke været hjemme i weekenden.

Jeg kan ikke få det til at virke, når jeg klikker på linket kommer der en blank side op hvor den siger der er 0 resultater og den viser ingen. På første side er der 4 resultater (2 vises). Søg på blå og danmark. Det er en TEST side!
se evt på http://www.catnews.dk/NOSEC_search_001.php og xx.002.php (002 er resultatsiden).

mvh og mange tak på forhånd

Allan
Avatar billede schaefner Juniormester
06. december 2004 - 12:28 #3
Det er fordi du skal sende søgekriterierne med til næste side. Prøv:

<?php
$db = mysql_connect("localhost", "xxxx", "xxxxx");
mysql_select_db("catnews_dk", $db);

$D1 = $_REQUEST['D1'];
$D2 = $_REQUEST['D2'];

$total = mysql_num_rows(mysql_query ("SELECT DISTINCT phpSP_users.*, opdraet_farve.* FROM phpSP_users INNER JOIN opdraet_farve ON opdraet_farve.user = phpSP_users.user WHERE opdraet_farve.farve = '".$D1."' AND phpSP_users.country = '".$D2."'"));

$limit = 2;
$page_number = 1;
$offset = (isset($_GET['offset']) && is_numeric($_GET['offset'])) ? $_GET['offset'] : 0;

$tilWhile = mysql_query("SELECT DISTINCT phpSP_users.*, opdraet_farve.* FROM phpSP_users INNER JOIN opdraet_farve ON opdraet_farve.user = phpSP_users.user WHERE opdraet_farve.farve = '".$D1."' AND phpSP_users.country = '".$D2."' LIMIT $offset, $limit") or die(mysql_error());

while ($row = mysql_fetch_array($tilWhile)){
echo "<table>";
echo "<table border='1' cellspacing='1' width='250'>";
echo "  <tr>";
echo "    <td width='50%' style='border-left-style: solid; border-left-width: 1; border-right-style: solid; border-right-width: 1; border-top-style: solid; border-top-width: 1; border-bottom-style: none; border-bottom-width: medium' bgcolor='#C0C0C0'>    <font size='1'>Cattery name:</font></td>";
echo "    <td width='50%' style='border-left-style: solid; border-left-width: 1; border-right-style: solid; border-right-width: 1; border-top-style: solid; border-top-width: 1; border-bottom-style: none; border-bottom-width: medium' bgcolor='#C0C0C0'>    <font size='1'>Country:</font></td>";
echo "  </tr>";
echo "  <tr>";
echo "    <td width='50%' height='25'>$row[user]</td>";
echo "    <td width='50%' height?'25'>$row[country]</td>";
echo "  </tr>";
echo "  <tr>";
echo "    <td width='50%' style='border-left-style: solid; border-left-width: 1; border-right-style: solid; border-right-width: 1; border-top-style: solid; border-top-width: 1; border-bottom-style: none; border-bottom-width: medium' bgcolor='#C0C0C0'>    <font size='1'>Breeder:</font></td>";
echo "    <td width='50%' style='border-left-style: solid; border-left-width: 1; border-right-style: solid; border-right-width: 1; border-top-style: solid; border-top-width: 1; border-bottom-style: none; border-bottom-width: medium' bgcolor='#C0C0C0'>    <font size='1'>email:</font></td>";
echo "  </tr>";
echo "  <tr>";
echo "    <td width='50%' height='25'>$row[name]</td>";
echo "    <td width='50%' height='25'>$row[email]</td>";
echo "  </tr>";
echo "  <tr>";
echo "    <td width='50%' style='border-left-style: solid; border-left-width: 1; border-right-style: solid; border-right-width: 1; border-top-style: solid; border-top-width: 1; border-bottom-style: none; border-bottom-width: medium' bgcolor='#C0C0C0'>    <font size='1'>Phone</font></td>";
echo "    <td width='50%' style='border-left-style: solid; border-left-width: 1; border-right-style: solid; border-right-width: 1; border-top-style: solid; border-top-width: 1; border-bottom-style: none; border-bottom-width: medium' bgcolor='#C0C0C0'>    <font size='1'>Homepage:</font></td>";
echo "  </tr>";
echo "  <tr>";
echo "    <td width='50%' height='25'>$row[$C1]</td>";
echo "    <td width='50%' height='25'> <a href='$row[homepage]'>$row[homepage]</td>";
echo "  </tr>";
echo "</table>";
echo "<BR>";
  }

/*
Tjekker om der er resultater til en side tilbage,
i så fald udskrives der et link til forrige resultater
*/
print ($offset >= $limit) ? "<a href=\"?offset=".($offset-$limit)."&D1=".$D1."&D2=".$D2."\">Prev</a> | " : "Prev | ";

/*
Kører en for-løkke der udskriver de links der er brug for.
*/
for ($i=0; $i<$total; $i=$i+$limit) {
  // Hvis $i er lig med det nuværende offset udskrives den ikke som link.
  print ($offset == $i) ? ($page_number++)." " : "<a href=\"?offset=".$i."&D1=".$D1."&D2=".$D2."\">".($page_number++)."</a> ";
}

/*
Tjekker om der er resultater til en side frem,
i så fald udskrives der et link til næste resultater
*/
print ($offset+$limit < $total) ? "| <a href=\"?offset=".($offset+$limit)."&D1=".$D1."&D2=".$D2."\">Next</a>" : "| Next";

print "The search have submitted <b>$total</b> breeders, which fullfills the criterias!";

mysql_close($db);
?>
Avatar billede from_kolding Nybegynder
06. december 2004 - 12:56 #4
Hejsa

Det prøver jeg i aften, når jeg kommer hjem.

MVH

Allan
Avatar billede from_kolding Nybegynder
06. december 2004 - 18:56 #5
KANON - TAK FOR DET.

SMID et svar så du kan få dine velfortjente point!

Mange hilsener

Allan
Avatar billede schaefner Juniormester
07. december 2004 - 11:00 #6
Svar :)

Med venlig hilsen
Jesper Sørensen
Avatar billede schaefner Juniormester
07. december 2004 - 11:00 #7
Vi prøevr lige igen ;)
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