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 |
24.05.2005, 21:18:19
|
Anfänger
|
|
Registriert seit: May 2005
Beiträge: 12
|
|
Zeilenumbruch von dynamischen Texten in einer Tabelle(TD)erzwingen
Hallo
Ich hab ein Problem in PHP und hoffe man kann mir hier weiterhelfen.
Ich bin PHP Neuling, deswegen habt bitte Nachsicht.
Meine Überlegung für einen Zeilenumbruch ist:
Ich habe eine Tabelle mit TD width=300 height=40 oder so.
Da lade ich einen dynam. text aus der DB hinein.
Als nächstes einen Alogrithmus der die Leerzeichen zwischen den Wörtern erkennt
und die Zeile am Leerzeichen vor dem Wort das nicht mehr in die Zeile bis 330
width hineinpasst umbricht .
Mit den Leerzeichen deswegen, da es nicht schön aussieht wenn er Sätze wie
"..Hirsch heiße ich"
zu
".............Hir"
sch heiße ich....."
in der Mitte eines Wortes abschneidet.
Aber ich will nicht nur die Ausdehnung des TD nach rechts verhindern.
Anstatt dass der dyn. Text die Tabelle womöglich nach unten ausdehnt, wollte ich eigentlich auch noch die letzten paar Zeichen (im stabil gebliebenem TD) durch <a href="#.html">...weiterlesen</a> ersetzen.
Nur wie wiederum mach ich dass? Muss ich irgendwie mit Pixeln rechnen
oder die letzten Paar Zeichen die in die letzte Zeile im TD reinpassen
zurückrechnen und dann ersetzten?
Ist meine Überlegung überhaupt richtig?
Ich hoffe ihr könnt mir ein paar Hinweise geben.
Danke
|
25.05.2005, 00:07:58
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: Zeilenumbruch von dynamischen Texten in einer Tabelle(TD)erzwingen
Schau dir mal die Funktion wordwrap() an.
|
25.05.2005, 00:49:45
|
Anfänger
|
|
Registriert seit: May 2005
Beiträge: 12
|
|
AW: Zeilenumbruch von dynamischen Texten in einer Tabelle(TD)erzwingen
hallo xabbuh,
danke für den Tipp!! es klappt.
nur welche maßeinheit ist 20?? pixel oder zeichen scheinen
es ja nicht zu sein.
( $neuertext = wordwrap( $text, 20 ); )
und hast du vielleicht noch einen Tipp für die zweite Problemstellung.
das mit den letzten zeichen im TD durch link ersetzen und sie nicht
das TD nach unten ausdehnen lassen - also TD stabil behalten?
ich nehme nicht an, dass es sich hierbei um nur einen Befehl handelt.
|
25.05.2005, 09:03:11
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 55
Beiträge: 4.748
|
|
Zitat:
Zitat von c.brandau
nur welche maßeinheit ist 20?? pixel oder zeichen scheinen
es ja nicht zu sein.
|
Lies die von xabbuh verlinkte Anleitung, dann weißt Du es.
|
25.05.2005, 20:32:54
|
Anfänger
|
|
Registriert seit: May 2005
Beiträge: 12
|
|
AW: Zeilenumbruch von dynamischen Texten in einer Tabelle(TD)erzwingen
Hallo!
Da stand zwar Zeichen da, aber es klappte nicht bei mir (somit war ich irritiert)
denn....
man hat ja ein Array wenn man die Daten (strings) aus der DB ausliest und mit print($zeile[2]) ausgibt. (zweite Zeile in der DB - daten werden mit schleife geholt)
wenn ich jetzt aber wordwrap so anwende
$text = wordwrap( $zeile[4], 30 );
echo "$text\n";
gehts ja nicht, weil die Variable bzw. Array ja nicht übergeben wird wegen der
falschen syntax wie ich vermute...
weiß jemand wie ich den Inhalt $zeile[4] aus der DB geladen
in eine Variable übergeben kann um diese dann mit wordwrap zu bearbeiten??
und zum zweiten Problem habe ich den Befehl
substr () gefunden um nur eine bestimmte zeichenlänge ausgeben zu lassen
damit das TD nicht ausgedehnt werden kann und mein ganzes design verpfuscht.
aber da ist wieder das problem -> man lässt zB. 100 Zeichen zu
aber der Benutzer gibt
erstes Wort <enter>
zweites Wort <enter>
drittes Wort <enter>
viertes Wort <enter>
füntes wort -> und schon ist das TD nach unten hin ausgedehnt, weil ja nur vier zeilen
reinpassen also bringt mir das substr() mit 100 in diesem Falle gar nichts.
Muss man hier die mögliche Lösung in der letzten Zeile die ins TD reinpasst suchen?
Bitte helft mir.
|
25.05.2005, 20:52:34
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: Zeilenumbruch von dynamischen Texten in einer Tabelle(TD)erzwingen
Vergiss am besten, was du du vorhast. Was machst du denn, wenn der Benutzer den Schriftgrad erhöht, in dem die Seite angezeigt wird? Dann sind alle deine Bemühungen umsonst gewesen.
|
25.05.2005, 21:32:31
|
Senior Member
|
|
Registriert seit: Apr 2003
Alter: 58
Beiträge: 1.236
|
|
AW: Zeilenumbruch von dynamischen Texten in einer Tabelle(TD)erzwingen
...evtl. kannst Du was mit dem Schmierzettel-Schnipsel anfangen.
wordwrap() ist nur ein Teil der Lösung.
PHP-Code:
<?php
function short_text ($text, $anz) {
if (strlen($text) < $anz) {
return $text;
}
$text = wordwrap($text, $anz, "@TMP_MARKER@", 0);
$text = explode("@TMP_MARKER@", $text);
$text = $text[0];
#####################################
$text.= ' <a href="#">weiter...<a>';#
#####################################
return $text;
}
$text = "Wie bekomme ich es hin, das z.B. von einem Text, eingelsen aus der datenbank, die ersten 100 Zeichen ausgegeben werden, ohne das das letzte Wort zerschnitten wird, d.h. am Ende das vollständige Wort steht? Im Endeffekt nicht 100 Zeichen ausgegeben werden wollten, sondern je nach Wort am Ende, mal 91, 97, 95.
Bisherige Lösung:";
$anz = 100;
echo $text;
echo '<br><br>';
echo '<span style="width: 210px; height: 80px; overflow: auto; background-color: #CC9900;">';
echo short_text($text, $anz);
echo '</span>';
#######################################
echo '<hr>';
$arr = str_word_count($text, 1);
echo '<pre>';
print_r($arr);
echo '</pre>';
?>
Grüße
|
25.05.2005, 21:44:20
|
Anfänger
|
|
Registriert seit: May 2005
Beiträge: 12
|
|
AW: Zeilenumbruch von dynamischen Texten in einer Tabelle(TD)erzwingen
wenn er denn schriftgrad erhöht (du meinst wohl im Browser mit STRG und +)
dann ist er selber schuld, denn der inhalt steht in einem div mit overflow:hidden. Denn Schriftgrad erhöhen gehört sich nicht ;-)
und natürlich xabbuh, am einfachsten ist es immer gleich alles hinzuschmeißen
aber wenn ich es so haben will, dann find ich auch einen optimalen Weg.
oder wenigstens eine Kompromiss...
und wenn mir niemand aus gutem Willen hilf, dann dauert es halt ein bißchen länger.
|
25.05.2005, 21:47:34
|
Anfänger
|
|
Registriert seit: May 2005
Beiträge: 12
|
|
AW: Zeilenumbruch von dynamischen Texten in einer Tabelle(TD)erzwingen
Oh, danke für den Anstoß und deine Mühe Chris17!!
Werd es gleich versuchen!
|
25.05.2005, 23:20:59
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: Zeilenumbruch von dynamischen Texten in einer Tabelle(TD)erzwingen
Zitat:
Zitat von c.brandau
dann ist er selber schuld, denn der inhalt steht in einem div mit overflow:hidden. Denn Schriftgrad erhöhen gehört sich nicht ;-)
|
Wäre ja auch dumm, wenn sehbehinderte sich deine Seite vernünftig ansehen könnten.
Zitat:
Zitat von c.brandau
und natürlich xabbuh, am einfachsten ist es immer gleich alles hinzuschmeißen
aber wenn ich es so haben will, dann find ich auch einen optimalen Weg.
|
Von Hinschmeißen soll hier überhaupt nicht die Rede sein. Ich wollte dir nur aufzeigen, dass du dir mit deiner Idee mehr Probleme einhandelst, als das sie dir irgendetwas nützt.
|
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 05:21:53 Uhr.
|