ich habe gerade eine automatisch generierte Liste geschrieben, was Probleme bei Links mit zu langen Zeichen hat.
Meine jetzige Lösung ist:
ul#news {
font-size:11px;
list-style-type:none;
text-align:left;
}
ul#news li {
float:left;
width:48%;
padding:1px 5px;
white-space:nowrap;
overflow:hidden;
}white-space und overflow hidden bewirken, dass die Links auf der linken Seite hinter dem von der rechten verschwinden.
Das sieht komisch aus und deswegen würde ich gerne nach xx Zeichen keinen Zeilenumbruch, wie es viele machen, sondern mit … ersetzen, um zu signalisieren, dass der Link eigentlich länger ist.
Beispiel vorher:
15 - NeuesAlbum - Künstler - Das ist mein aller, wirklich allerneuster Song
Beispiel nachher:
15 - NeuesAlbum - Künstler - Das ist mein aller, wirklich …
Edit:
Im Gegensatz zu PHP wäre es in der SQL-Abfrage viel performanceschonender.
Wie würde das bei dieser Zeile funktionieren?
[PHP]$query = mysql_query(„SELECT * FROM „. $table .“ ORDER BY " . $order . " " . $sort . " LIMIT 20“);
naja, LIMIT 20 liest nur die angegebenen Einträge geht also.
[PHP]substr($zeile[‚titel‘],0,30).„…“;[/PHP]ps
Was da im statement performanter sein sollte ist mir unklar.
@performanter: Da könnte man als Argument etwa den Query Cache anführen, der die Resultsets von Queries vorhält. (Führt mal eine langwierige Query zweimal hintereinander aus und lasst jeweils die Ausführungszeit anzeigen. Das ist ein ziemlich gutes Gefühl. :)) Das ist in diesem Fall aber aus Performancesicht völlig zu vernachlässigen. Aus Sicht des Anwendungsdesigns ist es dagegen wesentlich sinnvoller, das komplette Feld zurückzugeben und in PHP nach Bedarf zu schneiden. Dabei geht es schließlich um eine mehr oder weniger willkürliche Variation der Darstellung, das gehört zur Ausgabe (ins View). Sonst gibt es spätestens dann ein Problem, wenn dieselben Daten an anderer Stelle ohne diese Kürzung dargestellt werden sollen. Dann eine zweite SQL-Query zu schreiben oder einen Parameter zu dieser hinzuzufügen, ist kompliziert und unelegant.
substr kommt von dir selbst und schneidet genauso willkürlich, was macht also PHP: substr - Manual
wenn du anders kürzen möchtest musst du sagen, wie, sprich man braucht ein allgemeines muster.
[PHP]$zeile[‚titel‘][/PHP] enthält halt Strings, die unterschiedlich lang sind.
Da aber mein Content kein Platz hat für Strings, die über 45 Zeichen enthalten, würde ich gerne ab 45 Zeichen lieber „…“ anzeigen lassen.
und wenn dir das nicht gefällt, mein code macht das auch, nur mit 30 zeiche, allerdings nicht im select befehl sondern bei der ausgabe (kann ja nicht wissen, ob du eventuell doch den ganzen string irgendwo brauchst).
du schneidest aber auch willkürlich bei 45 zeichen, dass ist dir klar oder?
Ja, es ging mir eher um die Syntax.
Asterixus’ habe ich nämlich nicht ganz verstanden, was er mir sagen wollte.
Da muss wohl noch eine Fallentscheidung rein, weil ich bei jedem String, egal wie lange, die letzten 4 Zeichen abschneiden möchte.
Aber if länger als 45 Zeichen „…“ anhängen.
Zurzeit ist es halt so, dass egal wie lange, trotzdem „…“ angehängt werden.
SELECT * ist nie gut! Bitte immer die Felder direkt angeben die man braucht.
es gibt auch in mysql funktionen wie SUBSTRING also kannst du die ganze arbeit auch direkt in deinem query erledigen anstadt php mit solchen aufgaben zu belästigen es sei denn natürlich du brauchst den titel auch noch komplett auf der seite
Also wenn ich 20 Felder habe, wovon ich 19 brauche, nehme ich meist dennoch SELECT * FROM :D.
Ansonsten bei Teasern, etc. schreibe ich aus, was ich brauche.