Embedded (my)sql

Embedded (my)sql

am 10.08.2005 14:27:43 von Bioperler

Tach zusammen!

Also folgendes Problem: Ich habe eine Website im klassischen 3-Spalten-Layout. Diese besitzt insgesamt etwa 50 Seiten. Nun habe ich keine
Lust eine kleine Änderung am Layout in jeder einzelnen Seite machen zu müssen, daher würde ich gerne die einzelnen Teile der Seite in einer
Datenbank (mysql) speichern und daraus die fertige Seite generieren. Nun bin ich aber auf folgendes Problem gestoßen: Manche Teile
beinhalten ihrerseits mysql-Statements, welcher mir, nach erfolgter sql-Abfrage, aber lediglich angezeigt werden und nicht ausgeführt werden.
Ist es möglich (mit php und mysql) sql-Abfragen in der Datenbank zu speichern, die nicht nur angezeigt sondern auch wirklich ausgeführt
werden? Muß hier vielleicht ein spezielles Escaping erfolgen?

Achso... bitte keine Vorschläge in Richtung: Benutze doch Mambo, Contenido, Typo3, phpnuke und wie sie nicht alle heißen! Ich schreibe mir
hier lediglich für einige proprietäre Sachen eine Art CMS und hab daher auch keine Lust, mich in ein CMS extra einzuarbeiten, mit dessen
Einschränkungen ich dann evtl. leben muß.

PHP: 4.4.0
mySQL: 4.0.24

Danke im voraus.

Re: Embedded (my)sql

am 10.08.2005 14:33:05 von Johannes Mueller

Bioperler schrieb:

> Also folgendes Problem: Ich habe eine Website im klassischen
> 3-Spalten-Layout. Diese besitzt insgesamt etwa 50 Seiten. Nun habe
> ich keine Lust eine kleine Änderung am Layout in jeder einzelnen
> Seite machen zu müssen, daher würde ich gerne die einzelnen Teile
> der Seite in einer Datenbank (mysql) speichern und daraus die
> fertige Seite generieren. Nun bin ich aber auf folgendes Problem
> gestoßen: Manche Teile beinhalten ihrerseits mysql-Statements,
> welcher mir, nach erfolgter sql-Abfrage, aber lediglich angezeigt
> werden und nicht ausgeführt werden. Ist es möglich (mit php und
> mysql) sql-Abfragen in der Datenbank zu speichern, die nicht nur
> angezeigt sondern auch wirklich ausgeführt werden? Muß hier
> vielleicht ein spezielles Escaping erfolgen?

du suchst sicher so etwas wie eval()[1]... allerdings ist das nicht so
gern gesehen...

hth
Johannes

[1] http://de3.php.net/manual/de/function.eval.php

--
Emails ohne "[nospam]" im Betreff werden kommentarlos gelöscht.

Re: Embedded (my)sql

am 10.08.2005 15:11:19 von Bioperler

Johannes Mueller wrote:
> Bioperler schrieb:
>
>> Also folgendes Problem: Ich habe eine Website im klassischen
>> 3-Spalten-Layout. Diese besitzt insgesamt etwa 50 Seiten. Nun habe
>> ich keine Lust eine kleine Änderung am Layout in jeder einzelnen
>> Seite machen zu müssen, daher würde ich gerne die einzelnen Teile
>> der Seite in einer Datenbank (mysql) speichern und daraus die
>> fertige Seite generieren. Nun bin ich aber auf folgendes Problem
>> gestoßen: Manche Teile beinhalten ihrerseits mysql-Statements,
>> welcher mir, nach erfolgter sql-Abfrage, aber lediglich angezeigt
>> werden und nicht ausgeführt werden. Ist es möglich (mit php und
>> mysql) sql-Abfragen in der Datenbank zu speichern, die nicht nur
>> angezeigt sondern auch wirklich ausgeführt werden? Muß hier
>> vielleicht ein spezielles Escaping erfolgen?
>
>
> du suchst sicher so etwas wie eval()[1]... allerdings ist das nicht so
> gern gesehen...
>
> hth
> Johannes
>
> [1] http://de3.php.net/manual/de/function.eval.php
>
Jo genau - sowas meine ich. Allerdings scheint das bei Abfragen aus der Datenbank irgendwie nicht zu funktionieren (oder ich stelle mich
grad etwas dumm an). Von wegen "nicht so gerne gesehen": die SQL-Statements werden nicht von außerhalb angenommen sondern stehen statisch in
der Datenbank und werden nicht verändert.

