[Variablen] Berechnung mit Operatoren aus Datenbank/Variablen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [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

    Kommentar


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

      Gruß
      Uzu

      private Homepage

      Kommentar


      • #4
        edit geht bei mir ja nicht

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

        Gruß
        Uzu

        private Homepage

        Kommentar


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

          Kommentar


          • #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

            Kommentar


            • #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

              Kommentar


              • #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

                Kommentar


                • #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

                  Kommentar


                  • #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

                    Kommentar

                    Lädt...
                    X