Toon posts:

[MySQL] database-driven website Select content

Pagina: 1
Acties:

Verwijderd

Topicstarter
Na een aantal websites opgebouwd te hebben in PHP in combinatie met Mysql, bestaande uit duizend en 1 bestanden, wil ik nu beginnen aan een website volledig database driven.
De eerste opbouw van de website is aanwezig en het Inserten van data in de tabel is ook geen probleem, alleen ik kom met het selecteren van de data uit de database voor een probleem:

Als ik in de data gewoon standaard html gebruik en deze echo via php in de pagina, komt deze er perfect uit. Maar zodra ik in de data php gebruik dus bijvoorbeeld: include('test.php'); dan wordt dit ook gewoon meegeëchot, wat natuurlijk vrij vanzelfsprekend is.
Na veel zoeken op google en de topics in dit forum ben ik nog niks wijzer geworden en daarom mijn vraag, heeft iemand een idee hoe ik php code vanuit de database kan includen op mijn pagina?

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Je kan eval gebruiken om het uit te voeren maar dat heeft ook z'n limitaties.
De enige andere manier is om het tijdelijk naar een bestand te schrijven.

Btw kan je me uitleggen waarom je het allemaal in de database wil hebben?
Ik kan me geen voordeel bedenken dat niet direct veel meer nadelen heeft.

[ Voor 3% gewijzigd door Wolfboy op 20-01-2005 22:43 . Reden: bedoelde eval natuurlijk, ben nog niet wakker 8)7 ]

Blog [Stackoverflow] [LinkedIn]


  • Doogie
  • Registratie: Januari 2002
  • Niet online
In database opslaan als <?php include('test.php'); ?> of de tags in je html zetten?

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 13-05 20:39

  • ludo
  • Registratie: Oktober 2000
  • Laatst online: 01-03 18:17
Met even een waarschuwing: pas hier héél erg mee op! En bedenk héél goed of je dit wel wilt doen. Als je nu die 1001 bestanden gewoon aan het kopiëren bent naar een database schiet je er niet veel mee op, dan kun je ze net zo goed gewoon op het filesystem laten staan. Dat is daar namelijk een veel geschiktere database voor. Met eval (niet voor niets ook wel 'evil' genoemd) wil je niet graag werken, en het is ook niet erg bevorderlijk voor de performance.

Ik vind jouw manier ook wel een rare interpretatie van 'database-driven' trouwens ;)

[ Voor 16% gewijzigd door ludo op 20-01-2005 20:25 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Wat Sybr_E-N zegt is de eenvoudigste oplossing voor je probleem. (Een probleem dat overigens de afgelopen maand bij mijn weten al zeker 3x voorbij is gekomen. :X) Toch raad ik je af dit te gebruiken en eens goed naar je ontwerp te kijken. Waarom wil je PHP code opslaan in je database? Een database gebruik je voor opslag van content, niet voor opslag van logica; logica heb je immers al in een PHP file staan. Scheid dit soort dingen liever, dan is je applicatie veel doorzichtiger en beter te onderhouden.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 13-05 20:39
Met ^^

Die evil function werkt, maar het is een zo ranzige manier van werken. Hierboven staat het een en ander uitgelegt waarom, maar via bijvoorbeel Google kun je veel informatie over die functie vinden.

Daarnaast waarom wil jij PHP code opslaag in een database en deze gaan parsen en uitvoeren. Een database connectie opbouwen + queries + connectie afbouwen is 1 van de meest tijdrovende onderdelen van een website. Het geen je zoweinig mogelijk gebruik van wilt maken.

Het hebben wat enkele 10 tallen, of meer, PHP files en deze te includen gaat scheelt heel veel in performance. Dat gaat je vanzelf merken als de sites wat drukker worden bezocht.

Daarnaast is een database niet voor die doeleinden gemaakt, het is er voor om wat informatie (een nieuws artikel, gebruiker gegevens, produken voor een webshop) in op te slaan relaties daar tussen leggen.

Ik vraag mij af hoe je aan 1000 PHP files komt. Hoe programmeer jij dan? Object Oriented, maak je veel gebruik van function's en libraries, of pleur je alles bij elkaar? Ik denk dat je daar veel meer aan hebt. Misschien kun je met efficienter programmeren veel verder komen dan PHP source opslaag in een DB en uitvoeren met eval().

Verwijderd

Topicstarter
Even een paar dingen ter verduidelijking.

1. Waarom wil ik databasedriven?
Dit wil ik omdat ik andere personen de gelegenheid wil geven om content aan te passen en ik wil voorkomen dat de login en pass van de ftp zo weinig mogelijk in de ronte gaan..

2. Waarom wil ik php gebruiken in mijn content?
Dit omdat het erg vaak voorkomt dat ik in mijn content een bepaalde functie aan wil roepen en deze uit wil voeren.

3. Hoe kom ik aan 1000 en 1 bestanden?
Dat was een hyperbool :P om aan te geven dat er momenteel voor iedere content pagina ook een php pagina gebruikt moet worden.

4. Hoe heb ik het momenteel?
Momenteel heb ik een tabel waarin de content geplaatst wordt, gekoppeld aan een menu_id.
Deze content haal ik uit de tabel d.m.v. simpel mysql_fetch_object($query) te gebruiken. Hierna echo ik de content variabele op de pagina.
Dit werkt allemaal zonder problemen totdat ik een stukje php aan wil roepen in mijn content. Op dat moment wordt deze code zoals hij in de tabel staat gewoon ge-echot.

Ik hoop dat het zo iets duidelijker is..

[ Voor 26% gewijzigd door Verwijderd op 20-01-2005 21:38 ]


  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Als het echt zo nodig webbased aangepast moet worden laat dan de bestanden aanpassen doormiddel van php (hoewel dat eigenlijk net zo gevaarlijk is als exec gebruiken mja)
Wat is er eigenlijk mis met veel bestanden gebruiken?
Eventueel kan je natuurlijk wel wat samenvoegen maar vaak is het een stuk overzichtelijker met veel bestanden.

Ik zou iig niet beginnen aan alles uit de database halen, ALLES behalve dat.

Blog [Stackoverflow] [LinkedIn]


  • ludo
  • Registratie: Oktober 2000
  • Laatst online: 01-03 18:17
Verwijderd schreef op donderdag 20 januari 2005 @ 21:21:
Even een paar dingen ter verduidelijking.

1. Waarom wil ik databasedriven?
Dit wil ik omdat ik andere personen de gelegenheid wil geven om content aan te passen en ik wil voorkomen dat de login en pass van de ftp zo weinig mogelijk in de ronte gaan..
Maar tussen content hoort géén php te staan. Door al je PHP bestanden te kopiëren in je database heb je nog geen database-driven website. Tenminste, ik zou het geen database driven website willen noemen :P
Het filesystem op je harde schijf ís in weze een database, dat geschikt is om bestanden op op te slaan. Een databaseserver als MySQL is niet geschikt om bestanden in op te slaan, daar hebben we namelijk een filesystem voor. In een relationele database als MySQL sla je gegevens op die je later wilt kunnen bewerken of weergeven. Maar hier zou wat mij betreft in geen énkel geval code in mogen staan. Dit wijst op een slecht datamodel, en in jouw geval eigenlijk op helemaal geen datamodel :P
Als je mensen de mogelijkheid geeft om php in hun content te gebruiken kun je ze net zo goed de gebruikersnaam van je ftp geven want als je toestemming geeft om php te gebruiken kunnen ze eigenlijk toch al alles doen wat ze willen...
2. Waarom wil ik php gebruiken in mijn content?
Dit omdat het erg vaak voorkomt dat ik in mijn content een bepaalde functie aan wil roepen en deze uit wil voeren.
Maar zitten er geen overeenkomsten tussen die verschillende bestanden? Wat is het voor 'content'?
3. Hoe kom ik aan 1000 en 1 bestanden?
Dat was een hyperbool :P om aan te geven dat er momenteel voor iedere content pagina ook een php pagina gebruikt moet worden.
Als ik jou was zou ik eens gaan onderzoeken hoeveel verschil er tussen die verschillende pagina's zit en of de code die er in staat niet in een aantal algemenere pagina's te krijgen is en dat je de échte gegevens dan wel uit een database haalt.
4. Hoe heb ik het momenteel?
Momenteel heb ik een tabel waarin de content geplaatst wordt, gekoppeld aan een menu_id.
Deze content haal ik uit de tabel d.m.v. simpel mysql_fetch_object($query) te gebruiken. Hierna echo ik de content variabele op de pagina.
Dit werkt allemaal zonder problemen totdat ik een stukje php aan wil roepen in mijn content. Op dat moment wordt deze code zoals hij in de tabel staat gewoon ge-echot.
De makkelijkste oplossing om dit toch te doen is dus gebruik te maken van eval(). Maar ik probeer je duidelijk te maken dat je dat dus eigenlijk toch niet wilt ;) Zoek bijvoorbeeld hier op GoT maar eens naar meer info over eval. Er zijn niet veel mensen die voorstander van het gebruik van eval zijn. En als die er wel zijn moeten ze een schop onder hun kont krijgen :P Nee, in heel uitzonderlijke gevallen is er misschien wat voor te zeggen, maar ik denk dat het in jouw geval niet nodig is. En de manier waarop je nu gebruik maakt van MySQL is eigenlijk ook redelijk onzinnig :P Je voegt alleen maar een extra laag toe aan je applicatie die het geheel complexer maakt dan nodig is. Een database als MySQL is niet bedoeld voor het opslaan en ophalen van hele bestanden, daar hebben we het filesystem voor :Y)
Ik hoop dat het zo iets duidelijker is..
Ik hoop dat ik zo ook nog iets duidelijker ben ;)

