Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Fehlermeldung beim Versenden von Gutscheinen

    Max2010

    • Neu im Forum
    • Beiträge: 13
    Fehlermeldung beim Versenden von Gutscheinen
    am: 02. August 2010, 20:58:08
    Hallo,

    beim Versenden von Gutscheinen (aus meinem Guthaben)  an Dritte bekomme ich folgende Fehlermeldung:

    Warning: preg_match() [function.preg-match]: Unknown modifier '.' in /homepages/35/d290981218/htdocs/xtcshop/gv_send.php on line 61
    Der Gutschein wird aber ordnungsgemäß verschickt.
    Könnt Ihr mir helfen woran das liegt?

    Danke für Hilfe.
    Beste Grüße Max



    Linkback: https://www.modified-shop.org/forum/index.php?topic=7074.0

    amimoto

    • Fördermitglied
    • Beiträge: 43
    Fehlermeldung beim Versenden von Gutscheinen
    Antwort #1 am: 09. September 2010, 22:30:14
    gv_send.php, Zeile 61:

    Code: PHP  [Auswählen]
    if (preg_match('/[^0-9/.]/', $gv_amount)) {

    ersetzen durch:

    Code: PHP  [Auswählen]
    if (preg_match('/[^0-9\.]/', $gv_amount)) {

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Fehlermeldung beim Versenden von Gutscheinen
    Antwort #2 am: 10. September 2010, 10:33:01
    Danke für den Hinweis, das wurde in r1300 von GTB in den trunk übermittelt.

    Grüße

    Torsten

    billybob

    • Fördermitglied
    • Beiträge: 563
    Re: Fehlermeldung beim Versenden von Gutscheinen
    Antwort #3 am: 18. August 2011, 16:27:20
    Hi Modifiers,

    habe diesen Fehler immer noch in 1.05 SP1a und zwar genau dann, wenn ich keinen Betrag im Feld Wert eingebe. (Kann ich im Demoshop nicht nachvollziehen, dort ist PHP 5.3.3, ich benutze 5.2.17)

    Unabhängig vom Fehler, verstehe ich aber den preg_match nicht.

    Dort steht:

    Code: PHP  [Auswählen]
    if (preg_match('/[^0-9/.]/', $gv_amount))

    Was m. W. bedeutet wenn dort keine (^) Zahl (0-9), kein Punkt und kein Slash steht.
    Welche Währung hat denn ein / im Betrag?

    Meines Erachtens wäre es viel sinnvoller auf:

    Code: PHP  [Auswählen]
    if ( !is_numeric($gv_amount) || $gv_amount == 0 ) {

    zu prüfen.

    Korrigiert mich, oder korrigiert es in den Quellen. :-)

    Gruß
    billybob

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.306
    • Geschlecht:
    Re: Fehlermeldung beim Versenden von Gutscheinen
    Antwort #4 am: 19. August 2011, 11:10:55
    Hi billybob,

    die Zeile im Trunk lautet so:

    Code: PHP  [Auswählen]
    if (preg_match('/[^0-9\.]/', $gv_amount)) {
      $error = true;
    }
     

    was dann heisst, wenn $gv_amount keine Zahl ist und keinen Punkt enthält ist hier ein Fehler !

    Der Backslash escaped den Punkt, mehr nicht.

    Gruss Gerhard

    billybob

    • Fördermitglied
    • Beiträge: 563
    Re: Fehlermeldung beim Versenden von Gutscheinen
    Antwort #5 am: 19. August 2011, 13:59:45
    Hi GTB

    [...]
    was dann heisst, wenn $gv_amount keine Zahl ist und keinen Punkt enthält ist hier ein Fehler !

    Der Backslash escaped den Punkt, mehr nicht.
    [...]

    stimmt, das sollte es heissen.
    Meines Wissens ist aber ein \ innerhalb einer character-Klasse [] ein Backslash und nicht ein Escape-Zeichen. Und ein Punkt ist ein Punkt. Punkt!  :-D Er muss also nichts escaped werden. Ausserhalb von [] ja, da steht der Punkt für ein beliebiges Zeichen, innerhalb nicht.
    [0-9.] Bedeutet Alle Ziffern und Punkt (quasi eine ODER-Bedingung). Das Dach ^ am Anfang negiert das ganze. Die / vorne und hinten sind syntaktischer Schnickschnack für die regex.
    Oder funktioniert das alles in PHP anders als in UNIX und Java? Ich probier's mal aus...

    Aber meine Frage ist noch nicht beantwortet, sorry.

    Was mache ich gegen die Fehlermeldung und was ist mit is_numeric als Alternative?

    Gruß
    billybob

    billybob

    • Fördermitglied
    • Beiträge: 563
    Re: Fehlermeldung beim Versenden von Gutscheinen
    Antwort #6 am: 19. August 2011, 15:20:23
    Ergänzung zu vorherigem Post:

    Es ist Jacke wie Hose. Ob man nun nach /[^0-9.]/

    Pattern=/[^0-9.]/ Text=12345 Ergebnis=0
    Pattern=/[^0-9.]/ Text=1.23 Ergebnis=0
    Pattern=/[^0-9.]/ Text=1z Ergebnis=1
    Pattern=/[^0-9.]/ Text=z1 Ergebnis=1
    Pattern=/[^0-9.]/ Text= Ergebnis=0
    Pattern=/[^0-9.]/ Text=\1 Ergebnis=1
    Pattern=/[^0-9.]/ Text=1\ Ergebnis=1
    Pattern=/[^0-9.]/ Text=1\1 Ergebnis=1

    oder nach /[^0-9\.]/

    Pattern=/[^0-9\.]/ Text=12345 Ergebnis=0
    Pattern=/[^0-9\.]/ Text=1.23 Ergebnis=0
    Pattern=/[^0-9\.]/ Text=1z Ergebnis=1
    Pattern=/[^0-9\.]/ Text=z1 Ergebnis=1
    Pattern=/[^0-9\.]/ Text= Ergebnis=0
    Pattern=/[^0-9\.]/ Text=\1 Ergebnis=1
    Pattern=/[^0-9\.]/ Text=1\ Ergebnis=1
    Pattern=/[^0-9\.]/ Text=\ Ergebnis=1

    Das Ergebnis ist wie man sieht bei beiden gleich.

    Wie es zur Fehlermeldung kommt weiss ich jetzt zwar immer noch nicht, aber bei Verwendung von /[^0-9.]/ oder is_numeric() tritt sie jedenfalls nicht auf.

    Wäre schön, wenn Ihr eine entsprechende Lösung im Trunk einführen könntet...

    Gruß
    billybob

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.306
    • Geschlecht:
    Re: Fehlermeldung beim Versenden von Gutscheinen
    Antwort #7 am: 19. August 2011, 15:35:44
    dann ändere diese Zeile:

    Code: PHP  [Auswählen]
    if (preg_match('/[^0-9\.]/', $gv_amount)) {

    so ab:

    Code: PHP  [Auswählen]
    if (preg_match('/[^0-9\.]/', $gv_amount) && $gv_amount!='') {

    billybob

    • Fördermitglied
    • Beiträge: 563
    Re: Fehlermeldung beim Versenden von Gutscheinen
    Antwort #8 am: 19. August 2011, 16:06:20
    OK, danke

    DokuMan

    • modified Team
    • Beiträge: 6.669
    • Geschlecht:
    Re: Fehlermeldung beim Versenden von Gutscheinen
    Antwort #9 am: 19. August 2011, 16:47:44
    [...]
    habe diesen Fehler immer noch in 1.05 SP1a und zwar genau dann, wenn ich keinen Betrag im Feld Wert eingebe. [...]

    Ist das mit dem fehlenden Betrag bei verschickten Gutscheinen Absicht? Hat das einen bestimmten Hintergrund?

    billybob

    • Fördermitglied
    • Beiträge: 563
    Re: Fehlermeldung beim Versenden von Gutscheinen
    Antwort #10 am: 19. August 2011, 20:02:45
    Hi DokuMan,
    ja, hat einen Grund:
    Der Nutzer klickt auf abschicken, ohne einen Betrag eingegeben zu haben. Kann mal passieren und sollte nicht zu einer Fehlermeldung führen.
    Gruß
    billybob

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Re: Fehlermeldung beim Versenden von Gutscheinen
    Antwort #11 am: 19. August 2011, 23:58:36
    dann ändere diese Zeile:

    Code: PHP  [Auswählen]
    if (preg_match('/[^0-9\.]/', $gv_amount)) {

    so ab:

    Code: PHP  [Auswählen]
    if (preg_match('/[^0-9\.]/', $gv_amount) && $gv_amount!='') {

    Sollte wir das ggf. so in den Trunk übernehmen? :-?

    Grüße

    Torsten

    DokuMan

    • modified Team
    • Beiträge: 6.669
    • Geschlecht:
    Re: Fehlermeldung beim Versenden von Gutscheinen
    Antwort #12 am: 21. August 2011, 13:29:30
     :pro:

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Re: Fehlermeldung beim Versenden von Gutscheinen
    Antwort #13 am: 21. August 2011, 16:42:42
    Ich habe die Änderung in r2101 in den Trunk übernommen.

    Grüße

    Torsten