Prozentrechnung mit PHP

  • Hallo Leute,

    eine kurze Frage.Wenn ich über ein Formular Werte in eine DB übergebe so in etwa wie " Hr.Meier hat 10 Äpfel gekauft für 5 €." Im Formular hab ich 3 Radiobuttons mit 50% 70% und 80%.
    Mit diesen übergebe ich in DB endpreis in Spalte prozente aber keine Zahlen sondern a ,b und c.
    Kann ich damit rechnen?
    Also so in etwa WENN DB endpreis.Spalte prozente == a DANN gib mir vom Endpreis nur 50% aus

    Entschuldigt wenn diese Frage vieleicht etwas blöd klingt aber kann da jemand helfen?

  • Warum arbeitest du den nicht mit richtigen Werten (also FLOAT)? Macht doch viel mehr Sinn.
    Und wenn es halt nur diese 3 Werte geben soll, dann verwende ein ENUM()-Feld anstelle eines CHAR oder VARCHAR.

    Zurückgeben kannst du dann, wenn du das umbedingt mit MySQL machen willst dann die Werte wie folgt:

    SQL
    SELECT (endpreis * prozent) AS endpreis ...

    ggf. müssen die Namen angepasst werden

  • Hallo Sarkkan,

    danke für die schnelle Antwort. :)
    Also ich bin relativ neu auf dem Gebiet MySQL und PHP.Studiere zwar grad WebDesign aber diese Dinge liegen noch in weiter ferne.
    Du meinst ich soll aus meinem VARCHAR ein ENUM machen? Was macht dieses?

    Liebe Grüsse

  • In einem ENUM-Feld kann man nicht einfach jeden Wert speichern, sondern nur vordefinierte Werte.
    Außerdem ist ENUM weitaus schneller auszulesen, da MySQL intern da nur mit einem Index wie bei Arrays arbeitet, aber das muss dich vorerst nicht interessieren :D

    Allerdings ist ein ENUM-Feld genau wie ein VARCHAR-Feld ein String-Feld. Was spricht den dagegen die Werte Klartext da rein zu packen? =/

  • Meine Lebensgefährtin... :P war ein Scherz....

    Also das Problem ist, das ich 2 Tabellen in einer Datenbank habe. In eine Tabelle füge ich Namen , Vorname, Firma und erbrachte Leistung ein.Ausserdem kann ich mit den Radiobuttons sagen,dass ich davon 50%, 70% oder 80% berechne. In der 2.Tabelle stehen sämtliche Firmen mit den Leistungen und zugehörigen Preisen.
    Wenn ich jetzt einen Eintrag mache, wird dieser automatisch in Tabelle 1 eingetragen, ausgelesenen und angezeigt, dabei hab ich beide Tabellen verknüpft damit mir auch der richtige Preis für die bestimmte Leistung der Firma angezeigt wird.Das funktioniert auch soweit alles ganz gut.
    Und jetzt ist halt das Problem, dass beide Preise angezeigt werden MÜSSEN. Der reguläre Preis und der Preis abzüglich der Prozente.Und da steck ich gaaaaanz tief fest.

    Hier mal mein Script

  • SQL
    SELECT 
        -- * ist BÖSE! xD
        `user`.`id`, `user`.`name`, `user`.`prozent`, ...
        `firmen`.`id`, `firmen`.`name`, `firmen`.`preis`, ...
        (`user`.`prozent` * `firmen`.`preis`) AS tarif
    LEFT JOIN 
        ...

    Entweder du machst das so und bekommst dann in dem index ['tarif'] den Wert (bei Kommazahlen (float) in prozent), oder du stellst die Berechnungen mit PHP an. Wie gesagt, du solltest halt nur die Werte am besten im Klartext in die Tabellen schreiben.

    Übrigens:
    In PHP unterscheidet man in folgende (Haupt-)Typen:
    -> String
    -> Integer
    -> Float
    -> Boolean
    -> Object
    -> NULL
    NUR Strings brauchen " (doppelte Anfürhungszeichen) oder ' (einfache Anführunszeichen).
    Alles andere schreibt man ohne. PHP kann zwar auch Strings mit Zahlen addieren und so, aber hier "castet" PHP, also wandelt zur Laufzeit die Werte um, wenn er sieht das es nicht passt.
    Nachteil: Es verlangsamt deine Scripte sehr und zeugt von schlechtem Programmierstil.

  • Das werd ich mir mal gleich zu Herzen nehmen und merken. Möcht ja kein schlechter Webdesigner werden. :D
    Werd das mal gleich ausprobieren. Und wie würde es mit PHP zu machen sein? Dachte da eventuell an eine IF Bedingung? Oder lieg ich da falsch.

  • Zitat von "aepha79"

    Das werd ich mir mal gleich zu Herzen nehmen und merken. Möcht ja kein schlechter Webdesigner werden. :D
    Werd das mal gleich ausprobieren. Und wie würde es mit PHP zu machen sein? Dachte da eventuell an eine IF Bedingung? Oder lieg ich da falsch.

    Entweder mittels if oder switch, wenn du umbedingt bei deinen Buchstaben bleiben willst, oder eben auch mit Klartext-Werten:

    PHP
    <span class="syntaxdefault"></span><span class="syntaxkeyword">--</span><span class="syntaxdefault"> MySQL Tabelle<br /> user</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">prozent </span><span class="syntaxkeyword">|</span><span class="syntaxdefault"> firma</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">preis<br /></span><span class="syntaxkeyword">----------------------------<br /></span><span class="syntaxdefault">     0.5      </span><span class="syntaxkeyword">|</span><span class="syntaxdefault">     100<br />     0.7      </span><span class="syntaxkeyword">|</span><span class="syntaxdefault">     333<br />     0.8      </span><span class="syntaxkeyword">|</span><span class="syntaxdefault">     500<br /></span><span class="syntaxkeyword">--</span><span class="syntaxdefault"> MySQL Tabelle Ende<br /><br /><br /><br /></span><span class="syntaxcomment">/* PHP - Code */<br /></span><span class="syntaxkeyword">while((</span><span class="syntaxdefault">$row </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> mysql_query</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$query</span><span class="syntaxkeyword">))</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">!==</span><span class="syntaxdefault"> false</span><span class="syntaxkeyword">){<br /></span><span class="syntaxdefault">    echo </span><span class="syntaxstring">'<br />        <p><br />            Preis den der Kunde wünschte: '</span><span class="syntaxkeyword">.(</span><span class="syntaxdefault">$row</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'preis'</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">*</span><span class="syntaxdefault"> $row</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'prozent'</span><span class="syntaxkeyword">]).</span><span class="syntaxstring">'€<br />        </p><br />    '</span><span class="syntaxkeyword">;<br />}<br /><br /><br /></span><span class="syntaxcomment">/* PHP - Code Ende */ </span><span class="syntaxdefault"></span>

    Dies ist nur ein Code-Ausschnitt und wir so sehr wahrscheinlich keine Ergebnisse erzielen sondern soll dir nur grob eine Vorstellung geben wie das ganze Funktioniert,...

  • Also ich hab jetzt umgestellt auf Klartext.Nur kommt jetzt leider nur noch 0 an in der DB.Egal ob ich 50% 70% oder 80% angewählt hab.
    Hmmmm.....

  • Edit...
    War mein fehler.Jetzt kommt an 0,5 ; 0,7 und 0,8 und jetzt werd ich mal gucken ob ich damit was machen kann. :D
    Feldtyp ist jetzt Float.

    Danke Dir erstmal recht herzlich. :P

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!