Avatar billede teknikeren Nybegynder
28. november 2006 - 09:13 Der er 7 kommentarer og
1 løsning

PHP fra database (Generelt PHP fra variabler)

Hej Eksperten.

Jeg er ved at lave et lille CMS-system. Jeg lagrer mine data i en database, som jeg derved henter med "id" i en get-variabel.

while ($i < $num) {
        $conid=mysql_result($result, $i, 'id');
        $content=mysql_result($result, $i, 'content');
       
        if ($acid == $conid) {
        break;       
        } else {
        $content="";
        $i++;
        }       
        }
        echo "$content";
       
        if ($content == "") {
        echo "Page not found.";
        }

MEN! I min $content variabel ligger der noget PHP-script. Dette bliver ikke eksekveret, men bliver bare parset som HTML-kommentarer. Hvordan får jeg serveren til at eksekvere PHP-scriptet? Har søgt diverse steder, og har også prøvet eval('?>'.$content.'<?php');, men der får jeg simpelthen bare fejlen:

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /hsphere/local/home/xxxxxx/xxxx/xxxxx/index.php(105) : eval()'d code on line 1
Avatar billede coderdk Praktikant
28. november 2006 - 09:38 #1
Hmm det ser ud som om du looper igennem dit resultset for at finde en record med den id, hvorfor ikke bare lave en select?

$sql = sprintf( "SELECT * FROM tabel WHERE id = %d", $acid );
$result = mysql_query( $sql ) or die( mysql_error() );
if ( $row = mysql_fetch_assoc( $result ) )
{
  eval("?>$row[content]");
}
else
{
  echo "Page not found";
}
Avatar billede teknikeren Nybegynder
28. november 2006 - 09:48 #2
Virker ikke :/ Lige et sidespørgsmål, hvad gør "sprintf"?
Avatar billede coderdk Praktikant
28. november 2006 - 09:59 #3
Hvad virker ikke? Prøv at skifte eval-linjen ud med echo $row['content']; Så burde den fungere som den du har lavet.

sprintf laver en formatteret streng, f.eks.:

$sql = sprintf( "SELET * FROM medarbejdere WHERE navn = '%s'"
                ,mysql_real_escape_string( $_POST['navn'] )
              );

%s er streng %d er tal osv. http://dk.php.net/sprintf
Avatar billede teknikeren Nybegynder
28. november 2006 - 10:37 #4
Får stadig den samme fejl med eval();.
Avatar billede teknikeren Nybegynder
28. november 2006 - 11:01 #5
Fides der ikke andre funktioner end eval();?
Avatar billede coderdk Praktikant
28. november 2006 - 15:39 #6
Det må være koden i content det er galt med, hvad indeholder koden?
Avatar billede teknikeren Nybegynder
28. november 2006 - 16:03 #7
Der lavde jeg sku en bummer. havde slet ikke tænkt på indholdet af $content - fuck hvor pinligt :P Smid et svar, det virker nu (;
Avatar billede coderdk Praktikant
28. november 2006 - 16:14 #8
hehe ok :)
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