Avatar billede riversen Nybegynder
30. juni 2003 - 11:50 Der er 25 kommentarer og
1 løsning

php kode gemt i mysql database

hvis jeg henter noget kode fra en mysql database bliver det ikke udført.

det er ser blot sådan ud:
<?php echo( "HEj med dig" ); ?>

hvis jeg vælger "Vis kilde" kan jeg se koden <?php echo( "HEj med dig" ); ?>, men det står intet på siden....ikke engang selve koden.

Er det ikke muligt at få php'en afviklet?
Avatar billede schaefner Juniormester
30. juni 2003 - 11:50 #1
Jo, su skal bruge eval()
http://dk.php.net/eval
Avatar billede ahv Nybegynder
30. juni 2003 - 11:50 #2
Nøjes med at indsætte ->

echo "HEj med dig";

og på dit udtræks felt laver du flg. funktion ->

eval($felt);
Avatar billede ahv Nybegynder
30. juni 2003 - 11:51 #3
Altså hvor du før skrev ->

echo $felt skriver du nu ->

eval($felt);
Avatar billede riversen Nybegynder
30. juni 2003 - 11:55 #4
men hvad så hvis det der er i databasen er en blanding af alm tekst/html og php...er det ikke noget problem?
Avatar billede ahv Nybegynder
30. juni 2003 - 11:59 #5
Det burde det ikke være, så skal du jo selvfølgeflig bare huske at afslutte og starte php der inde mellem, bare ikke hvis det står som det første ->

eval("echo \"".$row['felt']."\";");
Avatar billede riversen Nybegynder
30. juni 2003 - 12:02 #6
jeg har en hvor der er ren tekst/html...

jeg får følgende fejl:
Parse error: parse error, unexpected T_STRING in D:\Hjemmesider\Riversen.dk\pages\tips.php(43) : eval()'d code on line 1
Avatar billede ahv Nybegynder
30. juni 2003 - 12:03 #7
Sådan her den her fungere ->

eval("echo \"".$row['felt']."\";");
Avatar billede ahv Nybegynder
30. juni 2003 - 12:03 #8
Jeg brugte ->

$navn = "ahv";
$query = mysql_query("SELECT felt FROM tabel");
$row = mysql_fetch_array($query);
eval("echo \"".$row['felt']."\";");

I tabellen var der ->
Hej med dig <b>$navn</b>
Avatar billede erikjacobsen Ekspert
30. juni 2003 - 12:06 #9
eval("?> dette er tekst <? print 1+2; ?> mere tekst<?");

virker ;)
Avatar billede ahv Nybegynder
30. juni 2003 - 12:06 #10
Hvis du ønsker at der skal være php kode med if betingelser osv. så kan du gøre således ->

$navn = "ahv";
$query = mysql_query("SELECT * FROM tabel");
$row = mysql_fetch_array($query);
eval($row['felt']);

Feltet indeholder nu ->

echo "Hej med dig <b>$navn</b>";
if ($navn == "ahv") {
echo "hej";
} else {
echo "Farvel";
}

Så du kan jo echo dit html.
Avatar billede riversen Nybegynder
30. juni 2003 - 12:08 #11
ahv: hvis jeg bruger dit eksempel virker det ikke...erstatter jeg \" med ' så virker det...er det ikke lidt underligt
Avatar billede ahv Nybegynder
30. juni 2003 - 12:09 #12
Den burde virke både med \" og '
Avatar billede riversen Nybegynder
30. juni 2003 - 12:11 #13
ja, det vil jeg også sige. Jeg prøver lige at teste lidt at vender tilbage
Avatar billede riversen Nybegynder
30. juni 2003 - 12:15 #14
ahv: nu echo'er den jo også php koden istedet for at evaluere den
Avatar billede ahv Nybegynder
30. juni 2003 - 12:17 #15
Har du prøvet mit eksempel ->

$navn = "ahv";
$query = mysql_query("SELECT * FROM tabel");
$row = mysql_fetch_array($query);
eval($row['felt']);

Feltet indeholder nu ->

echo "Hej med dig <b>$navn</b>";
if ($navn == "ahv") {
echo "hej";
} else {
echo "Farvel";
}

?
Avatar billede riversen Nybegynder
30. juni 2003 - 12:21 #16
den udskriver så:
Hej med dig Farvel

men jeg får jo så fejl i dem der ikke indeholder php
Avatar billede ahv Nybegynder
30. juni 2003 - 12:23 #17
riversen -> Præv at post indholdet af dem her.
Avatar billede riversen Nybegynder
30. juni 2003 - 12:25 #18
1:
Jeg er ikke så vild med Microsoft Windows Messenger, så jeg ynder at fjerne det fra Windows XP. Dette gøres ved at skrive følgende i start --> kør:

