Entwickler-Ecke
Sonstiges (Web-Entwicklung) - MySQL: Erste 100 Zeichen aus Feld
Yogu - Fr 19.12.08 15:48
Titel: MySQL: Erste 100 Zeichen aus Feld
Hallo,
ich möchte für eine News-Übersicht die ersten sagen wir mal 100 Zeichen des Beitrags anzeigen. Das sieht man ja öfters mal, dadurch wird Interesse geweckt.
Meine Frage nun: Muss ich trotzdem den gesamten Wert der Spalte anfordern? Oder gibt es eine spezielle Query, die mir die ersten 100 Zeichen der Spalte liefert? Das würde doch sehr viel Traffic zur Datenbank sparen.
Danke für eure Antworten!
Grüße,
Yogu
GTA-Place - Fr 19.12.08 16:03
So wie ich das mal verstanden habe, hast du keinerlei Traffic, da PHP ja serverseitig interpretiert wird und auch die Datenbank auf dem Server läuft. Es ist also nur eine interne Serverkommunikation und damit kein Traffic. Oder wie war das? Aber vermutlich wäre es trotzdem besser, das Query deinen Wünschen anzupassen.
Delete - Fr 19.12.08 16:21
SQL-Anweisung
1:
| SELECT SUBSTRING(Feld,1,100) FROM Tabelle |
Yogu - Fr 19.12.08 16:48
Danke für die schnellen Antworten! :D
Sorry, dass meine Antwort so lange auf sich warten lies, aber ich wollte sicher gehen, dass auch alles funktioniert.
GTA-Place hat folgendes geschrieben : |
So wie ich das mal verstanden habe, hast du keinerlei Traffic, da PHP ja serverseitig interpretiert wird und auch die Datenbank auf dem Server läuft. Es ist also nur eine interne Serverkommunikation und damit kein Traffic. |
Da kommt es jetzt darauf an, was man unter
Traffic versteht. Ich meine damit auch die lokale Kommunikation über Port 443 (der war's doch, oder?) zwischen PHP und MySQL. Auf jeden Fall wird auch Speicher verbraucht. Ich weiß ja nicht, wie lange Beiträge die Newsposter verfassen, aber sicher ist sicher. :)
DeddyH hat folgendes geschrieben : |
SQL-Anweisung 1:
| SELECT SUBSTRING(Feld,1,100) FROM Tabelle | |
Danke! Das ist genau das, was ich suche. :D
Ich hab das jetzt so gelöst:
Die Query sieht so aus:
SQL-Anweisung
1:
| SELECT news_id, news_title, news_time, SUBSTRING(news_text,1,100) AS news_text_snip, LENGTH(news_text) AS news_text_length, poster_id FROM news ORDER BY news_time DESC |
(gekürzt)
Da ich auch die eigentliche Länge des Feldes abfrage (
news_text_length), kann ich dann mit PHP drei Punkte (...) hinzufügen, falls die gebraucht werden:
PHP-Quelltext:
1: 2: 3: 4:
| if ($row['news_text_length'] > VIEW_news_text_snip_length) $news_text_snip = $row['news_text_snip'] . "..."; else $news_text_snip = $row['news_text_snip']; |
Das nur für weitere Leser. :)
Grüße,
Yogu
Delete - Fr 19.12.08 16:51
Du könntest auch noch das letzte Leerzeichen ermitteln, den String dort abschneiden und die 3 Punkte setzen, damit Du nicht mitten im Wort abbrichst.
Yogu - Fr 19.12.08 17:29
DeddyH hat folgendes geschrieben : |
Du könntest auch noch das letzte Leerzeichen ermitteln, den String dort abschneiden und die 3 Punkte setzen, damit Du nicht mitten im Wort abbrichst. |
Gute Idee!
:zustimm:
Ich hab mir folgende Funktion zusammengebastelt:
PHP-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| function cutStringAfterWord($string, $reallen, $maxlen) { if ($reallen > $maxlen) for ($i = strlen($string); $i >= 0; $i--) { if ($string[$i] == " ") { return substr($string, 0, $i)."..."; } } else return $string; } |
Yogu - Fr 19.12.08 17:46
Ach, das gibt's auch rückwärts :autsch:
Ok, danke, ich hab's implementiert.
Heiko - Fr 19.12.08 21:49
GTA-Place hat folgendes geschrieben : |
So wie ich das mal verstanden habe, hast du keinerlei Traffic, da PHP ja serverseitig interpretiert wird und auch die Datenbank auf dem Server läuft. Es ist also nur eine interne Serverkommunikation und damit kein Traffic. Oder wie war das? Aber vermutlich wäre es trotzdem besser, das Query deinen Wünschen anzupassen. |
Stimmt nicht. Bei vielen Hostern laufen die Datenbankserver getrennt von den MySQL-Servern. An der Stelle wird es dann schon wichtig, wie groß der Datenfluss ist...
GTA-Place - Fr 19.12.08 22:38
Aber wohl auch nur, wenn die Datenbankadresse nicht grad localhost heißt.
Delete - Fr 19.12.08 23:03
Ist doch auch piepegal, IMHO sollte man jede Datenbankabfrage auf das Nötigste beschränken (bei "SELECT * FROM" in Produktivumgebungen bekomme ich immer Arkl-Anfälle).
Yogu - Fr 19.12.08 23:38
DeddyH hat folgendes geschrieben : |
Ist doch auch piepegal, IMHO sollte man jede Datenbankabfrage auf das Nötigste beschränken. |
Da bin ich ganz deiner Meinung! :zustimm:
Auch SQL-Anweisungen gehören zu "sauberem" Programmieren.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!