Dynamisk sida - hur fungerar det i praktiken

Permalänk
Medlem

Dynamisk sida - hur fungerar det i praktiken

Läste precis lite om dynamiska sidor och att man hämtar sin info ifrån en databas. Men exakt vad hämtar man och hur fungerar sådana här sidor egentligen? Blev lite nyfiken....

// Calleman

Permalänk
Hedersmedlem

Man använder ett server-side språk som exempelvis PHP, ASP eller JSP för att hämta ut datan.

Visa signatur

Vim
Kinesis Classic Contoured (svart), Svorak (A5)
Medlem i signaturgruppen Vimzealoter.

Permalänk
Medlem

Dynamiska sidor fungerar så att sidan som du kollar på inte finns som en fil, utan den skapas utifrån ett slags program (kallat script), dynamiskt. Vi tar Sweclockers forum som ett exempel.

Vore lite platsödande om alla trådar osv fanns som varsin fil med tanke på att det finns över hundra tusen trådar. Så istället när du besöker sidan så hittar webbservern att det är en PHP-fil som du efterfrågar med lite olika "parametrar" som står i adressfältet. För denna tråd är det "threadid=379468".
PHP-scriptet ser att du vill titta på just denna tråd och skickar i sin tur en förfrågan till en stor databas där alla trådar och inlägg ligger i. Dessa databaser är otroligt snabba på sin uppgift och kan spotta ut alla inlägg i en specifik tråd på några hundradelar. När PHP-scriptet får alla inlägg den vill ha så skriver den ut inlägg för inlägg till din webbläsare.

Kan jämföra det som om du skulle få ett mail med en förfrågan om en lista på alla medlemmar i din förening som bor i Huddinge, då tittar du (PHP-scriptet) i din fina pärm (databasen) och letar upp alla som bor i Huddinge (threadid), skriver in allt i ett mail och skickar tillbaka till den som frågade (webbläsare samt surfare).

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Don_Tomaso
...Kan jämföra det som om du skulle få ett mail med en förfrågan om en lista på alla medlemmar i din förening som bor i Huddinge, då tittar du (PHP-scriptet) i din fina pärm (databasen) och letar upp alla som bor i Huddinge (threadid), skriver in allt i ett mail och skickar tillbaka till den som frågade (webbläsare samt surfare).

Du glömde att allt det ska vara gjort på en tiondelssekund :).

Visa signatur

CTMod Developer (WoW UI Mod)
http://www.CTMod.net

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av cide
Du glömde att allt det ska vara gjort på en tiondelssekund :).

Man får skylla på pärmen inte hade blivit defragmenterad på sistone...

Permalänk
Medlem

Ok, så man kan helt enkelt säga att det är en webbsida som fyller i information ifrån en databas?

Hur ser då ett anrop ut ifrån t ex den här tråden? Är det bara, om man tar php som exempel, en <a href> som skickar med action attribut som visar vilken tråd det är och att man önskar få information om denna tråd och sen få ut en massa rader i en tabell motsvarande antal inlägg i tråden? Är jag på rätt spår?

// Calleman

Permalänk
Medlem

japp!

från sidan där du ser alla trådar (som även de är hämtade dynamiskt) kallad forumdisplay.php så är varje länk en vanlig a href till sidan showthread.php (denna sida) med ett attribut. Sen i den här sidan ligger det ett php-script som tar emot strängen från threadid, öppnar databasen och hämtar alla inlägg som stämmer.

Visa signatur

Är det inte jag, så är det någon annan...
WGS84 Lat/Long: N 60º 23' 28.12" E 15º 40' 14.24"
RT90: X=6697030, Y=1492584

Permalänk
Medlem

Då är jag med, var ju inte speciellt komplicerat. Man lär sig ngt nytt varje dag

Permalänk
Medlem

I terorin är det inte allt för komplicerat nej, men när det gäller t ex forum så ligger inte all information i samma tabell i databasen. Man har kanske en tabell för medlemmar, en för topics och en för poster, så när anropet kommer så körs en SELECT sats mot databasen som knyter samman den information som behövs från de olika delarna av databasen innan allt visas på sidan. När sidan anropas kan det även vara andra saker som behövs göras, man kanske har en funktion som kontrollerar bevakade trådar och ser till att skicka ut ett mail till alla som valt att bevaka tråden. En uppdateringsfråga mot databasen uppdaterar kanske hur många som läst den specifika tråden.

Visa signatur
Permalänk
Medlem

Ja det är klart. Men SQL är ju trots allt ett förhållandevis lätt "språk". Därmed inte sagt att det är enkelt att lära sig allt. Finns mycket att hålla reda på. Var mest nyfiken på vad fenomenet dynamiska sidor var, och det var ungefär som jag kunde gissa.

En följdfråga är egentligen hur ett content management system fungerar. Ligger det då färdiga taggar och propertys som bara väntar på att fyllas i med information?

// Calleman

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Calleman
En följdfråga är egentligen hur ett content management system fungerar. Ligger det då färdiga taggar och propertys som bara väntar på att fyllas i med information?

Ett CMS (skriver bara förkortningen i fortsättningen, blir lite långt annars) är lite luddigt att beskriva, speciellt eftersom det har lite olika betydelse i olika sammanhang.

Dock kan man väl säga något i stil med. Ett CMS är ett verktyg för att hantera data på ett automatiskt sätt som (förhoppningsvis) är effektivare och mer enhetligt än det nativa formatet.

Man kan ju säga till exempel att sweclockers forum är ett CMS. Du kan till exempel skriva in ett inlägg i ett textfält (jätteenkelt, som du säkert listat ut, eftersom du skrivit ett inlägg 8-) ). Dessutom finns det hjälpknappar för att generera lite olika smileys, och du kan få automatiskt formatering av kod med [.code]-taggar (utan punkt) i inlägget med mera. Det finns lite automatiska grejer också, man kan till exempel skriva http://www.sweclockers.com i meddelandet och det blir automatiskt renderat som en länk när inlägget sedan visas.

