Seitenblätterfunktion

RageNo1

Erfahrenes Mitglied
Ich bin grad dabei eine Blätterfunktion in ein Newsscript einzubauen.

PHP:
// seitenanzeige code

	$pagerows = mysql_query("SELECT id FROM $news");
	$number = mysql_num_rows($pagerows);

    $pages = ceil($number / $links);

    if (empty($_GET['page'])) {
   		$query_limit = $links;
        }
 	else{
   		$start = $_GET['page'] * $links;
   		$query_limit = $start.','.$links;
		}

Nun kann ich die Seite folgendermassen aufrufen: index.php?page=2 ... 3 usw
Leider ist nun aber unter wenn ich page=1 aufrufe nicht Seite 1 sondern Seite 2
und Seite 1 fällt unter page=0 !?

Wie kann ich festlegen das Seite 1 auch unter page=1 aufrufbar ist?
 
Prinzipiell wäre es besser mit Limit zu arbeiten bei deinen MySQL Query.

PHP:
$pagerows = mysql_query("SELECT id FROM $news LIMIT $x,10");
<font color="Black">So bekommst Du nun immer 10 Einträge pro Seite raus. Das ist recht vorteilhaft wie ich damals merkte , bei deinen jetzigen ist es so das Du alles ausliest. Das mag bei 100 oder 1000 Einträgen gut funktionieren , sogar bei 10000 ging es noch aber stopf die Datenbank mal mit 100.000 Einträgen voll oder noch mehr. Da kommst ruck zuck an die Grenzen.

Die Seite muss dann immer neu berechnet werden. Da wir nun in dem Beispiel immer 10 Einträge haben.

Seite 1 ist dann 0 bis 9 , Seite 2 dann 10 - 19 , Seite 3 dann 20 - 29 etc etc...

PHP:
//nehmen wir mal an es wird so übergeben ?seite=1
$site = (isset($_GET['site'] && !empty($_GET['site']))?((int)$_GET['seite']*10)-10:0;
// und das jagen wir alles in den query rein 
$pagerows = mysql_query("SELECT id FROM $news LIMIT $site,10");

Ungetestet sollte aber funktionieren hoffe ich , ansonsten müsste man nen komplettes If Else Konstrukt da hinhaun :)
 
Und noch eine Frage:
Wenn ich das ganze nun erweitern möchte sodass bei angabe von cat=2 nur Seiten mit
cat 2 ausgegeben werden und aufgelistet wie wende ich das am besten auf dem Script an?

PHP:
// seitenanzeige code

    $pagerows = mysql_query("SELECT id FROM $news WHERE activ=1");
    $number = mysql_num_rows($pagerows);

    $pages = ceil($number / $links);

    if (empty($_GET['page'])) {
           $query_limit = $links;
        }
     else{
           $start = $_GET['page'] * $links;
           $query_limit = $start.','.$links;
        }
 
Zuletzt bearbeitet:
Da ich nun nicht weiss wie deine MySQL Tabellen aufgebaut sind kann ich leider nur raten. So vom ersten denken würde ich sagen.

Tabelle wo News gespeichert sind.

grob :
id, news,...,cat_id

PHP:
//url zum beispiel so ?site=1&cat_id=2
$query = "SELECT * FROM news WHERE cat_id = ".(int)$_GET['active']." LIMIT ".$_GET['site'].",10";

//oder etwas arg unübersichtlicher
$query = "SELECT * FROM news ".((!empty($_GET['cat_id']))?"WHERE cat_id=".$_GET['cat_id']:"")." LIMIT ".((isset($_GET['site']))?($_GET['site']*10)-10:0).",10";

Wäre natürlich nun darauf zu achten das bei jeden weiter klick die cat_id wieder weiter gegeben wird.
 
Zurück