<font color="#4A79A9"><center>rundll32 advpack.dll,LaunchINFSection %systemRoot%\INF\msmsgs.inf,BLC.Remove</center></font>

Dette er en afinstallation og ikke blot en deaktivering. Jeg har forsøgt at deaktivere vha. Group Policy Editor (gpedit.msc), hvilket resulterede i, at Outlook Express blev langsom ved opstart.

2:
Istedet for at jeg skriver en lang forklaring, kan jeg ligeså godt linke til en artikel fra Microsoft, som beskriver proceduren rigtig godt.

Outlook Express:
<a href="http://support.microsoft.com/?kbid=270670" target="_blank">http://support.microsoft.com/?kbid=270670</a>
Outlook:
<a href="http://support.microsoft.com/?kbid=287070" target="_blank">http://support.microsoft.com/?kbid=287070</a>

3:
echo "Hej med dig <b>$navn</b>";
if ($navn == "ahv") {
echo "hej";
} else {
echo "Farvel";
}

4:
pølse

http://privat.riversen.dk/riversen.dk/?id=tips
Avatar billede ahv Nybegynder
30. juni 2003 - 12:28 #19
1. ->

echo "Jeg er ikke så vild med Microsoft Windows Messenger, så jeg ynder at fjerne det fra Windows XP. Dette gøres ved at skrive følgende i start --> kør:

<font color='#4A79A9'><center>rundll32 advpack.dll,LaunchINFSection %systemRoot%\INF\msmsgs.inf,BLC.Remove</center></font>

Dette er en afinstallation og ikke blot en deaktivering. Jeg har forsøgt at deaktivere vha. Group Policy Editor (gpedit.msc), hvilket resulterede i, at Outlook Express blev langsom ved opstart.";
Avatar billede erikjacobsen Ekspert
30. juni 2003 - 12:28 #20
Brug en simpel eval og:

1:
?>Jeg er ikke så vild med Microsoft Windows Messenger, så jeg ynder at fjerne det fra Windows XP. Dette gøres ved at skrive følgende i start --> kør:

<font color="#4A79A9"><center>rundll32 advpack.dll,LaunchINFSection %systemRoot%\INF\msmsgs.inf,BLC.Remove</center></font>

Dette er en afinstallation og ikke blot en deaktivering. Jeg har forsøgt at deaktivere vha. Group Policy Editor (gpedit.msc), hvilket resulterede i, at Outlook Express blev langsom ved opstart.
<?

2:
?>Istedet for at jeg skriver en lang forklaring, kan jeg ligeså godt linke til en artikel fra Microsoft, som beskriver proceduren rigtig godt.

Outlook Express:
<a href="http://support.microsoft.com/?kbid=270670" target="_blank">http://support.microsoft.com/?kbid=270670</a>
Outlook:
<a href="http://support.microsoft.com/?kbid=287070" target="_blank">http://support.microsoft.com/?kbid=287070</a>
<?

3:
echo "Hej med dig <b>$navn</b>";
if ($navn == "ahv") {
echo "hej";
} else {
echo "Farvel";
}

4:
?>pølse<?
Avatar billede ahv Nybegynder
30. juni 2003 - 12:29 #21
Jeps som EJ laver det kan det også lade sg gøre, at du som sagt slutter php der hvor du vil ind og bruge HTML og når du vil bruge HTML starter du php, med mindre du echo'er dit HTML.
Avatar billede riversen Nybegynder
30. juni 2003 - 12:32 #22
ok...havde prøvet med eriks løsning men det virkede ikke...har så fundet ud af, det åbenbart gør an forskel om jeg skriver <? eller <?php
Avatar billede erikjacobsen Ekspert
30. juni 2003 - 12:33 #23
Det kan det gøre afhængig af indstillinger i din PHP. <?php er korrektest ;)
Avatar billede riversen Nybegynder
30. juni 2003 - 12:35 #24
erik: hvilken indstilling? det er ikke noget problem normalt.

et lille problem mere. Før brugte jeg nl2br for at slippe for selv at skrive <br /> hele tiden.

Hvis jeg gør sådan: eval( nl2br( $data[3] ) ); får jeg fejl i 3. output
Avatar billede erikjacobsen Ekspert
30. juni 2003 - 12:44 #25
Det er noget i php.ini ...

Du kan sætte linieskift på med (skitse):

ob_start();
eval("?> dette er\ntekst <? print 1+2; ?> mere tekst<?");
$s=ob_get_contents();
ob_end_clean();
print nl2br($s);
Avatar billede riversen Nybegynder
30. juni 2003 - 12:51 #26
den var smart den der erik. Går ud fra du er ligeglad med point.

Kan I ikke lige tage et kig på mit forrige php spørgsmål ;-)
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