[Variablen] Berechnung mit Operatoren aus Datenbank/Variablen

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [Variablen] Berechnung mit Operatoren aus Datenbank/Variablen

    Hallo,

    bevor ich mein kleines Problem beschreibe - ich habe gesucht Hab allerdings nichts passendes gefunden - leider.

    Ich möchte eine Berechnung durchführen lassen, alle Werte und Operatoren sind dabei in einer Datenbank gespeichert. Am besten lässt sich das wohl mit der Errechnung eines Lagerbestandes erklären. In dem Fall gibt es die Operatoren + und -.

    In der Datenbank wären also die Einträge wie folgt:
    ID1 :: Produkt 1 :: Operator + :: Menge 100
    ID2 :: Produkt 1 :: Operator + :: Menge 200
    ID3 :: Produkt 1 :: Operator - :: Menge 250

    Die Berechnung ist ja recht einfach. Ich möchte das jedoch wie folgt machen:

    $bestand = $bestand . $operator . $menge;

    Beispiel: $bestand = 0 + 100;

    Die Formel wird jedoch als String gesehen und ergibt daher "0+100". Meine Frage ist nun, was muss ich machen, dass PHP dies als Berechnung umsetzt?

    Ich habe auch schon bei php.net gesucht, wahrscheinlich jedoch mit den falschen Suchbegriffen. Es wäre schön, wenn ihr mir helfen könnt. Sonst nehme ich die alternative Methode

    Vielen Dank im Voraus

  • #2
    [PHP]
    if ($operator == "+") {
    $bestand = $bestand + $wert;
    } elseif ($operator == "-") {
    $bestand = $bestand - $wert;
    }
    [PHP]
    Gruß
    Uzu

    private Homepage

    Comment


    • #3
      PHP Code:
      if ($operator == "+") {
         
      $bestand $bestand $wert;
      } elseif (
      $operator == "-") {
         
      $bestand $bestand $wert;

      Gruß
      Uzu

      private Homepage

      Comment


      • #4
        edit geht bei mir ja nicht

        PHP Code:
        if ($operator == "+") {
           
        $bestand $bestand $wert;
        } elseif (
        $operator == "-") {
           
        $bestand $bestand $wert;

        Gruß
        Uzu

        private Homepage

        Comment


        • #5
          ja danke für den hinweis, das ist genau die form, die ich nicht unbedingt nutzen wollte

          Comment


          • #6
            Schau dir mal eval() an.
            Ich frage mich allerdings, warum du die Form, die dir empfohlen wurde (die auch durchaus empfehlenswerter ist als das, was du zu planen scheinst) nicht nutzen und stattdessen Menge, Operator usw., die ohnehin atomar vorliegen, erstmal zusammenketten möchtest?

            Grüße
            Nieder mit der Camel Case-Konvention

            Comment


            • #7
              eval() hab ich schon probiert, funktionierte aber nicht.

              Warum ich das so machen will - ich hab die Operatoren jeweils in der Datenbank gespeichert und wollte mir dir if-abfragen sparen. Wenn es nicht geht, dann nicht Dann kommt halt IF zur Anwendung

              Comment


              • #8
                eval() hab ich schon probiert, funktionierte aber nicht.
                Wenn das mit eval() nicht geht, hast du was falsch gemacht!
                Aber schon gut.... verzichte besser auf das mächtige eval().
                Wir werden alle sterben

                Comment


                • #9
                  Original geschrieben von DasUNBEKANNTe
                  eval() hab ich schon probiert, funktionierte aber nicht.
                  [list=1][*]«Funktionierte nicht» ist keine Fehlerberschreibung[*]Hast du halt falsch probiert[*]Könntest du wenigstens den entsprechenden Code zeigen[/list=1]Falls es allerdings nur zwei Operatoren gibt, ist die andere Version definitiv die bessere.
                  Gruss
                  H2O

                  Comment


                  • #10
                    Mal ne ganz banale Sache: Ich würde mir in solchen Situationen (und das ist jetzt reine Stilsache) das ganze If-Gedöns ohnehin sparen.
                    PHP Code:
                    // Beispiel anhand einer Rechenoperation

                    switch ($operator)
                    {
                        case 
                    '+':
                            
                    $result $a $b;
                            break;

                        case 
                    '-':
                            
                    $result $a $b;
                            break;

                        case 
                    '*':
                            
                    $result $a $b;
                            break;

                        default:
                            die(
                    sprintf('Unknown operator %s'$operator));

                    Nieder mit der Camel Case-Konvention

                    Comment

                    Working...
                    X