[ Voor 5% gewijzigd door ludo op 20-01-2005 23:06 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Verwijderd schreef op donderdag 20 januari 2005 @ 21:21:
Even een paar dingen ter verduidelijking.

1. Waarom wil ik databasedriven?
Database driven wil niet zeggen dat je code ook in de database zit hoor. ;)
Dit wil ik omdat ik andere personen de gelegenheid wil geven om content aan te passen en ik wil voorkomen dat de login en pass van de ftp zo weinig mogelijk in de ronte gaan..
Maak of gebruik dan een fatsoenlijk CMS. :P
2. Waarom wil ik php gebruiken in mijn content?
Dit omdat het erg vaak voorkomt dat ik in mijn content een bepaalde functie aan wil roepen en deze uit wil voeren.
Noem eens een voorbeeld? Ik kan me niets bedenken wat ik niet apart kan houden van de content.
Ik hoop dat het zo iets duidelijker is..
De oplossing voor je probleem is al voorbij gekomen (eval), alleen proberen wij je nou daarvanaf te laten stappen. :+

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
Nou na het lezen van een aantal reacties hier, waar ik zeer dankbaar voor ben!
Heb ik nog eens goed nagedacht en ben ik er idd achtergekomen dat ik het anders aan moet pakken! :)
Ik zal mijn code scheiden van de content en de content vanuit de database laden, welke alleen bestaat uit html.
-NMe- schreef op donderdag 20 januari 2005 @ 23:43:
Maak of gebruik dan een fatsoenlijk CMS. :P
En de eerste optie is precies wat ik ga doen :) In ieder geval hartelijk dank voor jullie support en indien gewenst kun je binnenkort het resultaat bekijken op www.jongerensneek.nl
Pagina: 1