eval von einer Variable oder nicht?

blck

Mitglied
Hallo,
ich verzweifel langsam:
Ich versuche folgende Variable per eval() irgendwie auszugeben. Das ganze sieht mitlerweile so aus:
PHP:
$tabelle =
"<table width='520px'>
      <tr>
       <td><h4> Verfasst am:$date um: $time</h4></td>
      </tr>
      <tr>
       <th colspan='2'>Thema: $thema
       <h4>aus: $bereich </h4></th>
      </tr>
      <tr>
      <td> $text </td>
      </tr>
     </table>";

       eval("\$tabelle = \"$tabelle\";");
Das funktioniert nur leider nicht, ich hoffe ihr seht den Fehler. Ja in $date,$time$thema$bereich,$text steht auch etwas drin, aber selbst wenn nicht müsste er mir ja wenigstens die Tabelle anzeigen.

MfG Blck
 
Wenn du doppelte Anführungszeichen verwendest, werden darin enthaltene Variablen bereits durch ihre Werte ersetzt.
 
Hallo,
danke für deine Antwort, d.h. ich muss um die Variablen einfach "$var" legen? Klammer ich sie dann nicht aus?
MFG Blck
 
mach doch einfach ma echo $tabelle, denn durch die " werden die Variablen im String automatisch ersetzt, wie Gumbo schon sagte
 
Hallo,
danke euch beiden, nach einem echo $tabelle wird die Tabelle zwar angezeigt, jedoch nicht der Inhalt der Variabeln. Jedoch zumbeispiel wenn man echo $thema macht. Dann wird der Inhalt vom $thema ausgegeben, d.h. sie sind gefüllt. Ich hab einen anderen Verdacht. ICh poste mal den ganzen Code um zu zeigen, was ich meine:
PHP:
$tabelle =
"<table width='520px'>
      <tr>
       <td><h4> Verfasst am:'$date' um: '$time'</h4></td>
      </tr>
      <tr>
       <th colspan='2'>Thema: '$thema'
       <h4>aus: '$bereich' </h4></th>
      </tr>
      <tr>
      <td> '$text' </td>
      </tr>
     </table>";


if ($_POST['wrapsearch'] == 1) {
 
 $entry = $_POST['wrapentry'];
 $entry = mysql_real_escape_string(htmlentities($entry));

 $search = mysql_query("SELECT bereiche.bereichname, thema, text, user, DATE_FORMAT(entrydate, \"%d.%m.%Y\"), TIME_FORMAT(entrydate, \"%H:%i\")
                        FROM eintrag join bereiche on eintrag.bereichid=bereiche.bereichid
                        WHERE entrydate like '%$entry%' OR eintrag.bereichid like '%$entry%' OR user like '%$entry%' OR text like '%$entry%'
                        ORDER BY entrydate DESC");
   while (list($bereich, $thema, $text, $user, $date, $time) = mysql_fetch_row($search)){
      echo $tabelle;
      echo mysql_error();
   }
 }
 else { 
   $search = mysql_query(" SELECT bereiche.bereichname, thema, text, user, DATE_FORMAT(entrydate, \"%d.%m.%Y\"), TIME_FORMAT(entrydate, \"%H:%i\")
                                                FROM eintrag join bereiche on eintrag.bereichid=bereiche.bereichid 
                                                ORDER BY entrydate DESC");
   while ((list ($bereich, $thema, $text, $user,$date, $time) = mysql_fetch_row ($search)) && ($i < 5)){
       echo $tabelle;
       echo mysql_error();
       $i++;
   }
 }
Kann es sein, dass die Variablen leer sind, weil $tabelle, vor dem füllen der Variablen definiert wird? Wahrscheinlich, oder? Wenn ja, wo definiere ich $tabelle dann?

MfG Blck
 
Zuletzt bearbeitet:
Zwar alles net so schön was du da hast, aber um dich ma net völlig durcheinander zu bringen:
Ja du hast recht, mach das $tabelle = "...."; einfach ma direkt vor die echos ;)
 
Hallo badmad
hehe glaub ich gerne, dass das alles nicht so toll ist. Der Punkt ist einfach, ich wolle mit dem $tabelle verhindern, das ich zwei tabelen pflegen muss und dachte: Super pack ich das in ne Variable geb die aus und schon läufts :)

MfG Blck

P.s. Bin Anfänger und für Tipps offen :D
 
wenn schon, dann maTT net mad xP
Wenn dus so machen willst, dann besorg dir entweder ein richtiges Template System, oder benutzt bei $tabelle ' dann werden die variablen net gleich ersetzt, und dann mit eval, das sollte gehen
 
Hallo,
bin leider erst jetzt dazu gekommen, es zu testen. Jetzt hat sich folgende Situation ergeben. ich habe die Variablen in ' ' gesetzt und dann
PHP:
       eval ("\$tabelle = \"$tabelle\"?>");
       echo $tabelle;
das getan. Jetzt wird die Tabelle auch angezeigt, nur leider stehen, anstatt der Variablenwerte nur die ' ' an bestimmten Stellen.

Kann ich die entsprechenden Werte noch irgendwie ins eval() mit einbinden oder gibt es eine andere Möglichkeit?

MfG Blck

P.S. Hab im vorigen Post, die Tabelle entsprechen neu angepasst ums es zu verdeutlichen.
 
Zurück