Such Blätterfunktion die 5 Seiten Links auf einmal max. immer Anzeigt soll!

master1971

Mitglied
Hallo,

ich habe eine Blätterfunktion, die Seitenlinks so anzeigt " Zurück 1 2 3 4 5 6 7 8 9 10 Weiter " usw. .

Ich möchte aber das anzahlmässig max. immer nur 5 Angezeigt werden, die Seitenlinks sollen nicht endlos angezeigt werden.

So wurde ich es gerne haben:

"1 2 3 4 5 Weiter " und dann "Zurück 6 7 8 9 10 Weiter" usw.

Leider bekomme ich das nicht hin.

Hier der Such Blätterfunktion PHP Code:
PHP:
$strSQL = "SELECT XXXXXX FROM XXXXX WHERE (BINARY XXXXXX LIKE '%".$_GET["XXXXXXX"]."%')";  
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");  
$Num_Rows = mysql_num_rows($objQuery);

$Per_Page = 10;   // Per Page
  
$Page = $_GET["Page"];  
if(!$_GET["Page"])  
{  
$Page=1;  
}  
  
$Prev_Page = $Page-1;  
$Next_Page = $Page+1;  
  
$Page_Start = (($Per_Page*$Page)-$Per_Page);  
if($Num_Rows<=$Per_Page)  
{  
$Num_Pages =1;  
}  
else if(($Num_Rows % $Per_Page)==0)  
{  
$Num_Pages =($Num_Rows/$Per_Page) ;  
}  
else  
{  
$Num_Pages =($Num_Rows/$Per_Page)+1;  
$Num_Pages = (int)$Num_Pages;  
}

 

$strSQL .=" ORDER BY XXXXXXX DESC LIMIT $Page_Start , $Per_Page";
  
$objQuery  = mysql_query($strSQL);


if($Prev_Page)  
{  
echo " <a href='$_SERVER[SCRIPT_NAME]?Page=$Prev_Page&XXXXXXXX=$_GET[XXXXXXX]'><< Zurück </a> ";  
}  
  
for($i=1; $i<=$Num_Pages; $i++){  
if($i != $Page)  
{  
echo "[ <a href='$_SERVER[SCRIPT_NAME]?Page=$i&XXXXXXXXXX=$_GET[XXXXXXXXXX]'>$i</a> ]";  
}  
else  
{  
echo "<b> $i </b>";  
}  
}  
if($Page!=$Num_Pages)  
{  
echo " <a href ='$_SERVER[SCRIPT_NAME]?Page=$Next_Page&XXXXXXXXXX=$_GET[XXXXXXXXXX]'> Weiter >></a> ";  
}

Kann mir jemand weiterhelfen?

Ich bin dankbar wenn Jemand mir dabei Helfen könnte.

Grüße euch allen, das ist hier wirklich eine klasse Seite.
 
ändere mal den unteren teil :
PHP:
if($Prev_Page)  
{  
echo " <a href='$_SERVER[SCRIPT_NAME]?Page=$Prev_Page&XXXXXXXX=$_GET[XXXXXXX]'><< Zurück </a> ";  
}  
  
for($i=1; $i<=$Num_Pages; $i++){  
if($i != $Page)  
{  
echo "[ <a href='$_SERVER[SCRIPT_NAME]?Page=$i&XXXXXXXXXX=$_GET[XXXXXXXXXX]'>$i</a> ]";  
}  
else  
{  
echo "<b> $i </b>";  
}  
}  
if($Page!=$Num_Pages)  
{  
echo " <a href ='$_SERVER[SCRIPT_NAME]?Page=$Next_Page&XXXXXXXXXX=$_GET[XXXXXXXXXX]'> Weiter >></a> ";  
}

zu

PHP:
if($Prev_Page)  
{  
echo " <a href='$_SERVER[SCRIPT_NAME]?Page=$Prev_Page&XXXXXXXX=$_GET[XXXXXXXXXX]'><< Zurück </a> ";  
} 
 
$Page_count = 5;

$i_start = 1;
if (($Page-floor($Page_count/2)) > 1) $i_start = ($Page-floor($Page_count/2));
if (($Page+floor($Page_count/2)) > $Num_Pages) $i_start += $Num_Pages-($Page+floor($Page_count/2));
if ($i_start < 1) $i_start = 1;

$i_end = $Num_Pages;
if (($Page+floor($Page_count/2)) < $Num_Pages)  $i_end = ($Page+floor($Page_count/2));
if (($Page-floor($Page_count/2)) < 1) $i_end += 1-($Page-floor($Page_count/2));
if ($i_end > $Num_Pages) $i_end = $Num_Pages;


for($i= $i_start; $i<= $i_end; $i++){  

if($i != $Page)  
{  
echo "[ <a href='$_SERVER[SCRIPT_NAME]?Page=$i&XXXXXXXXXX=$_GET[XXXXXXXXXX]'>$i</a> ]";  
}  
else  
{  
echo "<b> $i </b>";  
}  
}  

if($Page!=$Num_Pages)  
{  
echo " <a href ='$_SERVER[SCRIPT_NAME]?Page=$Next_Page&XXXXXXXXXX=$_GET[XXXXXXXXXX]'> Weiter >></a> ";  
}

Außerdem ist mir noch Aufgefallen ganz am Anfang das man leicht an deine datenbank kommen könnte , Stichwort : SQL-Injection.
 
Zuletzt bearbeitet:
Anbei. Formatiert den Code! Zu eurem eigenen Wohl.
So wir er jetzt da steht muss man Klammern zählen um herauszufinden welche Schleife wo endet.

Nachtrag:
Ich habe mein Navigations-Script mal um diese Thematik ergänzt
PHP Einfache Seitennavigation
 
Hallo hhunderter,

vielen dank für deine Hilfe, ist genau die Lösung gewesen nach der ich gesucht habe.

Wegen der Sicherheit meiner DB hinsichtlich "SQL-Injection", habe ich mir das gemerkt und werde das Lössen evtl. werde ich da hier mal dazu noch stöber und Tipps mir Hollen. Aber danke noch mal für den Hinweis. Dir Yaslaw, auch noch mal vielen dank für deine Tipps.

Diese Seite und von den jeweiligen Betreiber und Nutzter kann man hier nur den Hut ziehen.

Grüße

master1971
 
Zurück