Ankündigung

Einklappen
Keine Ankündigung bisher.

Preis speichern (Komma in Punkt wandlen)

Einklappen

Neue Werbung 2019

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

  • Preis speichern (Komma in Punkt wandlen)

    Hi,

    ich hab ein Preiseingabefeld was in der Datenbank mit douple(10,2) angelegt ist.

    Das speichern klappt auch, insofern ich 9punkt99 eingeben.
    9komma99 bringt nach dem speichern nur noch 9.00 zurück

    Also greife ich den Post vor der Update ab und ändere den Post:

    strpos verwende ich, weil PHP schon eine Fehlermeldung bringt, wenn er mal kein Punkt gefunden hat

    PHP-Code:
        if (strpos($_POST['price'], '.') === true)
        
    $_POST['price'] = preg_replace(',','.',$_POST['price']); 
    Leider bringt das ganze überhaupt nichts. Ich bekomme zwar nun keine Fehlermeldung ala preg_replace(): No ending delimiter ','... aber umgesetzt wird es auch nicht.

    Möchte ich nun wieder 9komma99 speichern erhalte ich danach wieder 9.00 zurück.

    Wo ist mein Fehler ?


  • #2
    PHP: str_replace - Manual
    http://hallophp.de

    Kommentar


    • #3
      preg_replace ist ein bisschen heftig für dein Vorhaben. Versuche es lieber mit str_replace.

      PHP-Code:
      str_replace(',''.'$_POST['price']) 

      Kommentar


      • #4
        Ich bekomme zwar nun keine Fehlermeldung ala preg_replace(): No ending delimiter ','...
        Das ist aber merkwürdig ? Hast nämlich keinen delimiter!
        "Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]

        Kommentar


        • #5
          Vielleicht ist
          Code:
          INSERT INTO `table` SET `column` = REPLACE('9,99', ',', '.')
          sogar noch etwas schicker!


          Gruß
          http://hallophp.de

          Kommentar


          • #6
            Ich bekomme zwar nun keine Fehlermeldung ala preg_replace(): No ending delimiter ','... aber umgesetzt wird es auch nicht.
            Komisch, ich bekomme die Warning.

            Kommentar


            • #7
              Ich bekomme zwar nun keine Fehlermeldung
              Vermutlich, weil Du mit einem Kommawert prüfst:
              PHP-Code:
               if (strpos($_POST['price'], '.') === true)
                  
              $_POST['price'] = preg_replace(',','.',$_POST['price']); 
              --

              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


              --

              Kommentar


              • #8
                hmm... mit nikosch hinweis konnte ich nicht wirklich was anfangen... hat mich aber nochmal dazu bewegt, die formel anzusehen...

                if (strpos($_POST['price'], '.') === true)

                Ich DAU... ich suche nach einen punkt... und wenn gefunden soll eine weiterverarbeitung erfolgen... die weiterverarbeitung soll dann ein , mit einen . ersetzen. Recht sinnfrei.

                Dann ist mir noch aufgefallen, das ich eine schließende klammer vergessen habe... aber PHP ist da anscheind recht flexibel und meckert nicht mal rum.

                Also: so siehts nun aus:

                PHP-Code:
                 if (strpos($_POST['price']), ',') === true)
                    
                $_POST['price'] = str_replace(',','.',$_POST['price']); 
                Trotz korrektem Code (würd ich jetzt mal behaupten wollen) klappt es immer noch nicht. Versteh ich irgendwie nicht

                Kommentar


                • #9
                  hmm... mit nikosch hinweis konnte ich nicht wirklich was anfangen..
                  Ich DAU... ich suche nach einen punkt.
                  Genau das habe ich doch (implizit) geschrieben. Und folglich erhältst Du natürlich keine Fehlermeldung. Trotzdem ist der Ausdruck falsch.


                  „klappt es immer noch nicht...“ ist keine sinnvolle Fehlerbeschreibung
                  --

                  „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                  Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                  --

                  Kommentar


                  • #10
                    PHP: strpos - Manual

                    Rückgabewert beachten...
                    Signatur:
                    PHP-Code:
                    $s '0048656c6c6f20576f726c64';
                    while(
                    $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

                    Kommentar


                    • #11
                      Dann ist mir noch aufgefallen, das ich eine schließende klammer vergessen habe...
                      Hast du nicht, jetzt ist eine zu viel da!

                      aber PHP ist da anscheind recht flexibel und meckert nicht mal rum.
                      Nein, nur wenn du nicht zuhörst.
                      Code:
                      <?php
                      error_reporting(E_ALL | E_STRICT);
                      http://hallophp.de

                      Kommentar


                      • #12
                        Mach doch einfach:

                        PHP-Code:
                        $price $_POST['price'];
                        $price str_replace(',''.'$price); 
                        Dann ist es völlig egal, ob der User "10,00" oder "10.00" eingibt.

                        Kommentar


                        • #13
                          Warum nicht gleich:
                          PHP-Code:
                          $price str_replace(',''.'$_POST['price']); 
                          --

                          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                          --

                          Kommentar


                          • #14
                            Darf ich einmal einen ganz anderen Punkt einwerfen? Meines Wissens nach speichert man Geldbeträge immer als Ganzzahlen, weil bei Gleitkommazahlen die Gefahr von internen Rundingsfehlern zu groß ist!

                            Kommentar


                            • #15
                              @ nikosch

                              Ja, wieso eigentlich nicht


                              @ Sirke

                              Wie willst du einen Betrag von bspw. 99,99 € als Ganzzahl speichern


                              Wo wir gerade bei Rundungsfehlern sind ... der MySQL-Datentyp decimal ist double zu bevorzugen, gerade bei Währungen.

                              Kommentar

                              Lädt...
                              X