Avatar billede tobias_louv Nybegynder
18. juni 2003 - 22:41 Der er 33 kommentarer og
1 løsning

Skrive PHP fra en database

Hej
Jeg har et script der henter mit indhold fra min database, men i databasen har jeg skrevet noget PHP (fe.x. <?echo 'Hej';?>); er det mugligt at få skrevet "Hej" i stedet for "<?echo 'Hej';?>" ud i browseren???
Avatar billede ahv Nybegynder
18. juni 2003 - 22:44 #1
du skal bruge eval funktionen:

<?php
eval($row['felt']);
?>
Avatar billede ahv Nybegynder
18. juni 2003 - 22:46 #2
Avatar billede avminarm Juniormester
18. juni 2003 - 22:46 #3
ahv>> sad lige og kunne ikke huske den - eval self ;o)
Avatar billede erikjacobsen Ekspert
18. juni 2003 - 22:49 #4
Men husk, som du ogå selv anfører, at der skal <? ... ?> omkring for
PHP starter altid i "HTML-mode".
Avatar billede ahv Nybegynder
18. juni 2003 - 23:00 #5
EJ, det her virker ellers fint her ->

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

I tabellen har jeg ->
echo $navn;
Avatar billede tobias_louv Nybegynder
19. juni 2003 - 08:13 #6
Det virker ikke med den eval()
Jeg bruger '<?' til at starte min PHP i tabellen og '?>' til at slutte PHP med,
men jeg har også almindelig HTML i tabellen er jeg nødt til at lave det hele
om til PHP? Så jeg slipper for '<?' og '?>'?
Avatar billede phpgris Nybegynder
19. juni 2003 - 08:18 #7
Kan du beskrive fejlen lidt nærmere end "det virker ikke"? Kommer der en fejlmeddelelse? Eller kommer der slet ikke noget tekst? Hvordan ser koden ud? Hvordan ser feltet i tabellen ud?
Avatar billede ahv Nybegynder
19. juni 2003 - 11:30 #8
Du kan faktisk godt lave den uden echo og <? ?> prøv med ->
eval("echo". $row['felt'].";");

Så kan du ellers bare skrive der ud af i tabelfeltet ->

Hej <h1>$navn</h1> osv. osv.
Avatar billede tobias_louv Nybegynder
19. juni 2003 - 15:50 #9
Når jeg har skrevet:

