ugrás a tartalomhoz

Title-be adatbázisból egy cikk címe

Marcell · 2006. Jún. 17. (Szo), 15.38
Adott egy probléma: hogyan lehet azt megoldani, hogy egy cikk címét beleírjam a <title>-be?
a) már előtte belenézek az adatbázisba és kiszedem a címet
b) kimenet bufferelése és ha megvan a cím, rögtön eresztés

Melyik a jobb? Bufferelni, ha nem muszáj nem akarok, mert csak korlátozza a júzert, viszont a <title> kiiratása előtt még nem akarok azzal foglalkozni, hogy mi is lesz a tartalom... hiszen a tartalomig fix elemek vannak (fejléc, menü, bannerek stb) és csak a középső hasáb = tartalom helyére szoktam include-al behívni az adott modult.

Én eddig a buffert választottam, de kiváncsi lennék, hogy mi a jobban elfogadott megoldás!
 
1

a buffer miert is korlatozza a usert?

Anonymous · 2006. Jún. 17. (Szo), 16.27
?
5

kimenet késik

Marcell · 2006. Jún. 18. (V), 17.09
Itt arra gondoltam, hogy késik a kimenet és nem tud betöltés közben olvasni - tudom gyér indok, de ha elkerülhető, akkor miért ne kerüljem ki?
7

XHTML?

Dualon · 2006. Jún. 18. (V), 18.05
Akkor XHTML-t sem használsz?
8

de

Marcell · 2006. Jún. 18. (V), 18.08
Miért ne használnék XHTML-t? Természetesen abban van az oldal.
- kimenet = kiírás
- olvasás = felhasználó böngészi az oldalt

Ezek voltak megtévesztőek?
9

Sarkítottam

Dualon · 2006. Jún. 18. (V), 18.58
"késik a kimenet és nem tud betöltés közben olvasni"

Erre írtam válaszul, ugyanis XHTML esetén sem olvashatja addig a user pl. Firefoxban az oldalt, míg az egész lapszerkezet (nem a kapcsolódó képek, css, stb.!) le nem jött. Ez szélsőséges körülmények között (lassú/letöltésektől erősen terhelt net, góliát dokumentumok, stb.) előjöhet.

És pontosan a szélsőségesség miatt volt benne némi irónia is: ritkának látom az olyan helyzeteket, mikor a böngészgető felhasználót bármiben is korlátozza a kimenetpufferelés.
11

ez biztos?

Marcell · 2006. Jún. 19. (H), 21.53
Én úgy vélem, hogy ez így nem teljesen fedi a valóságot. Idéznék a táblázat nélküli css cikkből:
A táblázatokat csak akkor tudják a böngészők helyesen megjeleníteni ha már beolvasták a </table> jelet. Addig meg nem.
Magyarán már akkor is megjelenítették, amikor még nem olvasta be a böngésző a záró tagot.

Pár gyakorlati eset: én a az swf.hu-nál érzékelem nagyon sokszor, hogy nagyon lassan szenvedi össze a táblázatokat (boccs a rekléámért)..

Amúgy pedig a saját lapjaimnál is sokszor látom viszont, hogy a portál jobb széle csak később jön meg - persze ha éppen terhelt a vonal, megosztott internetnél ez gyakori probléma.

Ezek is elég sarkított dolgok, nyilván nem táblázatos oldalfelépítésben és 0.5Kb/s-ben kell gondolkodni, de most készülget egy nagyobb volumenü oldal és szeretnék felkészülni az esetleges rohamokra is.
12

próbáld ki, ha nem hiszed

Dualon · 2006. Jún. 19. (H), 22.54
Firefox-nak ideális esetben ugye application/xhtml+xml-ként szolgálod ki az XHTML dokumentumod. Próbáld ki, mi történik.
15

3.0

janoszen · 2007. Jún. 16. (Szo), 21.45
A 3.0-ban ki fogják javítani elvileg.
2

fogalmam nincs, hogy csinálják a profik...