Re: Embedded (my)sql

am 10.08.2005 15:17:34 von Bioperler

Bioperler wrote:
> Johannes Mueller wrote:
>
>> Bioperler schrieb:
>>
>>> Also folgendes Problem: Ich habe eine Website im klassischen
>>> 3-Spalten-Layout. Diese besitzt insgesamt etwa 50 Seiten. Nun habe
>>> ich keine Lust eine kleine Änderung am Layout in jeder einzelnen
>>> Seite machen zu müssen, daher würde ich gerne die einzelnen Teile
>>> der Seite in einer Datenbank (mysql) speichern und daraus die
>>> fertige Seite generieren. Nun bin ich aber auf folgendes Problem
>>> gestoßen: Manche Teile beinhalten ihrerseits mysql-Statements,
>>> welcher mir, nach erfolgter sql-Abfrage, aber lediglich angezeigt
>>> werden und nicht ausgeführt werden. Ist es möglich (mit php und
>>> mysql) sql-Abfragen in der Datenbank zu speichern, die nicht nur
>>> angezeigt sondern auch wirklich ausgeführt werden? Muß hier
>>> vielleicht ein spezielles Escaping erfolgen?
>>
>>
Ok also meine Lösung scheint das hier zu sein: http://dev.mysql.com/doc/mysql/en/stored-procedures.html
Allerdings gehts das erst am mysql5 - da werde ich mir also besser nen anderen Weg überlegen.

Re: Embedded (my)sql

am 11.08.2005 11:31:07 von Marian Heddesheimer

On Wed, 10 Aug 2005 14:27:43 +0200, Bioperler wrote:

>Lust eine kleine Änderung am Layout in jeder einzelnen Seite machen zu müssen, daher würde ich gerne die einzelnen Teile der Seite in einer
>Datenbank (mysql) speichern und daraus die fertige Seite generieren. Nun bin ich aber auf folgendes Problem gestoßen: Manche Teile
>beinhalten ihrerseits mysql-Statements, welcher mir, nach erfolgter sql-Abfrage, aber lediglich angezeigt werden und nicht ausgeführt werden.

Wenn ich das richtig verstehe, speicherst du SQL-Abfragen als Text in
der Datenbank? Und du möchtest, dass diese dann im PHP-Skript
ausgeführt werden?

Dazu speicherst du das SQL-Statement in einer Variable z.B.:

$row = mysql_fetch_array($resultset);
$sql = $row['abfrage'];

anschließend musst du diese Abfrage dann wieder mit mysql_query($sql)
an den Datenbankserver schicken.

Ist es das, was du brauchst, oder habe ich dein Anliegen völlig falsch
verstanden?

Gruß Marian

--
Kostenlose Tipps und Tricks zu PHP und MySQL
http://www.heddesheimer.de/coaching/

Re: Embedded (my)sql

am 11.08.2005 15:26:44 von Axel Schwenke

Bioperler wrote:
> Tach zusammen!
>
> Ich habe eine Website ...insgesamt etwa 50 Seiten. Nun habe ich keine
> Lust eine kleine Änderung am Layout in jeder einzelnen Seite machen zu
> müssen, daher würde ich gerne die einzelnen Teile der Seite in einer
> Datenbank (mysql) speichern und daraus die fertige Seite generieren.

Klingt so, als wölltest du dir CSS [1] oder ein HTML-Templating-System
wie WML [2] ansehen. Das mit der Datenbank ist eine Schnapsidee.

[1] Cascading Stylesheets
-> http://www.google.de/search?q=css+einf%C3%BChrung

