Seitenzahlenfunktion aber wie?

Pixelschubser

Mitglied
Hi,

ich hab hier ein Script das mir die News auf meiner Seite anzeigt.
Aber im Augenblick ist es so, das auf der Seite alle News untereinander stehen.

Das soll aber nicht so sein, macht keinen Spaß durch ca. 200 News zu scrollen.

Wie baue ich da eine Seitenzahlen Funktion ein?
Also wo z.B. nur 5 News pro Seite stehen und dann eine neue Seite generiert wird.

Hier mal mein PHP Code
PHP:
 if ($f == "archiv" AND $act != "show") {
    eval ("\$archiv_header = \"".tmpl("archiv_header")."\";");
    echo $archiv_header;

    $canzahl = mysql_query("SELECT count(*) FROM ".$prefix."_news");
    $anzahl = mysql_fetch_array($canzahl);

    if ($datac["top"] == "1") {
       $a = $datac["top_limit"] + $datac["top_rlimit"];
       $sqln = mysql_query("SELECT * FROM ".$prefix."_news ORDER BY date desc LIMIT $a, $anzahl[0]");
    } else
          $sqln = mysql_query("SELECT * FROM ".$prefix."_news ORDER BY date desc LIMIT $datac[show_limit], $anzahl[0]");


    while ($data = mysql_fetch_assoc($sqln)){
          if (empty($data[picwidth2])) $pre = $datac[pic];
          else $pre = $data[picwidth2];
          $t = explode("x", $pre);
          $width = $t[0];
          $height = $t[1];

          if ($data[pic])
             $NEWS[pic] = "<img src=\"$data[pic]\" width=\"$width\" height=\"$height\" border=\"0\" alt=\"\">";
          else $NEWS[pic] = "";

          $comanzahl = mysql_query("SELECT count(*) FROM ".$prefix."_comments WHERE id = '$data[id]'");
          $comm = mysql_fetch_array($comanzahl);

          if ($comm[0] == "1") $comment = "$comm[0] $COMMENT[sg_name]";
          else $comment = "$comm[0] $COMMENT[pl_name]";

          setlocale (LC_TIME, "ge");
          $data[date] =  strftime("$datac[post_date]", $data[date]);
          $sqlu = mysql_query("SELECT * FROM ".$prefix."_user WHERE user = '$data[writer]'");
          $datau = mysql_fetch_assoc($sqlu);

          if ($datau[user] != $data[writer]) $datau[user] = $data[writer];
          else $datau[user] = $datau[user];

          if ($datac["complink"] == "0") {
             eval ("\$archiv = \"".tmpl("archiv")."\";");
             echo $archiv;
          } else {
                 eval ("\$archiv = \"".tmpl("index_news")."\";");
                 echo $archiv;
          }
   
   }
    eval ("\$archiv_footer = \"".tmpl("archiv_footer")."\";");
    echo $archiv_footer;

P.S. Diese Seite wird aufgerufen mit index.php?f=archiv

Ich hoffe Ihr könnt mir da weiterhelfen.

-Pixelschubser-
 
Hallo,

mit LIMIT(start,anzahl) in der SQL-Anweisung kannst Du festlegen, ab welchem Datensatz, wie viele Datensätze zurückgegeben werden sollen. Somit kannst Du schonmal die Anzahl der anzuzeigenden News auf z.B. 5 begrenzen.

Mit einer Variable, die Du an Dein Script übergibst steuerst Du, ab welchem Datensatz die 5 Datensätze zurückgegeben werden sollen. Durch die Manipulation dieser Variable kannst Du dann durch die News "blättern"

mfg, snuu
 
Hallo,

also ich würde bei einem News vielleicht Lieber den letzten Monat anzeigen lassen als eine Feste anzahl, aber nungut.

Über ein
mysql_query("SELECT * FROM ".$prefix."_news");
gefolgt von einem
mysql_affected_rows();
bekommt man die gesammtanzahl wo an Datensätzen vorhanden ist, so kann man sich dann leicht ausrechnen wieviele Seitenzahlen es insgesammt gibt. Und mit dem Limit warst du schon richtig.

entweder man übergibt die News_ID mit ab der aufgelistet wird oder die Seite, bei News_ID würde ich dann einfach
"LIMIT $News_ID , ". ($News_ID + $EintraegeProSeite)

Die Nummerierung lässt man unten von einer Schleife generieren....
 
Original geschrieben von EngelchenB
Hallo,

also ich würde bei einem News vielleicht Lieber den letzten Monat anzeigen lassen als eine Feste anzahl, aber nungut.

Über ein
mysql_query("SELECT * FROM ".$prefix."_news");
gefolgt von einem
mysql_affected_rows();
bekommt man die gesammtanzahl wo an Datensätzen vorhanden ist, so kann man sich dann leicht ausrechnen wieviele Seitenzahlen es insgesammt gibt. Und mit dem Limit warst du schon richtig.

entweder man übergibt die News_ID mit ab der aufgelistet wird oder die Seite, bei News_ID würde ich dann einfach
"LIMIT $News_ID , ". ($News_ID + $EintraegeProSeite)

Die Nummerierung lässt man unten von einer Schleife generieren....

Hmm...

mit einer Schleife?
Da steig ich nicht ganz durch.
 
Hm, wieso nutzt du nicht die Suchfunktion und passt dein Script dann an?

Das heir sollte dir die ganze Prozedur zeigen...

PHP:
$anzahlproseite=5;
if(!isset($seite) || $seite=="")
{
    $seite=0;
}

$eintraege=mysql_numrows(mysql_query("SELECT * FROM tabelle"));
$seiten=$eintraege/$anzahlproseite;
$start=$seite*$anzahlproseite;
$stop=$start+$anzahlproseite;

$result=mysql_query("SELECT * FROM tabelle LIMIT ".$start.",".$stop."");
while ($data=mysql_fetch_array($result))
{
    //Hier kommt dann die verarbeitung der einzelnen Einträge hin
}

$zurueck=$seite-1;
echo"<a href=\"".$PHP_SELF."?seite=".$zurueck."\">zurück - </a>";
for($i=0;$i<$seiten;$i++)
{
    if($i==$seite)
    {
        echo"<b><a href=\"".$PHP_SELF."?seite=".$i."\">".$i." </a></b>";
    }
    else
    {
        echo"<a href=\"".$PHP_SELF."?seite=".$i."\">".$i." </a>";
    }
}
$vor=$seite+1;
echo"<a href=\"".$PHP_SELF."?seite=".$vor."\"> - vor</a>";

PS. HuHu Nachbar :) Lüneburg ist von mir garnicht weit weg ;)
 
;) Ja stimmt.

Aber bin zur Zeit in Dortmund.

Okay durch das was Du gepostet hast, kann ich mich denke ich durchlesen.

Aber wie baue ich das in meinen Code (erstes post) ein.
Den Rest hoffe ich bekomme ich dann selbst hin.

-Pixelschubser-
 
die schleife unten mit den Seitennummern würde so ausshen:

PHP:
$EintraegeProSeite = 5;
mysql_query("SELECT * FROM ".$prefix."_news");
$rows = mysql_affected_rows();
// kannst du auch über deine methode machen, man braucht nur in $rows die anzahl

$i = 0;
while ($rows > $i){
   echo "<A HREF=\"index.php?f=archiv&view=$i\">$i</a> ";
   $i += $EintraegeProSeite ;
}
 
Sollte relativ einfach sein, einfach den Part für die Berechnungen...
PHP:
$anzahlproseite=5;
if(!isset($seite) || $seite=="")
{
    $seite=0;
}

$eintraege=mysql_numrows(mysql_query("SELECT * FROM tabelle"));
$seiten=$eintraege/$anzahlproseite;
$start=$seite*$anzahlproseite;
$stop=$start+$anzahlproseite;
...vor die Abfrage der News und dann deinen Query, mit dem du die News abfragst mit...
PHP:
 LIMIT ".$start.",".$stop."
...erweitern.

Dies ist der Hauptteil der Seitenfunktion gewesen, der Rest...
PHP:
$zurueck=$seite-1;
echo"<a href=\"".$PHP_SELF."?seite=".$zurueck."\">zurück - </a>";
for($i=0;$i<$seiten;$i++)
{
    if($i==$seite)
    {
        echo"<b><a href=\"".$PHP_SELF."?seite=".$i."\">".$i." </a></b>";
    }
    else
    {
        echo"<a href=\"".$PHP_SELF."?seite=".$i."\">".$i." </a>";
    }
}
$vor=$seite+1;
echo"<a href=\"".$PHP_SELF."?seite=".$vor."\"> - vor</a>";
...dient nurnoch zur Auswahl, den kannst du dann da positionieren, wo der User die Seiten auswählen können soll.

Ich denke nicht, dass man dir noch die Seitenfunktion in deinen Code einpassen muss, oder? :(

[edit]Da war Engelchen wohl schneller ;)[edit]
 
Zuletzt bearbeitet:
Zurück