Blätterfunktion umbauen?

louS

Mitglied
Hi,
ich hatte mir mal nen fertiges Blätterfunktion script runtergeladen, ist recht simpel eigentlich (glaub ich :D )

PHP:
//Seitenanzahl Navigation
function strankovani($limit,$celkem,$adresa) {
    global $pocatek,$page;
    $pocatek = 0;
    if($celkem > 0) {
    $stran = ceil($celkem / $limit);
    
    if(!isset($_GET['seite'])) { $_GET['seite'] = 1; $pocatek = 0; }
    else {
      $pocatek = (($_GET['seite'] * $limit) - $limit);
    }
    
    $page = "<div class=\"page_navi\">";
    $page .= "<b>[Seite]</b> ";
    for($i=1;$i<=$stran;$i++) {
      if($i<>$_GET['seite']) {
        if($i==$stran) {
        $page .= "<a href=\"".$adresa."seite=$i\">$i</a> | ";
        }
        else
        $page .= " | <a href=\"".$adresa."seite=$i\">$i</a> | ";
      }
      elseif($stran == 1) $page .= "".$i."";
      elseif($i == $stran) $page .= "".$i."";
      else $page .= "".$i."";
    }
    $page .= "</div>";
    }
    else "";
  }
Und in die "index.php" musste man folgendes schreiben:
PHP:
$pagecounter = mysql_result(mysql_query("SELECT count(*) FROM movies WHERE title LIKE '.%$search4%.'"),0,0);
    strankovani($limit = $dpp,$pagecounter,"?search=$_GET[search]&amp;");
Und ausgegeben wurde das ganze mit
PHP:
$page


Nunja, leider gibt er ALLE seiten aus, von 1 bis Ende offen, meine Frage ist nun obs man so machen kann wie zb hier
http://squarism.com/wp-content/photos/pagination.png


Wär echt nett, wenn mir einer die Lösung nennen könnte.

P.S.: Hab schon einige Pagination scripts ausprobiert, aber das ist echt kompliziert

Danke vielmals :D
 
Warum nicht einfach ein eigenes machen? Ist nicht so sonderlich schwer...

Ich gebe dir hier mal einen Ansatz:

PHP:
<?

$posts = array(...);	// Array mit allen Posts (Artikeln, Beiträgen, nenn es wie du willst), die es gibt 
$maxperpage = 10; 		// Wie viele Posts pro Seite?
$maxpages = (count($posts) / $maxperpage + 1); // Anzahl Seiten
$currpage = ($_GET['p'] > 0 && $_GET['p'] < $maxpages; // Aus der URL entnehmen, auf welcher Seite der Benutzer ist
$currminpost = ($currpage - 1) * $maxperpage;	// den ersten Post auf der Seite herausfinden
$currmaxpost = (($currminpost + $maxperpage) < count($posts) ? $currminpost + $maxperpage : count($posts)); // den letzten Post

// Alle Posts zwischen erstem und letztem Anzeigen (die display-Funktion muss das halt machen)
for($i = $currminpost; $i < $currmaxpost; $i++)
{
	display($posts[$i]);
}

// Links zu den verschiedenen Seiten anzeigen
for($i = 1; $i < $maxpages + 1; $i++)
{
	if($currpage != $i)
		echo '<a href="?p='.$i.'>'.$i.'</a> ';
	else
		echo $i.' ';
}

?>

Habe das jetzt einfach mal geschrieben und nicht ausprobiert, sollte aber klappen und du verstehst hoffentlich das Prinzip. Bei solchen Sachen ist selber-schreiben oft einfacher, als sich durch seltsame Funktionen von anderen Leuten durchzuwurschteln.
 
Zuletzt bearbeitet:
Hmmm was kommt denn in $posts = array(...);

Und wo kommt die sql abfragen hin?

Finds nett, dass du hilfen willst :D
 
Zuletzt bearbeitet:
Also, mit der SQL-Abfrage holst du doch ein Array von Werten aus der Datenbank. Ich gehe jetzt mal aus, dass die Werte, die du von der SQL-Abfrage bekommst, auch Arrays (oder Objekte) sind.

Also könntest du $posts etwa so erstellen:

PHP:
$posts = array();
$result = mysql_query($sql);

while ($row = mysql_fetch_assoc($result)) 
{
    $posts[] = $row;
}

Dein $row kann jetzt zum Beispiel Titel, Link und Text enthalten, das müsstest du in der display-Funktion dann wieder auslesen.

display könnte etwa so aussehen:

PHP:
function display($data)
{
   echo '<b><a href="'.$data['link'].'">'.$data['title'].'</a></b><br>';
   echo '<i>'.$data['text'].'</i>';
}
 
Naja aber mit deinem script, werden doch genauso wie bei mir, alle seiten angezeigt oder? Und nicht wie auf dem Bild was ich gezeigt habe.


Und ich hol meine Daten nicht per array aus der db.

Gibt es da keine einfache lösung, anstatt immer diese raterei? Tut mir leid das ich sowas schreibe, aber ich suche nach 4 tagen nach sowas und wenn man nichts findet dann kocht man schonmal über
 
Gibt es da keine einfache lösung, anstatt immer diese raterei? Tut mir leid das ich sowas schreibe, aber ich suche nach 4 tagen nach sowas und wenn man nichts findet dann kocht man schonmal über

1. Ich habe keine Ahnung, wie deine Daten vorliegen
2. Ich habe keine Ahnung, wie das nachher aussehen soll

Daher kann ich dir nur einen Ansatz geben, den du dann anpassen musst. Egal wie du die Daten aus der DB holst, du kannst sie IMMER in ein Array packen, sodass mein Ansatz funktioniert.
Außerdem hast du nach einer Blätterfunktion gefragt. Mein Script gibt dir genau eine solche Blätterfunktion und ist KEIN Pagination-Script. Das ist etwas ganz anderes. Was mein Script macht, ist exakt das:
[Body-Bereich]:
1. Seite: Post 1-10
2. Seite: Post 11-20
3. Seite: Post 21-30
...
[Footer]:
Link zu S.1 | Link zu S.2 | Link zu S.3 | ...

Wenn du jetzt ein Pagination-Script willst, also ein Script, was unten nicht Links zu Seite 1 bis 5000 anzeigt, sondern, wenn du dich bei Seite 56 befindest, nur Links zu 1, 2, 54, 55, 56, 67, 58, 4999, 5000, dann such auch nach einem solchen Script und Frage danach.

Ich habe dir eine Blätterfunktion gegeben, du willst ein Pagination-Script
 
Naja tut mir leid das ich nicht pagination geschrieben hatte, aber ich hatte nen screen von einer solchen pagination navigatio geposted.

Kannst du mir denn bei diesem Punkt weiterhelfen?

Irgendwas, was auch leicht zu verstehen ist
 
Da bräuchte ich auch erst mal wieder ein paar Informationen... wie liegen deine Daten vor?

Hast du Variablen, die die Gesamtanzahl der Seiten beinhalten und eine, die sagt, auf welcher Seite man ist?
Also, ich bräuchte:
PHP:
$minpage = 1; // niedrigste Seitenzahl, wahrscheinlich 1 oder 0
$maxpage = 5000; // höchste Seitenzahl, kommt auf die Anzahl der Posts und Posts/Page an
$area = 3; // wie viele Links zu Seiten "um deine Seite herum" anzeigen?

$currpage = 56; // die momentane Seite

Area = 3 sähe dann so aus:
1, 2, ... 53, 54, 55, 56, 57, 58, 58, ... 4999, 5000

Das Fettgedruckte ist deine Seite, das Kursive ist der Bereich außen herum, in diesem Fall 3.

Wenn du mir $minpage, $maxpage und $currpage geben kannst, kann ich dir auch ein Pagination-Script basteln oder eins so anpassen, dass es für dich passt.
 
Zuletzt bearbeitet:
Also in meiner config.php hab ich folgenden Wert:

$dpp = 10;

Also es werden 10 Datensätze pro seite ausgegeben

Und meine Daten lass ich so auslesen in der index.php zb.

$sql = mysql_query("SELECT * FROM ug_movies ORDER BY title");
while($movie = mysql_fetch_assoc($sql)) {
echo' '.$movie[title].' ';

So in der art :)

Also wär echt super wenn du mir mit dem pagination script helfen könntest.
}
 
@louS:
Mach mal keine Panik, bin ja dabei... habe es schon fast fertig, gibt nur noch bei manchen Gelegenheiten bugs, die ich noch fixen muss.

Screenshot angehängt.
 

Anhänge

  • pagination.png
    pagination.png
    9 KB · Aufrufe: 11
Zurück