eval problem in php

Dieses Thema im Forum "Ruby, php, Perl, Python ..." wurde erstellt von blck, 15.03.2009.

  1. blck

    blck Routinier

    Dabei seit:
    15.01.2007
    Beiträge:
    268
    Zustimmungen:
    0
    Hallo,
    ich hab ein Problem mit eval(). Und zwar wird
    PHP:
      $while 'while (list ($bereich, $thema, $text, $date, $time) = mysql_fetch_row ($search)){ echo $tabelle; echo mysql_error(); $i++;}';
    später mit
    PHP:
    eval($while);
    ausgeführt, wobei $tabelle so aussieht:
    PHP:
     $tabelle =
        "<table width='520px'>
          <tr>
           <td><h4> Verfasst am: <?echo $date;?> um: <?echo $time;?></h4></td>
          </tr>
          <tr>
           <th colspan='2'>Thema: <?echo $thema;?>
           <h4>aus: <? echo $bereich;?></h4></th>
          </tr>
          <tr>
          <td> <? echo $text;?> </td>
          </tr>
         </table>";
    So das Problem ist jetzt, das die Tabelle zwar angezeigt wird, sogar mehrmals nur leider in keiner Spalte/Zeile etwas steht. Ist das erste Mal, dass ich mit eval() arbeite, wird also wahrscheinlich nur ein kleiner Fehler sein:think:

    MfG Blck
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Gott_in_schwarz, 16.03.2009
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    Vorweg: gibts in php kein Block-Eval? (In contrast to string eval.)

    Ich versuche mal die semantische Auflösung deiner Aussage zu verfeinern:
    zerfällt zu:
    dies kann man noch weiter von unnötigem linguistischen Ballast befreien, sodass die Endaussage
    übrigbleibt.

    Wenn das dein Problem ist, was hat eval damit zu tun?
    Wenn das nicht dein Problem ist, zeige mir bitte genau an welcher Stelle ich dich falsch verstanden hab.
    Kthxbye
     
  4. blck

    blck Routinier

    Dabei seit:
    15.01.2007
    Beiträge:
    268
    Zustimmungen:
    0
    Hallo,
    ja ansich ist das vollkommen richtig. Die Tabelle ist leer bzw. wird leer ausgegeben. Jedoch soll die while-Schleife, die die Tabelle füllen soll, per eval() ausgeführt(siehe Code-Strings). Es gibt also, denke ich mal, zwei Möglichkeiten:
    1) Die while-Schleife wird nicht richtig ausgeführt und so die Variablen, die in der Tabelle stehen, nicht gefüllt.
    2) Die while-Schlleife wird richtig ausgeführt, allerdings wäre dann in der Tabellenausgabe etwas falsch formuliert.

    MfG Blck

    P.S.: Was bitte ist ein Blockeval :D
     
  5. #4 Gott_in_schwarz, 16.03.2009
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    Code:
    Was bitte ist ein Blockeval
    In perl gibts zwei Arten ein eval auszuführen, string- und blockeval:
    Code:
    my $code = '5 / 0';
    my $ergebnis = eval $code     # runtime error
    my $ergebnis = eval { 5 / 0 } # compile time error
    Wenn der code Konstant (== zur Kompilierzeit bekannt) ist, ist ein Blockeval in jedem Fall vorzuziehen.
    In deinem Fall würde ich das auch sagen, da sich der eval-Code ja generell nicht zu ändern scheint.

    Eine Frage: warum überhaupt eval?


    Ich glaube das könntest du sehr einfach debuggen: schau dir den Inhalt von $tabelle (und am Besten auch von den anderen Variablen) an. (Direkt, ohne einen Browser dazwischen..)


    Ne, ansich hab ich da ziemliche Scheiße geredet. Ich wollt dich nur dazu bewegen etwas spezifischer zu werden. (Zum Beispiel: was steht genau in $tabelle drin, nicht was macht der Browser daraus (eine leere Tabelle..))
     
  6. blck

    blck Routinier

    Dabei seit:
    15.01.2007
    Beiträge:
    268
    Zustimmungen:
    0
    Hallo,
    eval() aus dem Grund, dass sich die while-schleife ändert, je nach gegebener Option, d.h. entweder steht in der while-schleife
    PHP:
    $while 'while (list ($bereich, $thema, $text, $date, $time) = mysql_fetch_row ($search)&&($i<5)){ echo $tabelle; echo mysql_error(); $i++;}';  
    oder es steht
    PHP:
    $while 'while (list ($bereich, $thema, $text, $date, $time) = mysql_fetch_row ($search)){ echo $tabelle; echo mysql_error();}';  
    drin. Wobei $tabelle immer gleich bleibt!
    Um nicht zwei Tabellen, je nach while-Schleife zu pflegen, habe ich die while-schleifen extra gepackt und $tabelle als Tabelle gesetzt. Die Tabelle beinhaltet normalerweise soetwas wie Datum/Zeit oder Text.

    Vielleicht ist das ganze Konstrukt jetzt etwas deutlicher :)

    MfG Blck
     
  7. blck

    blck Routinier

    Dabei seit:
    15.01.2007
    Beiträge:
    268
    Zustimmungen:
    0
    Hab jetzt mal getestet ob es ohne
    PHP:
    <? echo $var ?>
    in der Tabelle funktioniert, tut es leider auch nicht!

    MfG Blck
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  9. Dizzy

    Dizzy Brain Damage

    Dabei seit:
    02.05.2007
    Beiträge:
    857
    Zustimmungen:
    0
    Ort:
    Graz
    Hm, wird aus der DB auch sicher was ausgelesen?
     
  10. #8 blck, 17.03.2009
    Zuletzt bearbeitet: 17.03.2009
    blck

    blck Routinier

    Dabei seit:
    15.01.2007
    Beiträge:
    268
    Zustimmungen:
    0
    Hallo,
    vor dem "Umstellen" auf eval() haben beide while-Schleifen wunderbar gearbeitet. Ich denke mal, dass ich jetzt bei eval() irgendeine Kleinigkeit übersehen habe, denn die while-Schleifen habe ich nicht geändert, nur in den eval() gepackt.

    MfG Blck

    P.S. Ich werd mal probieren ob die while-Schleifen so wie sie jetzt sind arbeiten, wenn ich sie direkt, also ohne eval() ausführe, arbeiten.

    EDIT
    Der erste Fehler waren die While-Schleifen, jetzt weiß ich nicht, wie ich die Tabelle anzeigen lassen kann, per eval() oder einfach per echo? Entschuldigung für die vielen Edits.
     
Thema:

eval problem in php

Die Seite wird geladen...

eval problem in php - Ähnliche Themen

  1. 9.0 Live-eval config.problem

    9.0 Live-eval config.problem: Also ich bin immer noch ein Newbie in sachen linux. Habe gerade suse9.o live-eval installiert und läuft auch recht gut netz,tv etc. das einzige...
  2. »Medieval II: Total War Collection« für Linux vorgestellt

    »Medieval II: Total War Collection« für Linux vorgestellt: »Medieval II: Total War Collection« wird in dieser Woche für Linux und Mac OS X veröffentlicht. Der vierte Teil der Strategieserie verlagert die...
  3. »Chivalry: Medieval Warfare« kommt für Linux

    »Chivalry: Medieval Warfare« kommt für Linux: Wie die Entwickler des kanadischen Hauses »Torn Banner Studios« bekannt gaben, soll bereits in Kürze eine Linux-Version des Actionspiels...
  4. "send: Cannot determine peer address" nach Timeout mit UDP Server -Perl Socket eval{}

    "send: Cannot determine peer address" nach Timeout mit UDP Server -Perl Socket eval{}: Mahlzeit, ich habe ein kleines Problem und würde mich über eure Mithilfe freuen! Folgender UDP-Server soll nach einem Timeout über eval{}...
  5. PHP IRC Bot pbot eval() Remote Code Execution

    PHP IRC Bot pbot eval() Remote Code Execution: This Metasploit module allows remote command execution on the PHP IRC bot pbot by abusing the usage of eval() in the implementation of the .php...