/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Inkludere indhold eller database
Fra : Mr. Smith


Dato : 20-01-06 23:42

Hvor går skellet mellem at inkludere indhold via include eller gå over
til en mySQL database?

Jeg har tidligere brugt include, da jeg kun har minimalt kendskab til
databaser. Jeg overvejer dog om jeg skal tage springet til et database
drevet website, men er der forhold som taler for/imod at bruge include i
forhold til en database - eller omvendt?

Håber det er forståeligt..

//smith

 
 
Jesper H (21-01-2006)
Kommentar
Fra : Jesper H


Dato : 21-01-06 00:26

Hej Smith

Der er forskellige fordele og ulemper ved hvert valg. Her er nogle af
dem:

1. Ved at lægge indholdet i en database undgår du fil-navnesammenfald
på serveren. Det kan være fordelagtigt hvis der tit kommer nye filer
med indhold og sådan. I en database skelner man indholdet vha. f.eks.
et ID, som databasen automatisk kan nummerere.
2. Jeg er ikke sikker på denne påstand, men muligvis kan det være en
smule hurtigere for serveren at bruge include (hvor den skal slå op i
et filsystem) i stedet for en database med en masse posteringer som den
skal søge imellem. Det kommer dog meget an på den database-struktur
man vælger.
3. I en database kan man tilføje felter til at kategorisere indholdet.
Det kan være en fordel hvis en bruger ønsker at få en oversigt over
alt indholdet i en bestemt kategori. Dette kan i princippet også lade
sig gøre ved filer, men det kræver at du konstruerer et system til
det selv.
4. I en database skal man vist definere hvor store de enkelte felter
maksimalt bliver, dvs. man skal helst have en idé om det på forhånd.
Sådan er det jo ikke for en fil, selvom den alt efter filsystemet godt
kan have en maksimal størrelse.

Det var hvad jeg lige kunne komme i tanke om. Hvad der er det bedste
valg kommer vist mest an på hvad indholdet består af, og hvad
forholdet er mellem hvor tit der redigeres indhold mod hvor tit
indholdet skal vises.

--
Mvh Jeper, http://fdf.dk/landsdel1/


Mr. Smith (21-01-2006)
Kommentar
Fra : Mr. Smith


Dato : 21-01-06 15:40

Jesper H wrote:
> Hej Smith
>
> Der er forskellige fordele og ulemper ved hvert valg. Her er nogle af
> dem:
> [en masse klippet væk]

- Tak for dit uddybende svar!

Jeg tror ikke at det kan "betale" sig for mig, at begynde at rode med en
database til det projekt jeg har gang i. Det vil vist være rigeligt at
inkludere indholdet.

//smith