[2] Website Meta Language -> http://thewml.org


XL

Re: Embedded (my)sql

am 11.08.2005 19:05:50 von Bioperler

Marian Heddesheimer wrote:
> On Wed, 10 Aug 2005 14:27:43 +0200, Bioperler wrote:
>
>
>>Lust eine kleine Änderung am Layout in jeder einzelnen Seite machen zu müssen, daher würde ich gerne die einzelnen Teile der Seite in einer
>>Datenbank (mysql) speichern und daraus die fertige Seite generieren. Nun bin ich aber auf folgendes Problem gestoßen: Manche Teile
>>beinhalten ihrerseits mysql-Statements, welcher mir, nach erfolgter sql-Abfrage, aber lediglich angezeigt werden und nicht ausgeführt werden.
>
>
> Wenn ich das richtig verstehe, speicherst du SQL-Abfragen als Text in
> der Datenbank? Und du möchtest, dass diese dann im PHP-Skript
> ausgeführt werden?
>
> Dazu speicherst du das SQL-Statement in einer Variable z.B.:
>
> $row = mysql_fetch_array($resultset);
> $sql = $row['abfrage'];
>
> anschließend musst du diese Abfrage dann wieder mit mysql_query($sql)
> an den Datenbankserver schicken.
>
> Ist es das, was du brauchst, oder habe ich dein Anliegen völlig falsch
> verstanden?
>
> Gruß Marian
>
Ich hatte einen kleinen Denkfehler - ich es dann mit eval hinbekommen, so wie ich es ursprünglich wollte. Allerdings habe ich die Idee
wieder verworfen, da die ganze Escaperei einfach viel zu umständlich ist. Es ging darum, dass ich einfach einen kompletten Block aus einem
3-Spalten-Layout in die Datenbank stecken wollte. In diesem speziellen Fall gings um das Navigationsmenu. Ich hab dann aber doch eingesehen,
dass ich besser die einzelnen Links, Namen etc. in der Datenbank abspeichere und das Ganze wie ein CMS aufbaue. Das ist besser zu warten,
mehrere Sprachen sind problemlos möglich und besser zu warten ist es auch.

Trotzdem danke für die Antworten.

Re: Embedded (my)sql

am 11.08.2005 19:07:02 von Bioperler

Axel Schwenke wrote:
> Bioperler wrote:
>
>>Tach zusammen!
>>
>>Ich habe eine Website ...insgesamt etwa 50 Seiten. Nun habe ich keine
>>Lust eine kleine Änderung am Layout in jeder einzelnen Seite machen zu
>>müssen, daher würde ich gerne die einzelnen Teile der Seite in einer
>>Datenbank (mysql) speichern und daraus die fertige Seite generieren.
>
>
> Klingt so, als wölltest du dir CSS [1] oder ein HTML-Templating-System
> wie WML [2] ansehen. Das mit der Datenbank ist eine Schnapsidee.
>
> [1] Cascading Stylesheets
> -> http://www.google.de/search?q=css+einf%C3%BChrung
Meine ganze Seite basiert auf CSS (incl. Layout). Also ne Einführung brauche ich da sicherlich nicht :-)
Anyway... wie gesagt - ich hab das Vorhaben in der Form über den Haufen geworfen.

Re: Embedded (my)sql

am 12.08.2005 13:12:42 von Markus Mann

Bioperler wrote:
> Axel Schwenke wrote:
>>
>> Klingt so, als wölltest du dir CSS [1] oder ein HTML-Templating-System
>> wie WML [2] ansehen. Das mit der Datenbank ist eine Schnapsidee.
>>
>
> Anyway... wie gesagt - ich hab das Vorhaben in der Form über den Haufen geworfen.

Du solltest dir DRINGEND die von XL genannte WML ansehen. Das kann
wirklich genau das, was du möchtest und die Technik dahinter passt
obendrein zu deinem Namen.

BTW: Dein Newsclient kann definitv vernünftige Zeilenlängen erzeugen,
lass ihn das bitte machen.

Ciao.
--
Markus Mann
];-)