CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken |
12.06.2003, 14:47:59
|
Anfänger
|
|
Registriert seit: Jun 2003
Beiträge: 9
|
|
Ergebnis abschneiden
Hallo,
ich habe in meiner Datenbank ein relativ großes Textfeld. Wenn ich das jetzt in meiner Tabelle auslese, wird die Spalte teilweise riesig. Ich hab in das Select-Statement jetzt ein SUBSTRING_INDEX(Spaltenname, " ", 10), so dass also nur die ersten 10 Wörter wiedergegeben werden. Wie kann ich jetzt in PHP eine Ellipse (...) generieren, wenn der Text in dem Feld mehr als 10 Wörter hat??
Vielen Dank!
|
12.06.2003, 14:53:55
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
habneantwort
Man kann davon ausgehen, dass alle Felder mehr als 10 Worte haben? Dann einfach noch CONCAT in die Abfrage einbauen.
mysql.com ist irgendwie nicht erreichbar, sonst würde ich Dir es noch genauer sagen...
Irgendwelche Bedingungs-Konstrukte sind mit mySQL nicht möglich, da müsstest Du schon mit PHP rangehen.
Du könntest z.B. die ersten 11 Worte auslesen und dann in PHP ermitteln, ob es 11 sind oder nicht (sprich: weniger) Wenn 11 oder mehr, dann den Anhang, sonst einfach nix.
Geändert von c4 (12.06.2003 um 14:56:54 Uhr)
|
12.06.2003, 15:19:12
|
Anfänger
|
|
Registriert seit: Jun 2003
Beiträge: 9
|
|
Danke für die schnelle Antwort!
Das Problem ist , dass einige Felder dann weniger als 10 Wörter haben. Wie kann ich denn mittels Php dann feststellen, ob es mehr als 10 Wörter sind? Im Moment ist es so, dass bei jedem Feld der Text nach 10 Wörtern abgeschnitten wird, ich würde aber gern anzeigen, dass es noch mehr Text gibt.
In etwa so:
Col1
------
Dies ist nur ein Beispiel um zu verdeutlichen wovon ich spreche, damit es klarer wird. Blablabla.
select substring_index(col1, " ", 10) from tbl_name;
Ergebnis:
"Dies ist nur ein Beispiel um zu verdeutlichen wovon ich..."
|
12.06.2003, 16:42:05
|
Member
|
|
Registriert seit: Aug 2002
Beiträge: 775
|
|
warum wörter nehm doch einfach die ersten xxx zeichen und mach dann einen "mehr" link.
das kannst du mit php realisieren:
Code:
$txt = (strlen($row["text"])>=100) ? sprintf("<a href="more.php?id=%s">%s ...</a>",$row["id"],substr($row["text"],0,100)) : $row["text"];
echo $txt;
|
12.06.2003, 16:49:42
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
Na sagen wir mal, der Text hat 20 Wörter.
Du lässt Dir aber nur maximal 11 Wörter auslesen.
In PHP prüfst Du dann, ob es 11 sind. Wenn ja, dann die Punkte dranhängen. Wenn nicht, dann nix.
Wenn der Text bloß 7 Wörter hat, werden natürlich auch nur 7 ausgelesen und es wird nix angehangen.
|
20.06.2003, 11:30:38
|
Anfänger
|
|
Registriert seit: Jun 2003
Beiträge: 9
|
|
Hallo nochmals,
vielen Dank für den Tip, bin schon eine Ecke weiter. Ein Problem hab ich allerdings noch...
mit strlen wird ja nur die Länge des Strings ausgelesen, d.h. ich hab jetzt if(strlen($column) >= 20) verwendet, aber dass liest insgesamt 10 Zeichen, nicht Wörter aus.. Was muss ich denn verwenden, um nach 10 Wörtern abzuschneiden?
Danke!
|
20.06.2003, 11:35:29
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
Du könntest in einer Schleife Zeichen für Zeichen überprüfen, ob es sich um ein Leerzeichen handelt und nach 10 Stück einfach aufhören und alles vor dieser Position in einem String speichern.
Oder Du splittest die Zeichenkette mit explode(' ', $var) an den Leerzeichen und fügst die ersten 10 Felder des entstandenen Arrays zu einer Zeichenkette zusammen.
|
20.06.2003, 11:47:02
|
Anfänger
|
|
Registriert seit: Jun 2003
Beiträge: 9
|
|
jetzt bekomme ich folgende Fehlermeldung:
Notice: array to string conversion in...
ich verwende:
$string_details=explode(' ', $column);
...
if(strlen($string_details) >= 10)
{echo $column . ' (...)'; }
|
20.06.2003, 11:50:38
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
$column ist ein String, richtig?
strlen() gibt Dir die Länge eines Strings zurück, explode() gibt Dir aber ein Array zurück - PHP weiß nun nicht so ganz, was Du willst. count() zählt die Anzahl Felder.
|
20.06.2003, 12:00:13
|
Anfänger
|
|
Registriert seit: Jun 2003
Beiträge: 9
|
|
$column ist ein Feld... Wo bau ich denn dann das count() ein?
Danke!
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 16:12:10 Uhr.
|