Bertel Lund Hansen (21-01-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 21-01-06 14:53

Mr. Smith skrev:

> Hvor går skellet mellem at inkludere indhold via include eller gå over
> til en mySQL database?

Jeg mener ikke at man skal vælge mellem include og
databasestyring selv om der er nogle ting der kan laves på begge
måder.

Man skal bruge include til at organisere sin kode så den bliver
overskuelig.

Man skal bruge en database hvis man har data som bedst styres i
en database. Det er en forklaring der bider sig selv i halen, men
jeg kan ikke komme det nærmere.

Fidusos sider er lavet med en styrefil (index.php) som genererer
en menu og inkluderer et indhold. Derved kan jeg få samme menu på
alle sider selv om den kun står ét sted i koden. Det gør det nemt
at ændre menuen på hele sitet, og det gør det nemt at tilføje nye
sider: Der skal blot laves en indholdsfil samt tilføjes én linje
i index.php.

Fidusos medlemmer med deres oplysninger burde indføjes i en
database. Det har jeg ikke fået lavet, men har en langsigtet plan
om at få det gjort. Den slags oplysninger som jeg registrerer om
medlemmerne, styres bedst af en database.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Mr. Smith (21-01-2006)
Kommentar
Fra : Mr. Smith


Dato : 21-01-06 15:43

Bertel Lund Hansen wrote:
> Mr. Smith skrev:
>
>
>>Hvor går skellet mellem at inkludere indhold via include eller gå over
>>til en mySQL database?
>
>
> Jeg mener ikke at man skal vælge mellem include og
> databasestyring selv om der er nogle ting der kan laves på begge
> måder.
>
> Man skal bruge include til at organisere sin kode så den bliver
> overskuelig.

- Selve dit indhold bliver da også indsat via include, ik!?

I denne artikel:
http://www.alistapart.com/articles/phpcms
bruger de require_once istedet for include, så det er vel også en mulighed?

//smith

Bertel Lund Hansen (21-01-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 21-01-06 18:52

Mr. Smith skrev:

>> Man skal bruge include til at organisere sin kode så den bliver
>> overskuelig.

> - Selve dit indhold bliver da også indsat via include, ik!?

Det forstår jeg ikke.

Man kan lave sider helt uden at bruge include.

På Fidusos sider bliver 'rammen' lavet uden include. Indholdet
deri indsættes via include.

> bruger de require_once istedet for include, så det er vel også en mulighed?

På Fidusos sider ville det ikke gøre nogen forskel. Jeg kunne
bruge include, include_once, require og require_once med samme
effekt. Hvis du ikke kender forskel på dem, så brug include. Du
kan læse om de fire muligheder (på engelsk) vedat slå dem op her:

http://www.php.net/manual/en/

Kort fortalt:
Man bruger noget med _once hvis der er risiko for at man kommer
til at inkludere det samme flere gange.

Men jeg får på fornemmelsen at du ikke ved hvad en database er?
En database indsætter ikke noget som helst på en PHP-side. Den er
helt uafhængig af PHP og kan tilgås med et hav af forskellige
programmeringssprog.

Hvis man skal bruge en database sammen med PHP, så laver man en
PHP-kommando der trækker oplysningerne over i nogle PHP-variable,
og bagefter kan man så skrive dem ud som en del af
hjemmesidekoden (og modsat hvis man skal ændre i databasen).

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Mr. Smith (21-01-2006)
Kommentar
Fra : Mr. Smith


Dato : 21-01-06 20:57

Bertel Lund Hansen wrote:
> Man kan lave sider helt uden at bruge include.
Det er jeg godt klar over, men det jeg ønsker er at lave en side der
fungerer som en skabelon for "alle" siderne. Her har jeg så i sinde at
bruge include til at indsætte sidernes reelle indhold, alt efter hvad
der er for en side som skal vises (det finder jeg så ud af gennem url'en
jo).

> På Fidusos sider bliver 'rammen' lavet uden include. Indholdet
> deri indsættes via include.
Jep, det er også det jeg mener.

>>bruger de require_once istedet for include, så det er vel også en mulighed?
> På Fidusos sider ville det ikke gøre nogen forskel. Jeg kunne
> bruge include, include_once, require og require_once med samme
> effekt. Hvis du ikke kender forskel på dem, så brug include. Du
> kan læse om de fire muligheder (på engelsk) vedat slå dem op her:
> http://www.php.net/manual/en/
Jeg skal i hvert fald have læst op på require.

> Men jeg får på fornemmelsen at du ikke ved hvad en database er?
Jeg har en smule kendskab til ASP, hvor jeg også har arbejdet lidt med
databaser i den forbindelse (lang tid siden). Nu har jeg dog valgt at
lære PHP istedet. Jeg tænkte så på om det var en fordel at lave et
databasekald til at indsætte indholdet (ikke navigation, footer, osv.),
fremfor at lave en switch (hedder det vist nok).

Du skal have tak for din tålmodighed!

//smith

Bertel Lund Hansen (21-01-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 21-01-06 22:39

Mr. Smith skrev:

> lære PHP istedet. Jeg tænkte så på om det var en fordel at lave
> et databasekald til at indsætte indholdet (ikke navigation,
> footer, osv.), fremfor at lave en switch (hedder det vist
> nok).

Du sidestiller igen noget der ikke har en snus med hinanden at
gøre. Man kan godt bruge en switch, men det er inderligt
ligegyldigt om man gør det sammen med databasekald eller ej.

Glem databaser indtil videre. Det du ønsker, laves fint med
include.

> Du skal have tak for din tålmodighed!

Jeg har jo selv trukket på andres hjælp.

Her er den kode jeg bruger til at styre Fidusos sider - barberet
så den er lidt mere overskuelig. Jeg har bevaret enkelte div'er,
men al stylingen er væk fordi jeg ikke har medtaget CSS-filen,
og derfor er designet kedeligt. CSS-filen er kompliceret, og du
skal jo selv lave din egen styling.

Her kan du se hvordan det virker:
   http://www.lundhansen.dk/temp/test.php

og her er koden:

<?
   // Tomme linjer fås ved at lade titlen slutte med mellemrum.
   $sider = array (
      'index' => 'Forside',
      'skraekeksempler' => 'Skrækeksempler',
      'eksterne' => 'Eksterne links', //
   );
   $code='index';   $title=$sider[$code];
   $order=$_GET['page'];
   if (isset($sider[$order])) { $code=$order; $title=$sider[$order]; }
   $content=$code.'.inc';
   $dato=date('j/n-Y.',filemtime($content));
?>
<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01//EN' ''>http://www.w3.org/TR/html4/strict.dtd'>

<html>
<head>
<? echo "<title>Fiduso: $title</title>\r\n" ?>
<meta http-equiv='Content-Type' content='text/html; charset=ISO-8859-1'>
<link rel='stylesheet' type='text/css' href='fiduso.css'>
</head>

<body>

<div class='indholdsramme'>

<?
   // Menu
   echo " <div class='menu'>\r\n";
   foreach($sider as $key => $entry) {
      if ($code==$key) echo "&nbsp;$entry&nbsp;<br>\r\n";
      else echo "<a href='?page=$key'>&nbsp;$entry&nbsp;</a><br>\r\n";
      if (substr($entry,-1)==' ') echo "&nbsp;<br>\r\n";
   };
   echo " &nbsp;<br>\r\n</div> <!-- end class 'menu' -->\r\n";

   echo " <div class='indhold'>\r\n";

   // Indhold
include $content;
?>

</div> <!-- end class 'indhold' -->
</div> <!-- end class 'indholdsramme' -->

<?= " <div class='sidstrettet'>Sidst rettet $dato</div>"; ?>

</body>
</html>


--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Mr. Smith (21-01-2006)
Kommentar
Fra : Mr. Smith


Dato : 21-01-06 23:03

Bertel Lund Hansen wrote:
> Glem databaser indtil videre. Det du ønsker, laves fint med
> include.
Ja, tror også at jeg skal holde mig til includes.

> Her er den kode jeg bruger til at styre Fidusos sider - barberet
> så den er lidt mere overskuelig.
Tak, det skal nok hjælpe på forståelsen (eksempler er guld værd).

//smith

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste