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: Adressfeld wird unvollständig ausgefüllt

    voodoopupp

    • Fördermitglied
    • Beiträge: 1.869
    • Geschlecht:
    Re: Adressfeld wird unvollständig ausgefüllt
    Antwort #15 am: 12. Januar 2016, 05:57:12
    Code: PHP  [Auswählen]
    if ($hausnummer == 0) $hausnummer= null;
    $street= trim($strasse . ' ' . $hausnummer);
    // jetzt $street in DB schreiben
     

    Wo ist das Problem?
    Und wo genau müsste das eingetragen werden? Denn mit diesem Zusatz wäre die Prüfung auf ne Zahl schon ziemlich gut für den Produktiveinsatz!

    Grüße
    Dominik

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Re: Adressfeld wird unvollständig ausgefüllt
    Antwort #16 am: 12. Januar 2016, 09:17:20
    Das Formular (Feld Hausnummer dazubasteln) wird irgendwo verarbeitet. In der DB ist nur ein Feld für Straße und Hausnummer. Also muss vor Schreiben der Straße die Hausnummer angehängt werden.
    Ich weiß jetzt nicht aus dem Kopf wo genau das ist. Schau mal in die Adresszeile des Browsers wenn das Formular abgeschickt wird ...

    Fakrae

    • Viel Schreiber
    • Beiträge: 997
    Re: Adressfeld wird unvollständig ausgefüllt
    Antwort #17 am: 12. Januar 2016, 09:21:35
    Bonsais Codeschnipsel geht davon aus, dass du ein separates Input-Feld für die Hausnummer im Formular hast (Ansonsten gibt es ja auch kein Problem, wenn dieses leer wäre)
    Den Schnipsel also direkt vor dem Einfügen in die Datenbank benutzen (und natürlich die Variablenbezeichnung anpassen)

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: Adressfeld wird unvollständig ausgefüllt
    Antwort #18 am: 12. Januar 2016, 11:34:54
    [...]
    Und vor allem: ist ne Lösung per Javascript sinnvoll, da es eben wieder your den ohne aktivieren JS gibt!? ;)
    [...]

    Das mit JavaScript ist zwar ein Problem, aber wenn man davon ausgeht das nur etwa 1-2% der Internetnutzer ohne JavaScript unterwegs sind und hier in diesem speziellen Fall ein Kunde der JavaScript in seinem Browser deaktiviert hat auch nicht von einer Bestellung ausgeschlossen ist und ihm auch keine unerlässlichen Informationen die er zur Kaufentscheidung  benötigt vorenthalten bleiben, halte ich es für vertretbar eine JavaScript Lösung ohne Fallback anzubieten.

    Eine reload Lösung die ohne JavaScript auskommt habe ich mir schon überlegt, aber Kneumi wünscht eine Lösung die den Kunden nicht zwingt eine Hausnummer einzugeben, auch keine 0 als Platzhalter, sondern er wünscht eine Lösung bei der vom Kunden einfach auf "weiter" geklickt werden kann wenn er keine Hausnummer hat, dies ist aber bei einer reload Lösung aufwändig zu realisieren, denn standardmässig und das finde ich auch richtig, muss der Kunde in diesem Fall das Passwort und deren Bestätigung erneut eingeben.

    PS:
    Hier habe ich meinen Vorschlag aus Beitrag #13 noch ein wenig verfeinert, der Meldungstext erscheint jetzt erst wenn die minimal geforderte Anzahl Zeichen eingegeben wurde und sich keine Ziffer(1-9) unter ihnen befindet.
    Code: PHP  [Auswählen]
    $smarty->assign('INPUT_STREET', xtc_draw_input_fieldNote(array ('name' => 'street_address', 'text' => '&nbsp;'. (xtc_not_null(ENTRY_STREET_ADDRESS_TEXT) ? '<span class="inputRequirement">'.ENTRY_STREET_ADDRESS_TEXT.'</span>' : '')), '', 'onblur="if(!/[1-9]/.test(this.value) && this.value.length >= '.ENTRY_STREET_ADDRESS_MIN_LENGTH.'){$(\'#number-error\').show(100)}else{$(\'#number-error\').hide(100)}"').'<p id="number-error" style="display: none;"><span style="color: red;">Hausnummer fehlt!</span><br />Ignorieren Sie diese Nachricht wenn Sie keine haben, ansonsten tragen Sie sie bitte noch ein.</p>');
     

    Gruss
    Hanspeter

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Re: Adressfeld wird unvollständig ausgefüllt
    Antwort #19 am: 12. Januar 2016, 12:55:45
    Vielleicht das hier auch mal anschauen: Idee von vr

    Eigentlich wohl das gleiche wie von noRiddle vorgeschlagen, aber statt preg_match('#[0-9]#' verwendet er preg_match('/[0-9]/'
    Und vor allem: ist ne Lösung per Javascript sinnvoll, da es eben wieder your den ohne aktivieren JS gibt!? ;)

    Grüße
    Dominik

    Das preg_match() von vr ist dasselbe wie das Meinige.
    Die Zeichen außen, #, oder / sind sogenannte Delimiter die man nutzen muß wenn man preg_match() benutzt. Ich benutze lediglich lieber # weil sie, die Lesbarkeit des Codes betreffend, als Delimiter auffallen während ein Slash etwas untergeht.

    Ich denke mit unserer Lösung lässt sich das ohne Javascript ganz gut abfangen wenn die erscheinende Fehlermeldung eben aussagt, daß, hat man keine Hausnummer, eine 0 als Hausnummer eintragen werden soll. Das geht ja dann durch.

    Ich weiß allerdings nicht ob es evtl. noch Adressen gibt die ausschließlich Buchstaben als Hausnummer haben...

    Gruß,
    noRiddle

    voodoopupp

    • Fördermitglied
    • Beiträge: 1.869
    • Geschlecht:
    Re: Adressfeld wird unvollständig ausgefüllt
    Antwort #20 am: 12. Januar 2016, 13:07:08
    ...
    Ich denke mit unserer Lösung lässt sich das ohne Javascript ganz gut abfangen wenn die erscheinende Fehlermeldung eben aussagt, daß, hat man keine Hausnummer, eine 0 als Hausnummer eintragen werden soll. Das geht ja dann durch.
    ...
    Nur stellt sich mir die Frage, was z.B. DHL, DPD etc. dann machen, wenn auf dem Paketschein eine Hausnummer 0 steht?!

    Total egal oder sagen die sich: das gibt es nicht, geht retour. Wir haben da schon die abenteuerlichsten Geschichten mitbekommen, warum Pakete angeblich nicht zugestellt werden konnten ;)

    Und genau dafür wäre eine Kombination hiermit sicherlich das Beste:
    Code: PHP  [Auswählen]
    if ($hausnummer == 0) $hausnummer= null;
    $street= trim($strasse . ' ' . $hausnummer);
    // jetzt $street in DB schreiben
     

    Wo ist das Problem?

    Dann würde eine Null dennoch nicht eingetragen werden, aber trotzdem ist der Kunde gezwungen, eine einzugeben ;)

    Nur, wie ich das an den besagten Stellen eintragen müsste, ist mir einfach schleierhaft  :-?

    Grüße
    Dominik

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Re: Adressfeld wird unvollständig ausgefüllt
    Antwort #21 am: 12. Januar 2016, 13:25:59
    Wie bereits in einem anderen Beitrag erwähnt wurde baut Bonsais Code auf einem gesonderten Feld für die Hausnummer auf. Das einzubauen ist ziemlich aufwändig.

    Ich weiß nicht wie du Paketaufkleber erstellst.
    Wenn manuell wäre es ja leicht eine 0 als Hausnummer zu löschen,
    wenn automatisiert, womit genau ?
    In der Automatisierungs-Routine könnte man ja eine einzelne 0 rausfiltern

    Das Ganze ist halt nicht so einfach weil Kunden verschiedene Notierungen benutzen um eine Strasse mit Hausnummer einzugeben.
    Wüsste man es würde immer so geschrieben
    STARSSENNAME NUMMER
    wäre es leicht,
    schreibt jedoch jemand z.B. so
    STRASSENNAME/NUMMER
    oder so
    STRASSENNAME-NUMMER
    wird's schwerer.

    Man könnte es mit substr_count() probieren:
    Code: PHP  [Auswählen]
    if(substr_count($STRING, '0') == 1) {
        str_replace('0', '', $STRING);
    }

    Wenn jemand allerdings versehentlich schreibt
    STRASSENNAME 00
    geht es wieder nicht.
    Dann evtl. so:
    Code: PHP  [Auswählen]
    if(substr_count($STRING, '0') > 0 && !preg_match('#[1-9]#', $STRING)) {
        str_replace('0', '', $STRING);
    }
    In Worten:
    Wenn im STRING die Null min. ein mal vorkommt und es keine weitere Zahl zwischen 1 und 9 gibt ersetze die Null oder Nullen durch nichts.

    Gruß,
    noRiddle

    p3e

    • Experte
    • Beiträge: 2.424
    Re: Adressfeld wird unvollständig ausgefüllt
    Antwort #22 am: 12. Januar 2016, 13:43:56
    Wir nutzen das mit der 0 schon länger produktiv. Im Prinzip seit ich es damals hier vorgeschlagen hatte. Mit DPD gibt es da keine Probleme bisher. Wurde immer problemlos zugestellt, wobei wir die Null manuell entfernt haben, wenn es uns auffallen ist.

    Ansonsten entfernst du die Null so, wie von noRiddle zuletzt vorgeschlagen.
    Eine Alternative wäre eine Checkbox, die der Kunde markieren kann, wenn es keine Hausnummer gibt, so dass die Adresse akzeptiert wird, wenn entweder eine Nummer vorhanden oder die Checkbox angekreuzt ist. Wäre für dich vielleicht die beste Lösung. Die Fehlermeldung kann ja auch auf die Checkbox hinweisen.

    voodoopupp

    • Fördermitglied
    • Beiträge: 1.869
    • Geschlecht:
    Re: Adressfeld wird unvollständig ausgefüllt
    Antwort #23 am: 12. Januar 2016, 14:04:14
    ...
    Ich weiß nicht wie du Paketaufkleber erstellst.
    Wenn manuell wäre es ja leicht eine 0 als Hausnummer zu löschen,
    wenn automatisiert, womit genau ?
    In der Automatisierungs-Routine könnte man ja eine einzelne 0 rausfiltern
    ...

    Gute Frage, also automatisch auf jeden Fall. Die Daten gehen in die WaWi und von dort über irgendeine Schnittstelle an Easylog, wo dann die Labels erstellt werden.

    Somit wäre ein Abfangen der Adresse bereits im Shop sicherlich sinnvoller, als dann nachher wieder in irgendeiner Schnittstelle einer WaWi rumzufummeln....vor allem, da ich hier nicht mal genau weiß, welche Dateien dort verwendet werden, um die Daten zu übergeben.

    Grüße
    Dominik

    Neo-drexx

    • Frisch an Board
    • Beiträge: 93
    • Geschlecht:
    Re: Adressfeld wird unvollständig ausgefüllt
    Antwort #24 am: 12. Januar 2016, 17:32:25
    Es sollte aber auch nicht das Problem darstellen vor dem übertragen in die Datenbank auf eine 0 zu Prüfen und diese zu entfernen ;)

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Re: Adressfeld wird unvollständig ausgefüllt
    Antwort #25 am: 12. Januar 2016, 18:48:55
    Exactly.
    Hier mal am beispiel der /create_account.php:
    Suche
    Code: PHP  [Auswählen]
    $street_address = xtc_db_prepare_input($_POST['street_address']);
    ersetze mit
    Code: PHP  [Auswählen]
    $street_address = xtc_db_prepare_input($_POST['street_address']);
    $street_address = (substr_count($street_address, '0') > 0 && !preg_match('#[1-9]#', $street_address)) ? str_replace('0', '', $street_address) : $street_address;

    Suche
    Code: PHP  [Auswählen]
    if (strlen($street_address) < ENTRY_STREET_ADDRESS_MIN_LENGTH) {
        $error = true;
        $messageStack->add('create_account', ENTRY_STREET_ADDRESS_ERROR);
    }
    ersetze mit
    Code: PHP  [Auswählen]
    if (strlen($street_address) < ENTRY_STREET_ADDRESS_MIN_LENGTH || !preg_match('#[0-9]#', $street_address)) {
        $error = true;
        $messageStack->add('create_account', ENTRY_STREET_ADDRESS_ERROR);
    }

    Alsdann noch die Konstante ENTRY_STREET_ADDRESS_ERROR in den entsprechenden Sprachdateien an den gewünschten Text der Fehlermeldung anpassen.
    Fertig.

    Nicht getestet, das überlasse ich dir/euch ;-) .

    Gruß,
    noRiddle

    voodoopupp

    • Fördermitglied
    • Beiträge: 1.869
    • Geschlecht:
    Re: Adressfeld wird unvollständig ausgefüllt
    Antwort #26 am: 13. Januar 2016, 07:53:11
    Hi Oli,

    danke schonmal für die ausführliche Hilfe.

    Leider funktioniert es so (noch) nicht. Sobald ich nun also z.B. entweder "0" oder "00" als Hausnummer eingebe, erhalte ich die Meldung, die in der Konstante ENTRY_STREET_ADDRESS_ERROR gepflegt ist.

    Aber ich komme bei der Anmeldung nicht weiter....dort wird dann lediglich mit Ausgabe der Fehlermeldung die "0" entfernt. Mit z.B. einer "1" komme ich ganz normal weiter.

    ...
    ersetze mit
    Code: PHP  [Auswählen]
    $street_address = xtc_db_prepare_input($_POST['street_address']);
    $street_address = (substr_count($street_address, '0') > 0 && !preg_match('#[1-9]#', $street_address)) ? str_replace('0', '', $street_address) : $street_address;
    ...
    Wenn ich diesen Code umdrehe, also so
    Code: PHP  [Auswählen]
    $street_address = (substr_count($street_address, '0') > 0 && !preg_match('#[1-9]#', $street_address)) ? str_replace('0', '', $street_address) : $street_address;
    $street_address = xtc_db_prepare_input($_POST['street_address']);
    kann ich mich zwar anmelden, aber die 0 wird mit in die Datenbank gespeichert.

    Irgendwo scheint da noch ein Fehler drinnen zu stecken.

    Grüße
    Dominik

    p3e

    • Experte
    • Beiträge: 2.424
    Re: Adressfeld wird unvollständig ausgefüllt
    Antwort #27 am: 13. Januar 2016, 14:32:23
    Nein, Dominik, deine Änderung kann nicht funktionieren, da dann immer die ursprüngliche Eingabe gespeichert wird. Ansonsten sehe ich aber auch keinen Fehler in der Anleitung von noRiddle.
    Hast Du einen Link auf Deine Testumgebung? Eigentlich darf bei einer Null keine Fehlermeldung kommen sondern nur wenn keine Zahl vorhanden ist.

    voodoopupp

    • Fördermitglied
    • Beiträge: 1.869
    • Geschlecht:
    Re: Adressfeld wird unvollständig ausgefüllt
    Antwort #28 am: 13. Januar 2016, 16:34:17
    Hab leider keinen öffentlichen Zugang zum Testshop - daher schlecht.

    Aber wie gesagt: mit der Änderung von noRiddle erhalte ich immer die Ausgabe der Fehlermeldung.

    Sowas geht:
    Zitat
    Teststraße 1
    Teststraße 10
    Teststraße 1000
    Teststraße 01
    Teststraße 0002

    Hier erhalte ich die Fehlermeldung:
    Zitat
    Teststraße
    Teststraße 0
    Teststraße 00
    Teststraße 000
    ...

    Grüße
    Dominik

    p3e

    • Experte
    • Beiträge: 2.424
    Re: Adressfeld wird unvollständig ausgefüllt
    Antwort #29 am: 13. Januar 2016, 16:37:38
    Bist Du Dir sicher, dass Du da auch
    Code: PHP  [Auswählen]
    if (strlen($street_address) < ENTRY_STREET_ADDRESS_MIN_LENGTH || !preg_match('#[0-9]#', $street_address))
    und im preg_match nicht nur 1-9 stehen hast (also statt der null eine eins)?

    Ich habe es jetzt nicht getestet, weil ich mal wieder ein paar Tage unterwegs bin aber vom reinen Lesen sehe ich da keinen Fehler im Code von noRiddle :( Vielleicht hast Du Dich doch vertippt oder ich sehe den Wald vor lauter Bäumen nicht.
    rechtstexte für onlineshop
    2 Antworten
    1109 Aufrufe
    08. Dezember 2019, 14:44:22 von Bonner
    4 Antworten
    4549 Aufrufe
    29. April 2016, 11:04:40 von bigi100
    0 Antworten
    1245 Aufrufe
    14. August 2017, 04:29:20 von rayban
    0 Antworten
    1794 Aufrufe
    06. Februar 2013, 19:19:12 von Yoshmobile