Tabelleneintrag über mehrere Seiten verteilen

Ich bräuchte mal wieder eure Hilfe…
Folgendes, ich habe ein Script, welches Beiträge aus einer Datenbank ausließt. Nun sind manche Beiträge so lang, dass ich sie gerne aus mehreren Seiten verteilen würde, ohne sie auf mehere Datenbankeinträge zu verteilen.
Gibt es da eine Möglichkeit??

Danke :stuck_out_tongue:

hi,

also es scheitert im moment daran, dass ich deine frage nicht verstehe. was möchtest du genau? einen eintrag in zwei verschiedene zellen packen, einen eintrag mit “…” abschneiden …?

Nein.
Ich möchte einen Eintrag auf mehrere Seiten verteilen.
Z.B. so:
Teil 1= meinedomain.de/beitrag.php?id=1&seite=1
Teil 2= meinedomain.de/beitrag.php?id=1&seite=2
Teil 3= meinedomain.de/beitrag.php?id=1&seite=3

D.h. der Beitrag soll ‘aufgesplittet’ werden.

aaaachso. wie genau würdest du es denn gerne haben? sollen wörter auch mittendrin abgeschnitten werden dürfen oder sollen sätze eingehalten werden? da könnte ich was programmieren oder dir tipps geben. machbar ist das auf jeden fall.

ich hatte es mir eigentlich so vorgestellt, dass ich z.B <–neueseite–> schreibe und dann die nächste seite eben beginnt, an dieser funktion bin ich aber gescheitert.

Hier mal der bisherige code:

[code]<?php
require_once(‘include/konstanten.php’);
$db = @new mysqli(’’.$MYSQL_HOSTNAME.’’, ‘’.$MYSQL_BENUTZERNAME.’’, ‘’.$MYSQL_PASSWORT.’’, ‘’.$MYSQL_DATENBANK.’’);
/Host, Benutzername, Benutzerpasswort, Datenbankname/
if (mysqli_connect_errno()) {
die (‘Konnte keine Verbindung zur Datenbank aufbauen: ‘.mysqli_connect_error().’(’.mysqli_connect_errno().’)’);
}

if(isset($_GET[“id”])) {
$nummer = $_GET[“id”];
$seite = $_GET[“seite”];
if($seite == “”){
$seite = 1;
}
}
else {
echo ‘Es wurde kein Beitrag ausgewählt’;
}

$sql = ‘SELECT
ID,
Titel,
Autor,
DATE_FORMAT(Datum, “%e.%c.%Y”) AS Datum,
SUBSTRING_INDEX(Inhalt, “<–neueseite–>”, "’.$seite.’") AS Inhalt
FROM
Beiträge WHERE ID = "’.$nummer.’"
ORDER BY
Datum DESC’;
// “ORDER BY” damit die Datensätze nach der Datumsspalte sortiert werden, absteigend

$result = $db->query($sql);
if (!$result) {
die ('Konnte den Folgenden Query nicht senden: '.$sql."
\nFehlermeldung: “.$db->error);
}
/if (!$result->num_rows) {
echo ‘

Dieser Beitrag ist nicht vorhanden

’;
}
/
else {
while ($row = $result->fetch_assoc()) {
echo ‘

’.$row[‘Titel’].”

\n";
echo '
von ‘.$row[‘Autor’].’ am '.$row[‘Datum’]."
\n";
echo ‘

’.$row[‘Inhalt’]."

\n";
}
}
?>[/code]

mach das doch so:

$string_aus_db = "hjgdfjkahsgdfhjgsdf .....";
$stringteile = split("<--neue Seite -->",$string);
echo $stringteile[$_GET['seite']-1]; // -1 wegen index ab 0

Vielen Dank, :hail: :hail:
Ich habe das schon den ganzen morgen probiert :ps:

