Autor |
Beitrag |
Yogu
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Fr 19.12.08 16:48
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
Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Fr 19.12.08 17: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.
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 19.12.08 17:21
SQL-Anweisung 1:
| SELECT SUBSTRING(Feld,1,100) FROM Tabelle |
|
|
Yogu
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Fr 19.12.08 17:48
Danke für die schnellen Antworten!
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.
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
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 19.12.08 17: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
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Fr 19.12.08 18:29
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 19.12.08 18:35
Benutz doch strrpos, das ist bequemer
|
|
Yogu
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Fr 19.12.08 18:46
|
|
Heiko
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Fr 19.12.08 22: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
Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Fr 19.12.08 23:38
Aber wohl auch nur, wenn die Datenbankadresse nicht grad localhost heißt.
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
Yogu
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Fr 19.12.08 23:50
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 20.12.08 00: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
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Sa 20.12.08 00: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!
Auch SQL-Anweisungen gehören zu "sauberem" Programmieren.
|
|