Efter att jag har postat detta så kommer sedan CMS-systemet automatiskt rita upp en ny inläggslista (baserat på det data som den har lagrat, dvs att jag har gjort ett inlägg till exempel), klickar man på tråden så kommer man se mitt inlägg ihop med de tidigare personernas.

Dessutom med hjälp att innehållsystemet (dvs svenska för CMS) så kan jag till exempel söka på ett enkelt sätt (jag kan lätt hitta alla inlägg från personen foo till exempel).

Aftonbladets sida är också ett utmärkt exempel på några som använder ett CMS-system. När de lägger upp en nyhet i deras system så uppdateras automatiskt den där rutan med senaste nyheter och länkar och bilder hamnar lite här och där på deras sida. Det är ju inte direkt så att de går in och ändrar i tusentals sidor bara för att det kommit en ny nyhet med bild om BigBrother-XYZ:as senaste krogrunda.

Försök till sammanfattning: CMS är ett system för att lagra innehåll på ett någorlunda enhetligt sätt så att man sedan kan på ett enkelt sätt hämta data med vissa givna parametrar.

//C

Permalänk
Citat:

Ursprungligen inskrivet av conio
Försök till sammanfattning: CMS är ett system för att lagra innehåll på ett någorlunda enhetligt sätt så att man sedan kan på ett enkelt sätt hämta data med vissa givna parametrar.

Eller varför inte: Ett CMS är ett system som hanterar innehåll.

Visa signatur

Python-IRC på svenska: #python.se

Permalänk
Medlem

Ja, den förklaringen har jag rätt bra koll på. Men funderar mer på vad som händer i bakgrunden i följande exempel:

Jag har en textruta framför mig och skriver in information i den, kanske kan välja om jag vill ha rubriker, punklistor osv. När jag så att säga publicerar den här information, vad händer då i bakgrunden för att denna sida ska kunna bli en html-sida med valda element? Var och hur läggs dessa taggar till?

Sker det rent kodmässigt, att man tar det man skrivit i textrutan och helt enkelt knåpar ihop ett lång textdokument som sen sparas på servern som något.htm?

// Calleman

Permalänk
Medlem

Jag lovar att du kan få SQL svårt även om grunderna är lätta (som i typ alla språk?). Finns rätt jobbiga frågor man behöver med nästlade frågor, JOINs osv. Egentligen är det väl inte syntaxen som är svår (när man lärt sig grunderna) utan att förstå/känna igen problemet (som så ofta annars) och hur man kan gå till väga. Handlar mkt om erfarenhet alltså.

EDIT:
Som svar på din sista fråga.

"normalfall":
Den absolut grundläggande informationen hämtas från en databas. T ex "Hej".

Om du använde php för att "prata" med databasen så är det med php du "genererar html".

Med de vanliga htmlgrunderna behandlar och presenterar du sedan informationen (utsmyckning av grundinfo från databasen).
Då kan du tex göra så att "Hej" visas i blå färg och speciell font.

Visa signatur
Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Calleman
Ja, den förklaringen har jag rätt bra koll på. Men funderar mer på vad som händer i bakgrunden i följande exempel:

Jag har en textruta framför mig och skriver in information i den, kanske kan välja om jag vill ha rubriker, punklistor osv. När jag så att säga publicerar den här information, vad händer då i bakgrunden för att denna sida ska kunna bli en html-sida med valda element? Var och hur läggs dessa taggar till?

Sker det rent kodmässigt, att man tar det man skrivit i textrutan och helt enkelt knåpar ihop ett lång textdokument som sen sparas på servern som något.htm?

// Calleman

Troligtvis så sparas texten precis som du skriver in den i databasen (inte i en enskild fil). Sedan när tråden ska visas så hittar den ditt inlägg:

[B]Tjock text[/B] och smal text

Då innan den skriver ut det så letar den upp alla [B] och [/B] för att byta ut dem mot <b> och </b> som är HTML-koden för tjock text. Sedan skickas HTML-texten ut till dig som surfare.

Permalänk
Medlem

Don_Tomaso en fråga bara. Är inte det (prestandamässigt) dumt att göra så eftersom servern då måste omvandla tecknen varje gång den visar informationen?
Det måste ju vara resurssnålare att konvertera infon innna man sparar i databasen och eftersom det sarare bli lättare att koda så ser jag ingen anledning till att itne göra det.
Finns det någon?

Visa signatur
Permalänk
Medlem
Citat:

Ursprungligen inskrivet av FLEX
Don_Tomaso en fråga bara. Är inte det (prestandamässigt) dumt att göra så eftersom servern då måste omvandla tecknen varje gång den visar informationen?
Det måste ju vara resurssnålare att konvertera infon innna man sparar i databasen och eftersom det sarare bli lättare att koda så ser jag ingen anledning till att itne göra det.
Finns det någon?

Lättare att koda vet jag inte, måste konverteras någongång i vilket fall som helst. Och när det gäller prestanda är det inte mycket det tar att konvertera detta, den största tyngden ligger i databasen (tror jag).

Sen har folk olika teman valda som ger olika färger på saker och ting, jag är inte säker men det kan hända att vissa saker ser olika ut även i inläggen (som citeringar osv), och det går isåfall inte om det konverteras innan det sparas.

Permalänk
Medlem

ne, har man olika teman så är det nog bra att göra konverteringen efter. Jag tänkte mer på det som en princip sak. Att man försöker ta det snabbaste alternativet om det iaf inte spelar ngn roll. Det var det där med teman då.

Visa signatur