gibt es jetzt noch die möglichkeit zu prüfen, ob die seite existiert??
D.h., wenn ich 3 Seiten habe und man z.B Seite 15 aufruft, dass dann eine Meldung ausgegeben wird, dass die seite nicht vorhanden ist ??
und dann evtl. noch, dass die links zu den anderen verfügbaren seiten angezeigt werden :stuck_out_tongue:

// aufruf von split etc.

if(count($stringteile)+1 < $_GET['seite']){
echo "Sorry, diese Seite existiert nicht!";
}else{
 // ausgabe der seite
}

[quote=“jw-lighting”][code]
// aufruf von split etc.

if(count($stringteile)+1 < $_GET[‘seite’]){
echo “Sorry, diese Seite existiert nicht!”;
}else{
// ausgabe der seite
}
[/code][/quote]

danke das klappt auch, doch wieso muss ich nach if(count($stringteile) noch +1 schreiben?

soory, nimm das mal raus, war ein denkfehler von mir (dachte ich jetzt, wegen index ab 0, count() liefert aber ja die anzahl der elemente, unabhängig vom index :morgen: )

Danke ich habs jetzt hinbekommen.
Hier der Code für alle die das gleiche bzw. ein ähnliches Problem haben:

[code]<?php
require_once(‘include/konstanten.php’);
$db = @new mysqli(’’.$MYSQL_HOSTNAME.’’, ‘’.$MYSQL_BENUTZERNAME.’’, ‘’.$MYSQL_PASSWORT.’’, ‘’.$MYSQL_DATENBANK.’’);
/Host, Benutzername, Benutzerpasswort, Datenbankname/
if (mysqli_connect_errno()) {
die (‘Konnte keine Verbindung zur Datenbank aufbauen: ‘.mysqli_connect_error().’(’.mysqli_connect_errno().’)’);
}

if(isset($_GET[“id”])) {
$id = $_GET[“id”];
$seite = $_GET[“seite”];
if($seite == “”){
$seite = 1;
}
}
else {
echo ‘Es wurde kein Beitrag ausgewählt’;
}

$sql = ‘SELECT
ID,
Titel,
Autor,
DATE_FORMAT(Datum, “%e.%c.%Y”) AS Datum,
Inhalt
FROM
Beiträge WHERE ID = "’.$id.’"
ORDER BY
Datum DESC’;
// “ORDER BY” damit die Datensätze nach der Datumsspalte sortiert werden, absteigend

$result = $db->query($sql);
if (!$result) {
die ('Konnte den Folgenden Query nicht senden: '.$sql."
\nFehlermeldung: “.$db->error);
}
/if (!$result->num_rows) {
echo ‘

Dieser Beitrag ist nicht vorhanden

’;
}
/
else {
while ($row = $result->fetch_assoc())
{
echo ‘

’.$row[‘Titel’].”

\n";
echo '
von ‘.$row[‘Autor’].’ am '.$row[‘Datum’]."
\n";
$seitenteile = split("<–neueseite–>",$row[‘Inhalt’]);//Seite wird bei <–neueseite–> aufgeteilt
if(count($seitenteile) < $seite)
{
echo ‘Sorry, diese Seite existiert nicht!’;
echo 'Seiten dieses Beitrags: ';
}
else
{
echo “”.$seitenteile[$seite -1]."
\n";// -1 wegen index ab 0
		for($a=0; $a < (count($seitenteile)); $a++)
		/*Startvorraussetzung: a=0; Schleife läuft solange, bis $a = $seitenteile; Schleife macht: $a + 1*/ 
		{				
			$b = $a + 1;
			if($seite == $b)
			{
				echo "  <b>$b</b>\n";
			}
			else
			{
				echo "  <a href=\"?page=beitrag&id=$id&seite=$b\">$b</a>\n";
			}
		}
	} 
}

}
?>[/code]

du könntest auch einfach mehrere Datensätze anlegen und dann mit LIMIT $startpos,$einträgeproseite die richtigen Datensätze anzeigen, anstatt alles in einen Eintrag zu zimmern^^

schon mal was von normalisierung gehört?

Damit hast du hinterher nur Stress. Er macht das schon richtig :wink: