Datei in Zielen auslesen

Nicht getestet, hatte dafür keine Zeit. ;)

Ausgabe so anpassen:
PHP:
<?php
$per_page = 10;
$current_page = ((int)trim($_GET['p']) > 0 ? (int)trim($_GET['p']) : 1);

$lines_total = array_reverse( file( 'daten.dat' ) );
$pages_count = ceil(count($lines_total) / $per_page);
$lines = array_slice($lines_total, 
                     (($per_page * $current_page) - $per_page), 
                     $per_page);

if (count($lines_total) > $per_page) {

    echo "Blättern: Seite ".(int)$current_page
        ." von ".$pages_count." ";
    
    if ($current_page > 1) {
    
        echo "<a href='dein_script.php?p=1'>&lt;&lt;Start</a>&nbsp;";                     
        echo "<a href='dein_script.php?p=".($current_page - 1)."'>&lt;Zurück</a>&nbsp;";                     
    }
    
    if ($current_page < $pages_count) {
    
        echo "<a href='dein_script.php?p=".($current_page + 1)."'>Vor&gt;</a>&nbsp;";                     
        echo "<a href='dein_script.php?p=".$pages_count."'>Ende&gt;&gt;</a>&nbsp;";                     
    }
}
                     
if (is_array($lines)) {

    foreach ($lines as $line ){
        
        echo trim($line)."<br><br>";
    }
}
?>

Der Dr. hat allerdings Recht, wenn er sagt, dass diese Lösung bei mehr als, sagen wir 300 Einträgen, unperformant wird. Wenn Du partout bei Text-Datenbank bleiben willst, dann solltest Du Dir überlegen, ob Du auf das HTML in der Datenbank verzichtest und nur die Rein-Infos in Form von CSV (Also, Daten pro Zeile mit Semikolon separiert) speicherst. Das würde Speicherplatz und Auslesezeit sparen.

Die datenbank müsste dann so aussehen:

Sebastian;mail@world.net;http://www.google.de;Tolles Gästebuch!
Hans;hans@world.net;http://www.yahoo.de;Zweiter Eintrag...

Beim Auslesen müsstest Du dann jede Zeile extrahieren:
list($name, $email, $homepage, $eintrag) = explode(';', $line);

Und das HTML erst bei der Ausgabe zusammensetzen.

Beim Schreiben in die Datenbank sicherstellen, dass in den Userdaten keine Semikolen vorkommen:

$name = str_replace(';', ':', $name);
$email = ...
$homepage = ...
$eintrag = ...
 
Ich bleibe erstmal bei meiner daten.dat und wenn ich dann mal Lust habem, werde ich es versuchen über eine Mysql Datenbank zu lösen.

Dein Code mit der Blätterfunktion hat perfekt funktioniert.
Vielen Dank dafür.
 
Zurück