if ($side_indhold) {
$skriv_side_indhold = mysql_query("SELECT `html` FROM `side_indhold` WHERE `id` = $side_indhold", $db);
while($vis_side_indhold = mysql_fetch_row($skriv_side_indhold)) {
  echo eval($vis_side_indhold[0]);
};

(Jeg får $side_indhold fra stien)

får jeg denne meddelse:

Parse error: parse error in c:\apache\htdocs\home\menu\test_forside.php(11) : eval()'d code on line 1
Avatar billede phpgris Nybegynder
19. juni 2003 - 15:52 #10
Aha. Og hvad står der i $vis_side_indhold[0]?
Avatar billede tobias_louv Nybegynder
19. juni 2003 - 15:54 #11
Du mener i database ik'? Så:

<?
$antaljokes = mysql_query("SELECT count(*) FROM `jokes` WHERE 1", $db);
$skrivjokeantal = mysql_fetch_row($antaljokes);
$jokess = mysql_query("SELECT `overskrift`,`joke` FROM `jokes` WHERE 1 ORDER BY `id` ASC LIMIT $jok, 1", $db);
while ($joke = mysql_fetch_row($jokess)) {
?><table width="250px" border="0" cellspacing="2" cellpadding="2">
<tr>
  <td width="50%" align="left" valign="top" nowrap>
  <p class="jokes"><?
if($jok != 0) {
?><a href='java script:SkiftJok("<?
echo $jok - 1;
?>")'>Forrige joke</a><?
};
?></p>
  </td>
  <td width="50%" align="right" valign="top">
  <p class="jokes"><?
if($jok != $skrivjokeantal[0] - 1) {
?><a href='java script:SkiftJok("<?
echo $jok + 1;
?>")'>N&aelig;ste joke</a><?
};
?>
</p>
  </td>
</tr>
<tr>
  <td width="100%" align="left" valign="top" colspan="2">
  <p class="jokes">
    <b>
    <?echo nl2br("$joke[0]");?>
    </b>
  </p>
  </td>
</tr>
<tr>
  <td width="100%" align="left" valign="top" colspan="2">
  <p class="jokes">
    <?echo nl2br("$joke[1]");?>
  </p>
  </td>
</tr>
</table>
<?
};
?>
Avatar billede ztyxx Nybegynder
19. juni 2003 - 15:54 #12
dit indhold i tabellen må IKKE have <?php  ?> tags´ne
Avatar billede ahv Nybegynder
19. juni 2003 - 15:55 #13
eval("echo ".$vis_side_indhold[0].";");
Avatar billede ztyxx Nybegynder
19. juni 2003 - 15:56 #14
du skal fjerne den første <? og den sidste ?>
sådan:

$antaljokes = mysql_query("SELECT count(*) FROM `jokes` WHERE 1", $db);
$skrivjokeantal = mysql_fetch_row($antaljokes);
$jokess = mysql_query("SELECT `overskrift`,`joke` FROM `jokes` WHERE 1 ORDER BY `id` ASC LIMIT $jok, 1", $db);
while ($joke = mysql_fetch_row($jokess)) {
?><table width="250px" border="0" cellspacing="2" cellpadding="2">
<tr>
  <td width="50%" align="left" valign="top" nowrap>
  <p class="jokes"><?
if($jok != 0) {
?><a href='java script:SkiftJok("<?
echo $jok - 1;
?>")'>Forrige joke</a><?
};
?></p>
  </td>
  <td width="50%" align="right" valign="top">
  <p class="jokes"><?
if($jok != $skrivjokeantal[0] - 1) {
?><a href='java script:SkiftJok("<?
echo $jok + 1;
?>")'>N&aelig;ste joke</a><?
};
?>
</p>
  </td>
</tr>
<tr>
  <td width="100%" align="left" valign="top" colspan="2">
  <p class="jokes">
    <b>
    <?echo nl2br("$joke[0]");?>
    </b>
  </p>
  </td>
</tr>
<tr>
  <td width="100%" align="left" valign="top" colspan="2">
  <p class="jokes">
    <?echo nl2br("$joke[1]");?>
  </p>
  </td>
</tr>
</table>
<?
};
Avatar billede tobias_louv Nybegynder
19. juni 2003 - 15:58 #15
Den giver denne fejl:
Parse error: parse error, expecting `','' or `';'' in c:\apache\htdocs\home\menu\test_forside.php(11) : eval()'d code on line 1
både med og uden de sidste <? ?>
Avatar billede tobias_louv Nybegynder
19. juni 2003 - 15:58 #16
jeg mente den første <? og den sidste ?>
Avatar billede ahv Nybegynder
19. juni 2003 - 15:59 #17
eval($vis_side_indhold['0']);
Avatar billede tobias_louv Nybegynder
19. juni 2003 - 16:01 #18
Så får jeg denne igen:..
Parse error: parse error in c:\apache\htdocs\home\menu\test_forside.php(11) : eval()'d code on line 1
Avatar billede ahv Nybegynder
19. juni 2003 - 16:03 #19
Hvorfor ønsker du egetnlig at have en hle side i databasen? Hvis du hele tiden skal hente siden ud vil det da give et enormt pres på databasen, jeg kunne forstå hvis du ønskede at have dit indhold der i, men ikke hele siden.

Hvad indeholder dit script med eval funktionen nu og hvad indeholder feltet i tabellen?
Avatar billede tobias_louv Nybegynder
19. juni 2003 - 16:05 #20
Det er kun indholdet jeg henter ud af databasen
scriptet er en tester, så jeg ikke laver en masse rod i det oprindelige
hvad feltet i databasen angår er det en jokearray
Avatar billede ahv Nybegynder
19. juni 2003 - 16:06 #21
Ja, men hvad indeholder det? Det er ikke så nemt at gætte sig til.
Avatar billede ahv Nybegynder
19. juni 2003 - 16:07 #22
Kan du ikke poste her præcis hvad der er i det felt, det ser ud som om fejlen lægger der nemlig.
Avatar billede tobias_louv Nybegynder
19. juni 2003 - 16:08 #23
jeg er ikke helt med, du mener alt hvad der er i feltet eller det brugeren får at se?
Avatar billede ztyxx Nybegynder
19. juni 2003 - 16:09 #24
fremfor at have dine phpsider i en database, bør du nok overveje at opbygge dine sider med moduler og includering af sider med den slags koder i istedet, netop som ahv siger, vil det give et stort pres på databasen
Avatar billede ahv Nybegynder
19. juni 2003 - 16:10 #25
Ja, hvad indeholder feltet i tabellen?
Avatar billede tobias_louv Nybegynder
19. juni 2003 - 16:11 #26
Det er var også sådan jeg startede, men nu vil jeg lægge indholdet ind i databasen...

Hvad feltet indholder er det:

$antaljokes = mysql_query("SELECT count(*) FROM `jokes` WHERE 1", $db);
$skrivjokeantal = mysql_fetch_row($antaljokes);
$jokess = mysql_query("SELECT `overskrift`,`joke` FROM `jokes` WHERE 1 ORDER BY `id` ASC LIMIT $jok, 1", $db);
while ($joke = mysql_fetch_row($jokess)) {
?><table width="250px" border="0" cellspacing="2" cellpadding="2">
<tr>
  <td width="50%" align="left" valign="top" nowrap>
  <p class="jokes"><?
if($jok != 0) {
?><a href='java script:SkiftJok("<?
echo $jok - 1;
?>")'>Forrige joke</a><?
};
?></p>
  </td>
  <td width="50%" align="right" valign="top">
  <p class="jokes"><?
if($jok != $skrivjokeantal[0] - 1) {
?><a href='java script:SkiftJok("<?
echo $jok + 1;
?>")'>N&aelig;ste joke</a><?
};
?>
</p>
  </td>
</tr>
<tr>
  <td width="100%" align="left" valign="top" colspan="2">
  <p class="jokes">
    <b>
    <?echo nl2br("$joke[0]");?>
    </b>
  </p>
  </td>
</tr>
<tr>
  <td width="100%" align="left" valign="top" colspan="2">
  <p class="jokes">
    <?echo nl2br("$joke[1]");?>
  </p>
  </td>
</tr>
</table>
<?
};
Avatar billede tobias_louv Nybegynder
19. juni 2003 - 16:12 #27
(det virkede indtil jeg lagde det ind i databasen)
Avatar billede ahv Nybegynder
19. juni 2003 - 16:13 #28
Som sagt, jeg anbefaler kraftigt, du vemder tilbage og kun lægger teksten i databasen ikke nogle php koder, gerne variabler fra php, men ikke hele sider, det giver et alt for stort pres på databasen.
Avatar billede ahv Nybegynder
19. juni 2003 - 16:13 #29
Hvilke fordele giver det dig at hele siden er i databasen?
Avatar billede tobias_louv Nybegynder
19. juni 2003 - 16:16 #30
Det er som sagt kun indholdet jeg lægger i databasen.
På denne side med jokes er jeg nåd til at lægge PHP, men hvis det ikke er mugligt må jeg prøve at finde på noget andet...
Avatar billede tobias_louv Nybegynder
19. juni 2003 - 16:17 #31
Det giver de fordele at jeg ikke behøver at oprætte filer, og også at jeg lærer noget af det. Jeg er næsten lige begyndt med PHP, og jeg sidder og eksperimentere lidt.
Avatar billede ahv Nybegynder
19. juni 2003 - 16:21 #32
Hvis det du postedet -> 19/06-2003 16:11:36 er det som er i tabellen, så er det hvertfald forkert strukturering som jeg vil sige du ikke lærer noget af.
Avatar billede tobias_louv Nybegynder
19. juni 2003 - 16:50 #33
Du havde ret i at fejlen lå i feltet og nu har jeg rettet det, og det virker...
Mange tak for hjælpen
Avatar billede ahv Nybegynder
19. juni 2003 - 16:51 #34
Det var så lidt.
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