[PHP] Verstehe Fehlermeldung nicht!!!



  • <?php
    
    if($_POST['string'])
    {
    
     $string = $_POST['string'];
     $persons = $_POST['children'] + $_POST['adults'];
    
     $transform_vars = array(
                             "PERSONS" => "\$persons",
                             "CHILDREN" => "\$_POST['children']",
                             "ADULTS" => "\$_POST['adults']",
                             "PRICE_PRO_PERSON" => "\$price_person",
                             "PRICE_PRO_CHILD" => "\$price_child",
                             "PRICE_PRO_PERSON" => "\$price_person"
                            );
    
     foreach($transform_vars as $key => $value)
     {
       $string = str_replace($key, $value, $string);
     }
    
     $orders = explode("|", $string);
    
     foreach($orders as $order)
     {
      if($str = strstr($order, "IF[")) //Wenn ein if gefunden wurde
      {
       $str = strstr($str, "[");
       $str = substr($str, 1);
       $pos = strpos($str, "]");
       $exp = substr($str, 0, $pos);
    
       if(e_val($exp))
       {
         $str = strstr($order, "]");
         $str = substr($str,1);
         $pos = strpos($str, "ENDIF");
         $exp = substr($str, 0, $pos);
         e_val($exp.";");
    
       }  
     }
    
    }
    
    } 
    
    ?>
    

    Bekomme eine Fehlermeldung bei e_val:
    Parse error: parse error, unexpected $ in C:\FoxServ\www\booking\mm\calculate.mp.php4(42) : e_val()'d code on line 1

    Kann mir jemand sagen, was ich falsch mache?
    MfG

    Tobsen

    Edit: $_POST['string'] = IF[PERSONS > 5] PRICE_PRO_PERSON = 5 ENDIF

    [ Dieser Beitrag wurde am 18.06.2003 um 19:42 Uhr von Tobsen editiert. ]



  • Wieso maskierst du in $transform_vars die $ Zeichen? Du willst doch sicher die Werte eisetzen, oder 😕 Also ich meine so:

    $transform_vars = array(
                             "PERSONS" => $persons,
                             "CHILDREN" => $_POST['children'],
                             "ADULTS" => $_POST['adults'],
                             "PRICE_PRO_PERSON" => $price_person,
                             "PRICE_PRO_CHILD" => $price_child,
                             "PRICE_PRO_PERSON" => $price_person
                            );
    


  • Nein, nein..... das ist schon richtig so, dass muss so sein, da ich den "Pseudocode" der im Textfeld eingegeben wird in der Datenbank speichere und dort die Namen der Variablen gespeichert sein müssen, da später beim Einsatz des Codes mit diesen Variablen gearbeitet wird....
    das hier ist nur so 'ne Art Testscript.... aber das war ja auch noch keine Antwort auf mein eigentliches Problem....
    MfG

    Tobsen



  • Ok, habe durch Rumprobieren herausgefunden, dass die Fehlermeldung aufgrund folgenden Codestücks kam **if(e_val(exp))** . Die Fehlermeldung verschwindet, wenn man es folgendermaßen schreibt if (e_val(exp.";"); .... aber es funzt trotzdem net.... bin ratlos.... 😕

    btw: e_val bitte ohne den unterstrich denken. Das Forum erlaubts net auszuschreibn.....



  • ich hab grad mal ein wenig mit deinem Code rumgespielt und hab die Lösung gefunden:

    eval('$if_exp = ('.$exp.') ? true : false;');
    if($if_exp) { ... }
    


  • ja, dankeschön! 🙂



  • ich hab grad in der Doku gelesen, dass ab PHP 4 eval einen Wert zurückgeben kann. Damit sieht das Ganze nochmal etwas eleganter aus:

    if(eval('return ('.$exp.') ? true : false;')) { ... }
    

    merke gerade, dass es noch einfacher geht:

    if(eval('return ('.$exp.');')) { ... }
    

    [ Dieser Beitrag wurde am 19.06.2003 um 11:47 Uhr von flenders editiert. ]


Anmelden zum Antworten