SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



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



:: Buchempfehlung ::

Webseiten professionell erstellen

Webseiten professionell erstellen zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP für Fortgeschrittene und Experten

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 12.06.2003, 14:47:59
habnefrage habnefrage ist offline
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!
Mit Zitat antworten
  #2  
Alt 12.06.2003, 14:53:55
c4 c4 ist offline
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.
__________________
sic!
--> http://dbCF.de/

Geändert von ­c­4­ (12.06.2003 um 14:56:54 Uhr)
Mit Zitat antworten
  #3  
Alt 12.06.2003, 15:19:12
habnefrage habnefrage ist offline
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..."
Mit Zitat antworten
  #4  
Alt 12.06.2003, 16:42:05
MiH MiH ist offline
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;
Mit Zitat antworten
  #5  
Alt 12.06.2003, 16:49:42
c4 c4 ist offline
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.
__________________
sic!
--> http://dbCF.de/
Mit Zitat antworten
  #6  
Alt 20.06.2003, 11:30:38
habnefrage habnefrage ist offline
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!
Mit Zitat antworten
  #7  
Alt 20.06.2003, 11:35:29
c4 c4 ist offline
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.
__________________
sic!
--> http://dbCF.de/
Mit Zitat antworten
  #8  
Alt 20.06.2003, 11:47:02
habnefrage habnefrage ist offline
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 . ' (...)'; }
Mit Zitat antworten
  #9  
Alt 20.06.2003, 11:50:38
c4 c4 ist offline
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.
__________________
sic!
--> http://dbCF.de/
Mit Zitat antworten
  #10  
Alt 20.06.2003, 12:00:13
habnefrage habnefrage ist offline
Anfänger
 
Registriert seit: Jun 2003
Beiträge: 9
$column ist ein Feld... Wo bau ich denn dann das count() ein?

Danke!
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:12:10 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt