Avatar billede ghazaleh Nybegynder
08. januar 2003 - 10:01 Der er 19 kommentarer og
2 løsninger

php fortolkes ikke fra database

Jeg henter alle mine sider dynamisk ved at gemme koden i en Mysql database og hente de forskellige sider udafra deres id.
Men når jeg gør det, så bliver min php-kode ikke fortolket. Er der ikke en måde hvor man kan få fortolket sin php-kode, selvom at det bliver hentet fra en database?
Avatar billede jensgram Nybegynder
08. januar 2003 - 10:06 #1
Avatar billede ghazaleh Nybegynder
08. januar 2003 - 10:12 #2
Den ser brugbar ud, men jeg er lidt i tvivl om hvordan jeg kan bruge funktionen i forbindelse med denne kode, som bliver hentet fra databasen:

<?php                         
$resultat = mysql_query("SELECT * FROM mmnyheder ORDER BY id DESC");
while ($a_row = mysql_fetch_row($resultat)){
  echo("$a_row[1]");
}
?>
Avatar billede ghazaleh Nybegynder
08. januar 2003 - 11:13 #3
Nu har jeg fået eval(); til at fungere, men den kommer med denne fejl, når jeg prøver at hente min kode fra db'en:

in /home/httpd/vhosts/ghazaleh.dk/httpdocs/bryllup/main.php(193) : eval()'d code on line 1

Og min kode ser sådan her ud:

<?
$list="<table border=0 cellspacing=0 cellpadding=0 summary=Nyhedsoversigt width=100%>")";
$list.="<tr>";
$list.="<td>";
$list.="<table border=0 cellspacing=0 cellpadding=0 summary=Overskrift width=100%>";
$list.="<tr>";
$list.="<td align=center>";
$list.="<h5>Nyheder</h5>";
$list.="</td>";
$list.="</tr>";
$list.="</table>";
$list.="<table border=0 cellspacing=0 cellpadding=0 summary=Overskrift width=100%>";
$list.="<tr>";
$list.="<td>";
$list.="<?php";                         
$list.="$resultat = mysql_query("SELECT * FROM mmnyheder ORDER BY id DESC");";
$list.="while ($a_row = mysql_fetch_row($resultat)){";
$list.="echo(\"$a_row[1]\");";
$list.="}";
$list.="?>";
$list.="</td>";
$list.="</tr>";
$list.="</table>";
$list.="</td>";
$list.="</tr>";
$list.="</table>";
echo("$list");
?>
Avatar billede ztyxx Nybegynder
08. januar 2003 - 14:10 #4
du skal ikke have <?php ?> med i databasen, da det du hiver ud jo allerede ligger mellem <?php ?> i forvejen.

iøvrigt hhar du nok en ") for meget med i
$list="<table border=0 cellspacing=0 cellpadding=0 summary=Nyhedsoversigt width=100%>")";
Avatar billede ghazaleh Nybegynder
08. januar 2003 - 14:31 #5
jeg har lige rettet det til. Den kommer med samme fejl, men nu skriver den også det her:

Parse error: parse error in /home/httpd/vhosts/ghazaleh.dk/httpdocs/bryllup/main.php(193) : eval()'d code on line 1

"; $list.="
"; $list.=" "; $list.=""; $list.=" "; $list.=" "; $list.="
Nyheder
"; $list.=" "; $list.="
"; $list.=" "; $list.=""; $list.=" "; $list.=" "; $list.="$resultat = mysql_query("SELECT * FROM mmnyheder ORDER BY id DESC");"; $list.="while ($a_row = mysql_fetch_row($resultat)){"; $list.="echo(\"$a_row[1]\");"; $list.="}"; $list.=" "; $list.="
"; $list.=" "; $list.=" "; $list.="
"; $list.=" "; ?>

Så det ser ud som om at den nu fortolker html'en men stadigvæk ikke php'en
Min eval() ser sådan her ud:

eval("\$string=\"$row[0]\";");
echo("$string");
Avatar billede ghazaleh Nybegynder
08. januar 2003 - 15:04 #6
hmmm jeg tror ikke at jeg kan bruge eval(), for den fortolker godt nok php-variabler, men det ser ikke ud til at den fortolker php-kode
Avatar billede jensgram Nybegynder
08. januar 2003 - 17:09 #7
Prøv lige eval("\$string=\"\$row[0]\";");
echo("$string");
Avatar billede jensgram Nybegynder
08. januar 2003 - 17:18 #8
... jeg har selv stor fornøjelse af:

<code>
<?php
if (isset($HTTP_POST_VARS['code'])) {
    eval(stripslashes($HTTP_POST_VARS['code']));
}
?>
</code>

<hr>
<form action="eval.php" method="POST">
<textarea name="code" cols="80" rows="10"><?php print stripslashes($HTTP_POST_VARS['code']); ?></textarea><br>
<input type="submit">
</form>

, der virker upåklageligt!
Avatar billede olebole Juniormester
08. januar 2003 - 18:07 #9
<ole>

"Jeg henter alle mine sider dynamisk ved at gemme koden i en Mysql database og hente de forskellige sider udafra deres id."

Så har du vist helt misforstået, hvad man bruger PHP/MySQL til. Prøv at købe en bog om emnet eller kikke lidt i de mange udmærkede tutorials på nettet  ;o)

/mvh
</bole>
Avatar billede ghazaleh Nybegynder
08. januar 2003 - 18:54 #10
Det er fordi, at jeg vil prøve at lave noget der minder om CMS. Jeg har kun lært at programmere til Internettet med php/Mysql og noget der hedder Lansa, som jeg bruger på arbejdet, men jeg ved at Lansa slet ikke kan bruges til dette, og jeg kender ikke til andre metoder at gøre det på. Men er der nogle sprog eller metoder, der er bedre at bruge?
Jeg har overvejet at kigge nærmere på xml.

mr noname ->  Det hjalp desværre ikke :-( Jeg har også prøvet at læse hele debatten igennem på http://dk.php.net/eval men kunne heller ikke få nogle idéer derfra.
Avatar billede olebole Juniormester
08. januar 2003 - 19:30 #11
PHP/MySQL er fint til at lave CMS'er i - men det er ikke en god idé at gemme HTML i databasen ... af mange grunde, herunder sikkerhed.
Du skal lave nogle skabeloner, som indeholder HTML'en og så nøjes med at gemme tekst, bruger-info o.lign. i databasen. Når du så skal bruge siden, henter du teksten fra DB'en og skriver den ind i din skabelon.
Prøv at downloade nogle gratis CMS'er fra f.eks. Hotscripts.com for at have lidt at kikke i - og mon ikke også, der er et par artikler på phpbuilder.com, du kan bruge?

Den allerbedste måde er i virkeligheden at lade dit CMS til at skrive statiske filer ud - da du så ikke behøver trække på DB eller PHP-fortolker, når en bruger kalder siden. Det er måden, man laver sites med mange brugere og siderne højest opdateres en gang i timen, f.eks.
Man har alligevel teksten liggende i DB, men det er kun til ære for den, der skal opdatere, der henter teksten fra DB, opdaterer og PHP overskriver så den statiske side.
Det giver så absolut det bedst performende site, men bliver desværre alt for sjældent brugt. Derfor er der så voldsomt mange langsomme dynamiske sites på WWW.

/mvh
Avatar billede jensgram Nybegynder
08. januar 2003 - 21:29 #12
respekten > Ærgerligt! Jeg tror dog, at Ole har fat i noget!
Avatar billede olebole Juniormester
08. januar 2003 - 22:16 #13
En hel anden ting er designet. Forestil dig, du efter tre måneder finder ud af, du gerne vil lave en ændring i designet ... så har du måske 12.000 table-rækker i din DB, der 'lige' skal laves om  ;o)
Du skal nok nøjes med at have '<br>', '<strong></strong>', '<em></em>' o.lign. i DB'en.
/mvh
Avatar billede ghazaleh Nybegynder
09. januar 2003 - 08:07 #14
Ok, tak for hjælpen. Jeg vil gå tilbage til tegnebrættet inden at jeg fortsætter. Jeg vil gerne dele pointene mellem Ole og Noname
Lægger du et svar Ole?
Avatar billede ghazaleh Nybegynder
09. januar 2003 - 08:08 #15
..Og også dig nonmame, jeg så ikke at du heller ikke havde svaret :-)
Avatar billede jensgram Nybegynder
09. januar 2003 - 09:45 #16
Jeg vil da gerne lægge et svar, men hvis jeg skal være helt ærlig så synes jeg ikke, at jeg har hjulpet så meget. ;)
Avatar billede ghazaleh Nybegynder
09. januar 2003 - 09:54 #17
Jeg giver nok også Ole lidt mere, men du har hjulpet mig ved at henvise mig til en god funktion, som jeg ikke kendte, men som jeg faktisk nu har brugt på en anden hjemmeside (Hvor det fungerer ;-) )
Avatar billede jensgram Nybegynder
09. januar 2003 - 13:51 #18
Jamen  det står dig da også frit for. Jeg ville bare vise min gode vilje ;)
Avatar billede olebole Juniormester
09. januar 2003 - 18:01 #19
eval() er en fin funktion at kende ... den er absolut også noget værd  ;o)
/mvh
Avatar billede olebole Juniormester
09. januar 2003 - 18:01 #20
ups ... svar  :D
Avatar billede jensgram Nybegynder
10. januar 2003 - 11:42 #21
takker...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester