php mysql opdel sider
Jeg fandt en side opdeler på php universet som jeg smed sammen med mit eksisterende script, problemmet efterhånden som jeg har leget med det er jeg kommet til at slå lige netop den funktion ihjel - min søgning funker, kategorier funker, det talte nummer er rigtigt - men! når du trykker på side nummer eller fremad knappen blir du ved med at være på resultaterne fra side 1nogen gange er 4 øjne bedre end 2 - nogen der kan opdage fejlen
på forhånd 10.000 gange tak!
<?php
require_once('mysql.php');
// GET og POST ombrydning + Standard værdi
$pr_side = $_GET['pr_side'];
if ($_GET['pr_side'] == NULL)
{
$pr_side = $_POST['pr_side'];
}
if ($pr_side == NULL)
{
$pr_side = 5;
}
$search = $_GET['search'];
if ($_GET['search'] == NULL)
{
$search = $_POST['search'];
}
$kategori = $_GET['kategori'];
if ($_GET['kategori'] == NULL)
{
$kategori = $_POST['kategori'];
}
?>
<table cellpadding="0" cellspacing="0" style="width: 650px;">
<tr>
<td>
<form action="?side=produkter" method="post">
<input name="search" type="text" value="Søg her.." onfocus="if(this.value=='Søg her..') this.value='';" onblur="if(this.value=='') this.value='Søg her..';"/>
<input name="sog" type="image" alt="Søg" title="Søg" src="admin/gfx/sog.png" style="margin-bottom: -3px;"/>
</form><br /><br />
</td>
<td>
<form action="<?
if ($search !=NULL)
{
echo "?side=produkter&search=$search";
}
else
{
echo "?side=produkter&kategori=$kategori";
}
?>" method="post">
Vis : <select name="pr_side" style="width: 120px;">
<optgroup label="Antal per side">
<option value="5" >5 Resultater</option>
<option value="10">10 Resultater</option>
<option value="20">20 Resultater</option>
<option value="50">50 Resultater</option>
<option value="10000">Alle Resultater</option>
</optgroup>
</select>
<input name="show" alt="Vis" title="Vis" type="image" src="admin/gfx/vis.png" style="width: 32px; margin-bottom: -3px;"/> <a href="java script:history.back()"><img style=" margin-bottom: -3px;" src="gfx/icons/arrow_up.png" border="0" alt=" Tilbage " title=" Tilbage " /></a>
</form><br /><br />
</td>
</tr>
<tr>
<td colspan="2" align="center">
<table style="width: 500px;" cellpadding="0" cellspacing="0">
<?php
/* Hvis visfra-variablen ikke findes i URL-feltet og den ikke er et nummer og den er større end antallet i databasen, så sættes den til 0, ellers sættes den til værdien fra URL feltet */
$vis_fra = (isset($_GET["visfra"]) && is_numeric($_GET["visfra"]) && $_GET["visfra"] < $antal) ? $_GET["visfra"] : 0;
/* laver et database udtræk med limit, så den kun hiver det rigtige antal ud fra tabellen */
if ($kategori !=NULL)
{
$sql = mysql_query("SELECT * FROM produkter WHERE kategori='".$kategori."' ORDER BY id DESC limit $vis_fra, $pr_side") or die(mysql_error());
$antal = mysql_result(mysql_query("SELECT COUNT(*) FROM produkter WHERE kategori='".$kategori."'"),0) or die(mysql_error());
}
else
{
if ($search != NULL)
{
$sql = mysql_query("SELECT * FROM produkter WHERE title LIKE '%".$search."%' ORDER BY id DESC limit $vis_fra, $pr_side") or die(mysql_error());
$antal = mysql_result(mysql_query("SELECT COUNT(*) FROM produkter WHERE title LIKE '%".$search."%'"),0) or die(mysql_error());
}
else
{
$sql = mysql_query ("SELECT * FROM produkter ORDER BY id DESC limit $vis_fra, $pr_side") or die(mysql_error());
$antal = mysql_result(mysql_query("SELECT COUNT(*) FROM produkter"),0) or die(mysql_error());
}
}
/* kører en while og udskriver data */
while ($row = mysql_fetch_array($sql)) {
if ($row['border'] == "on")
{
$border = "1";
}
else
{
$border = "0";
}
?>
<tr>
<td valign="top" width="85%" style="text-align:left;">
<strong><a href="?side=produkt&id=<?=$row['id']?>"><?=$row['title']?></a></strong> <br />
<span id="text2"><img src="gfx/punkttitle-break.png" border="0" alt="" title="" /><br />
<?=(substr($row['beskrivelse'],0,50))?>...<br />
</td>
<td valign="top" width="15%">
<a href="?side=produkt&id=<?=$row['id']?>"><img src="gfx/produkter/<?=$row['thumb']?>" alt="Se Detaljer" title="Se Detaljer" border="<?=$border?>" /></a>
</td>
</tr>
<tr>
</table><br /><br />
<table cellpadding="0" cellspacing="0" style="width: 500px;">
<tr>
<?
}
?>
<tr>
<td>
<?php
/* Antallet af poster vi ønsker vist på hver side */
/* Der undersøges om der skal udskrives et "forrige side"-link, er dette tilfældet udskrives linket */
echo "<div align='center'>";
if ($vis_fra > 0) {
$back= $vis_fra - $pr_side;
if ($search !=NULL)
{
echo "<a href='?side=produkter&pr_side=$pr_side&visfra=$back&search=$search'><img src='gfx/icons/arrow_left.png' border='0' style=' margin-bottom: -3px;' alt='Forrige' /></a> ";
}
else
{
echo "<a href='?side=produkter&pr_side=$pr_side&visfra=$back&kategori=$kategori'><img src='gfx/icons/arrow_left.png' border='0' style=' margin-bottom: -3px;' alt='Forrige' /></a> ";
}
}
$page = 1;
/* Alle siderne udskrives så man med et klik kan få resultaterne fra fx 90-100 */
for ($start = 0; $antal > $start; $start = $start + $pr_side) {
if($vis_fra != $page * $pr_side - $pr_side) {
if ($search !=NULL)
{
echo "<a href='?side=produkter&pr_side=$pr_side&visfra=$start&search=$search'>$page</a> ";
}
else
{
echo "<a href='?side=produkter&pr_side=$pr_side&visfra=$start&kategori=$kategori'>$page</a> ";
}
} else {
echo "<strong>".$page."</strong> ";
}
$page++;
}
/* Der undersøges om der skal udskrives et "næste side"-link, er dette tilfældet udskrives linket */
if ($vis_fra < $antal - $pr_side) {
$next = $vis_fra + $pr_side;
if ($search !=NULL)
{
echo " <a href='?side=produkter&pr_side=$pr_side&visfra=$next&search=$search'><img src='gfx/icons/arrow_right.png' border='0' style=' margin-bottom: -3px;' alt='Næste' /></a>";
}
else
{
echo " <a href='?side=produkter&pr_side=$pr_side&visfra=$next&kategori=$kategori'><img src='gfx/icons/arrow_right.png' border='0' style=' margin-bottom: -3px;' alt='Næste' /></a>";
}
}
echo "</div><br />";
?>