Anonymous · 2006. Jún. 17. (Szo), 16.31
...de én azt a megoldást választottam, hogy még mielőtt bármit kiküldenék, legenerálok minden tartalmat, és utána azokat teszem ki. vhogy így:

$title = '...';
$banner = '...';
$tartalom = '...';

...

echo '
  <html>
    <title>
      ' . $title . '
    </title>
    <body>
      ... layout ...
      ' . $banner . '
      ... layout ...
      ' . $tartalom . '
      ... layout ...
    </body>
  </html>
';

6

ugyanaz mint a buffer

Marcell · 2006. Jún. 18. (V), 17.38
Tehát: adott egy 150 tételes adatbázis listázás. A te módszereddel ugyanúgy egy változóba iratom őket, majd a végén kiiratom a változót egy echo-val a HTML közepén. Amíg folyik az adatbázislekérés, ugyanúgy nem lát eredményt a júzer csak a végén.

Ez a megoldás ugyanaz, mint a bufferelés, csak házilag megoldva. Talán még rosszabb is, mert sima print() helyett egy változóba iratom a tartalmat, amivel áttekinthetetlenebb lesz a tartalom.
10

Ez a sablon rendszer alapja

Jano · 2006. Jún. 18. (V), 19.58
1) Ha az az echo rész egy külön fájl lenne valójában ahol a $title helyett mondjuk egy {title} vagy ##title## jelölés lenne
2) előtte egy asszociatív tömbbe gyüjtenéd $lap['title'] = ""; a dolgokat
3) Beolvasnád a fájlt és az asszociítív tömb kulcsai szerint kicserélnéd az értékekre a jelölőket

akkor máris okos sablon kezelésed van.
3

pl. $TITLE változó, kimenetpufferelés, sablonrendszer

Dualon · 2006. Jún. 17. (Szo), 16.36
Gondold végig, mit tehetsz!
1. A title-t "késlelteted", vagy
2. a HTML headet "hozod előrébb".

Az 1. azt jelenti, hogy valamiképp tárolod a cikk részleteinek lekérésétől számítva a title-ig a cikk címét (felesleges csak a címéért még egy lekérést csinálni); erre logikusan a legegyszerűbb egy változó, de lehet bonyolítani kimenetpuffereléssel is (csak ezért teljesen felesleges), vagy ezt szimuláló "kimenetgyűjtő változóval" (egy változóba rakosgatsz mindent, amit majd a végén echo-zol).

A 2. esetében már akkor felépíted a HEAD-et, mielőtt tényleges kimenet lenne - ez jellemzően a sablonrendszerek egyik előnye.

Érdemesebb az utóbbit használni, előnyeiről máshol írtam két cikket. (Az anyagokat azért is ajánlanám, mert kifejezetten bevezető jellegűek.)
4

Template rendszerek

tlof · 2006. Jún. 17. (Szo), 19.38
Erre a célra ajánlamán a template rendszerek használatát.

Ott mire kiadod a display() elemet addigra minden adatot össze _KELL_ gyüjtened, és átadni a template rendszernek.

Igaz a php magában is egy remek template rendszer, de egy plussz réteg segít fegyelmet tartani a kódban.
13

js???

monghuz · 2007. Jún. 16. (Szo), 20.32
Még egy régebbi weblapomnál nekem is kellett ezzel szenvedni, mivel nem volt túl bonyolult én is a lefutnak az adatbázis kérések, adatrendezések után kiirom egy változóba aztán be a HTML-be.

De most az AJAXos korszakban nincs valami JS-es megoldás erre, amivel akár a teljes oldal megjelenése esetén bekövetkező javascript függvény átírnál a <title> tartalmát??

bye Tomi
14

JS és hozzáférhetőség

Marcell · 2007. Jún. 16. (Szo), 21.42
(kicsit zavarosan írtál, de megpróbálok válaszolni rá:) Amit a JS ír át, azt például a Google nem látja, úgyh én nem erre alapoznék. Kisegítő lehetőségként viszont használhatod a document.title változtatását: http://developer.mozilla.org/en/docs/DOM:document.title