PHP Tutorials, PHP lernen, PHP Forum, PHP Community and more ... MyWebsolution.de!

Sidebar

Home News Tutorials Workshops Tipps Artikel Gästebuch Sitemap Pascal Landau

Suche

Members

Forum Login Registrierung

Statistik

Statistikbereich
Jetzt3
Heute135
Gestern296
Gesamt2370023

PHP Blätterfunktion - Texte aufteilen

Autor Flitze
Klicks 80291
Rating für PHP Blätterfunktion
  7.4 von 10
Bewertungen45
Stand 08.07.2010
Keywords:
PHP Blätterfunktion, Seitenzahlen Tutorial, Text, Aufteilen, in Seiten gliedern, Seitenzahlen

Amazon: PHP 5.3 und MySQL 5.1
Breadcrumb:
Tutorials » PHP Blätterfunktion » PHP Blätterfunktion - Texte aufteilen
Seite : 1 2 3 4 Bewerten
Article Wizard - deutscher Article Spinner

4. Lange Texte aufteilen

[ADSENSE_LINE]
Beim Schreiben meiner Tutorials stieß ich schnell auf das Problem, dass die Texte sehr lang und ausführlich wurden und infolge dessen auch unübersichtlich und unangenehm zu lesen waren. Deshalb habe ich mir eine Möglichkeit überlegt, lange Texte an bestimmten Stellen zu trennen.

In diesem Fall habe ich nicht wie zuvor eine bestimmte Anzahl an Datensätzen oder Bildern, sondern eben nur die Gesamtlänge eines Textes. Die Seitenlänge könnte ich nun nach einer bestimmten Anzahl von Zeichen berechnen lassen.. aber irgendwie wäre das blödsinnig, weil ich ja meine Texte u.U. in bestimmte Abschnitte und Kapitel unterteilen will.

Deshalb habe ich mich für eine Lösung mittels REGEX entschieden. Ich habe einen [ page]-Tag entwickelt, der die anzuzeigende Seite umschließen muss. Ein Beispiel dazu:

[ page]Seite 1 Einleitung[ /page]
[ page]Seite 2 Hauptteil
mit etwas mehr Text[ /page]
[ page]Seite 3 Schluss[ /page]

daraus wird dann so etwas

Seite: 1 2 3

Seite 1 Einleitung


Seite: 1 2 3

Seite 2 Hauptteil
mit etwas mehr Text


Seite: 1 2 3

Seite 3 Schluss


Der Code dafür sieht folgendermaßen aus

PHP:
<?php
    preg_match_all
('#\[page\](.*)\[/page\]#Uis',$row['Inhalt'], $text);

    
$page = isset($_GET['page'])?(int)$_GET['page']:1;
    if(
$page 1)
        
$page 1;
    if(
$page count($text[1]))
        
$page count($text[1]);
    echo 
"<p>\n".
         
"Seite : ";
    for(
$i=1$i<=count($text[1]); $i++){
        if(
$i == $page)
             echo 
$i." ";
        else
             echo 
"<a href=\"text.php?page=".$i."\">".$i."</a> ";
    }
    echo 
"</p>";

    echo 
"<div>\n";
    echo 
$text[1][$page-1];
    echo 
"</div>\n";

    echo 
"<table>\n";
    echo 
" <tr>\n";
    echo 
"  <td style=\"text-align:left;\">\n";
    
// Befindet sich der User nicht auf der ersten Seite wird ein Zurück-Link angezeigt
    
if($page 1)
        echo 
"<a href=\"text.php&page=".($page-1)."\">« Zur&uuml;ck</a>\n";
    else
        echo 
"&nbsp;\n";
    echo 
"  </td>\n";
    echo 
"  <td style=\"text-align:right;\">\n";
    
// Befindet sich der User nicht auf der letzten Seite wird ein Weiter-Link angezeigt
    
if($page count($text[1]))
        echo 
"<a href=\"text.php?page=".($page+1)."\">Weiter »</a>\n";
    else
        echo 
"&nbsp;\n";
    echo 
"  </td>\n";
    echo 
" </tr>\n";
    echo 
