Die ersten 20 Wörter ausgeben

  • Themenstarter Themenstarter noctaru
  • Beginndatum Beginndatum
N

noctaru

Also ich habe Texte in einer Dattenbank. Nun möchte ich auf einer Seite eine Vorschau erstellen. Jedoch sollen nur die ersten 20 Wörter ausgegeben werden und dann ein "..." angehängt werden. Sobald auf den Link geklickt wird, soll der ganze Text ausgegeben werden. Dies geht warscheinlich am besten über die URL.

Die Frage ist nun, wie stelle ich es am besten an, dass...

1. ...nur die 20 Wörter ausgegeben werden.
2. ...bei einem Klick der ganze Text ausgegeben wird.

Für das ganze darf nur eine Datei verwendet werden.
 
Die Abfrage dafür ist einfach:
Code:
SELECT
        CONCAT(SUBSTRING_INDEX(`spalte`, ' ', 20), ' …') AS `auszug`
  FROM
        `tabelle`
 
Mh.. irgendwie bekomme ich des jetzt nicht so ganz hin.
Also ich habe in der DB die Spalte: id, name, topic, sortid, amendment.
Die Ausgabe soll mit der "sortid" sortiert werden.
Ausgegeben werden die dann in einer "while"schleife.

PHP:
while($row = mysql_fetch_object($erg)){
$id = $row->id;
$name = $row->name;
$text = $row->topic;
$sortid = $row->sortid;
....

Aber wie muss jetzt der querry lauten, dass die anderen auch mit ausgegeben werden?

PS:. die db heißt "site".
 
Jetzt dachte ich schon ich hätte es geschaft, da fällt mir auf, dass "..." auch bei den Datensätzen kommt, wo weniger wie 20 Wörter sind. Wie schaffe ich es, dass diese Datensätze ohne "..." ausgegeben werden?
 
Zuletzt bearbeitet von einem Moderator:
In dem Fall müsstest du vorher die Anzahl der Wörter zählen:
Code:
SELECT
        IF( REPLACE(`amendment`, ' ', ' ') > 20,
          CONCAT(SUBSTRING_INDEX(`spalte`, ' ', 20), ' …'),
          `amendment`
        ) AS `auszug`
  FROM
        `sites`
 
Ich hab des jetzt mal angepasst, funktioniert aber irgendwie nicht.
Es wird irgendwie alles ausgegeben. Wo ist der Fehler?

PHP:
$query = "SELECT
        IF( REPLACE(`topic`, ' ', ' ') > 20,
          CONCAT(SUBSTRING_INDEX(`topic`, ' ', 20), ' …'),
          `topic`
        )  AS `topic`, `id`, `name`, `sortid`  FROM `site`";
 
Zurück