"</table>";
?>


Der Regex matcht durch preg_match_all alles, was zwischen [ page]-Tags steht und speichert es in dem Array $text. $text[0] ist ein Array mit allen gefundenen Textpassagen, was zusätzlich noch die [ page]-Tags enthält. Da mich diese aber nicht interessieren, betrachte ich nur $text[1], in dem alle Textpassagen ohne die [ page]-Tags stehen.

PHP:
<?php
    $page 
= isset($_GET['page'])?(int)$_GET['page']:1;
    if(
$page 1)
        
$page 1;
    if(
$page count($text[1]))
        
$page count($text[1]);
?>


Diese Struktur sollte aus den vorhergehenden Beschreibungen klar sein. Allerdings erkläre ich noch kurz, was es mit count($text[1]); auf sich hat.

Jedes Element dieses Arrays entspricht einer eigenen Seite, deshalb ist die maximale Seitenzahl gleich der Anzahl der Elemente des Arrays, oder anders gesagt

PHP:
<?php
    count
($text[1]);
?>


Die Anzeige der Seitenzahlen läuft folgendermaßen ab

PHP:
<?php
    
for($i=1$i<=count($text[1]); $i++){
        if(
$i == $page)
             echo 
$i." ";
         else
            echo 
"<a href=\"text.php?page=".$i."\">".$i."</a> ";
    }
?>


Sollte ebenfalls nicht kommentiert werden müssen, nachdem ich das oben schon 2 mal erklärt habe ;)

Die Ausgabe des eigentlichen Seiteninhaltes ist auch sehr simpel, denn mehr als ein einfaches

PHP:
<?php
    
echo "<div>\n";
    echo 
$text[1][$page-1];
    echo 
"</div>\n";
?>


brauch man nicht. In diesem Fall habe ich keine extra Variable $offset erstellt, sondern gehe direkt auf den Index des Arrays. Und wie wir alle wissen, beginnt ein numerisches Array bei '0', weshalb Seite '1' auch mit dem Array-Index '0' aufgerufen werden muss :)

Als kleines Feature habe ich noch eine Navigation am Seitenende eingebaut, mit der man schnell zur vorigen oder nächsten Seite gelangt

PHP:
<?php
    
echo "<table>\n";
    echo 
" <tr>\n";
    echo 
"  <td style=\"text-align:left;\">\n";
    
// Befindet sich der User nicht auf der ersten Seite wird ein Zurück-Link angezeigt
    
if($page 1)
        echo 
"<a href=\"text.php?page=".($page-1)."\">« Zur&uuml;ck</a>\n";
    else
        echo 
"&nbsp;\n";
    echo 
"  </td>\n";
    echo 
"  <td style=\"text-align:right;\">\n";
    
// Befindet sich der User nicht auf der letzten Seite wird ein Weiter-Link angezeigt
    
if($page count($text[1]))
        echo 
"<a href=\"text.php?page=".($page+1)."\">Weiter »</a>\n";
    else
        echo 
"&nbsp;\n";
    echo 
"  </td>\n";
    echo 
" </tr>\n";
    echo 
"</table>";
?>


Diese Ausgabe erfolgt unter dem Inhalt, sodass man am Ende der Seite gleich weiterlesen kann, ohne nach oben scrollen zu müssen. Wie zuvor erwähnt, nutze ich diese Technik für meine Tutorials ;)

Zurück zur vorigen Seite:
PHP Blätterfunktion - Eine Bildergalerie
Bewerten

»» Zurück zum Menu

Suchmaschinenoptimierung

Suchmaschinenoptimierung (SEO - Search Engine Optimization)

Ranking

Tutorials (13)

8.6
8.4
8

Workshops (3)

8.8
8.7
7.6

Tipps (12)

7.2
6.7
6.5

Artikel (32)

8.4
8
7.2

RSS Feeds

Full Feed Tutorials Workshops Tipps Artikel

Twitter

Follow me on Twitter

Partner & Links


Valid HTML 4.01 Transitional
Valid CSS
nach oben

Diese Seiten unterstützen MyWebsolution:
 
© MyWebsolution.de
2006-2024