Karl der Grossse: Brauche Tipp! Fehler differenzieren ...

Tach,
ich programmiere gerade ein Shop für einen Kunden.
In dem Shop soll der Kunden seine Daten eingeben (Rechnungsadresse, Lieferadresse, Zahlungsart & Versandart).

Bei der Vorab-Validierung setz' ich auf JavaScript.
Bei leeren Felder bzw. bei falscher Eingabe speichere ich die Fehlermeldungen in einem Array. Dieses Array übergebe ich schließlich einer Funktion, die per FOR-Schleife die einzelnen Fehler in einen Layer schreibt, der dann angezeigt wird.

Ich versuche seit 2 Std. eine möglichst unkomplizierte Lösung zu finden, wie ich die einzelnen Fehler differenzieren kann.

Sprich, so sollte es aussehen:

Rechnungsadresse

  • Anrede
  • Vorname
  • Nachname
    [...]

Zahlungsart

  • Kreditkarteninhaber
  • Kreditkartennummer
    [...]

Versandart

  • Keine Auswahl getroffen

Sonstiges

  • AGB
  • Datenschutz
    [...]

Momentan steht aber alles untereinander, sprich so:

  • Anrede
  • Vorname
  • Nachname
  • Kreditkarteninhaber
  • Kreditkartennummer
  • Keine Auswahl getroffen
  • AGB
  • Datenschutz
    [...]

Wie schaffe ich es, diese einzelnen Fehler zu differenzieren? Damit ich sie in Kategorien anteilen kann (Rechnungsadress, Versandart, Sonstiges [...])
Es muss einfach sein, denn es kann sein dass der Shop immer wieder angepasst werden muss.

So speichere ich die Fehler (Beispiel):

  
if(document.forms[0].Ort.value == "" || !isNaN(document.forms[0].Ort.value)) {  
 if(document.forms[0].Ort.value == "") errorList[counter] = "Ort fehlt";  
 else errorList[counter] = "Ort ist ungültig";  
 counter++;  
}

und so lese ich die Fehler aus:

  
for(var n=0; n < errorList.length; n++) {  
 strOut += '&bull; '+ errorList[n] +'<br />';  
}  

  1. Hallo,

    Ich versuche seit 2 Std. eine möglichst unkomplizierte Lösung zu finden, wie ich die einzelnen Fehler differenzieren kann.

    Ich würde bei sowas kein JavaScript sondern PHP empfehlen. Dort läuft auf jeden Fall eine Überprüfung ab. Nur was machen Kunden, die Javscript deaktiviert haben?

    MfG. Christoph Ludwig

    --
    Wo die Sprache aufhört, fängt die Musik an...
    Selfcode:  ie:( fl:| br:^ va:| ls:/ fo:| rl:? n4:) ss:) de:] js:) ch:{ sh:) mo:) zu:)
    Go to this
    1. Ich würde bei sowas kein JavaScript sondern PHP empfehlen. Dort läuft auf jeden Fall eine Überprüfung ab. Nur was machen Kunden, die Javscript deaktiviert haben?

      Fronted!
      Wie schon gesagt, eine VORAB-VALIDIERUNG!
      In der Bestätigungsseite (übernächste), findet eine Serverseitige Validierung statt.

  2. Hi,

    Bei leeren Felder bzw. bei falscher Eingabe speichere ich die Fehlermeldungen in einem Array. Dieses Array übergebe ich schließlich einer Funktion, die per FOR-Schleife die einzelnen Fehler in einen Layer schreibt, der dann angezeigt wird.

    Wozu das?

    Warum hinterlegst du sie nicht einfach im bestehenden Formular entsprechend optisch?
    Das ist doch der uebliche, und damit dem Nutzer vertraute Weg.

    Ich versuche seit 2 Std. eine möglichst unkomplizierte Lösung zu finden, wie ich die einzelnen Fehler differenzieren kann.

    Differenzieren hinsichtlich was?

    Wie schaffe ich es, diese einzelnen Fehler zu differenzieren? Damit ich sie in Kategorien anteilen kann (Rechnungsadress, Versandart, Sonstiges [...])

    Diese Differenzierung enthaelt dein HTML-Code bereits, wenn er vernuenftig aufgebaut ist. Bspw. in Form von Fieldsets.

    MfG ChrisB

    --
    „This is the author's opinion, not necessarily that of Starbucks.“
    1. Hi,
      Wozu das?

      Warum hinterlegst du sie nicht einfach im bestehenden Formular entsprechend optisch?
      Das ist doch der uebliche, und damit dem Nutzer vertraute Weg.

      Wenn in das Feld "Geburtstatum" der User sein GebDatum im falschen Format eingibt (statt. TT.MM.JJJJ, JJJJ-MM-TT usw.), kann ich es nicht einfach nur "rot markieren", denn der User weiß ja nicht was er Falsch gemacht hat, auch wenns irgendwo steht.
      Oder PLZ (4, statt 5 Stellig). Der Kunde möchte seine User nicht loswerden, sondern Sie auf die Fehler hinweisen (was falsch gemacht worden ist, nicht nur, dass es falsch ist!).

      Differenzieren hinsichtlich was?

      Gruppieren, sprich, alle Fehler die bei Rechnungsadresse falsch sind, stehen unter "Rechnungsadresse", nicht unter "Sonstiges", siehe meinen ersten Post.

      Diese Differenzierung enthaelt dein HTML-Code bereits, wenn er vernuenftig aufgebaut ist. Bspw. in Form von Fieldsets.

      Sorry, nicht verstanden.

      Danke jedenfalls.

      1. Hi,

        Der Kunde möchte seine User nicht loswerden, sondern Sie auf die Fehler hinweisen (was falsch gemacht worden ist, nicht nur, dass es falsch ist!).

        Na dann bringe den Hinweis an genau der Stelle unter, an der er angebracht ist - dort, wo sich das betreffende Feld im Formular befindet.

        Stattdessen irgendwo anders, in einem "Layer", alle Felder (bzw. nur deren Bezeichnung) aufzufuehren, deren Eingaben fehlerhaft sein sollen - *das* halte ich aus Benutzersicht fuer alles andere als optimal.

        Diese Differenzierung enthaelt dein HTML-Code bereits, wenn er vernuenftig aufgebaut ist. Bspw. in Form von Fieldsets.
        Sorry, nicht verstanden.

        Sorry, ich dich auch nicht verstanden.
        Wenn du eine konkrete Rueckfrage hast, dann stelle diese bitte.

        MfG ChrisB

        --
        „This is the author's opinion, not necessarily that of Starbucks.“
        1. Na dann bringe den Hinweis an genau der Stelle unter, an der er angebracht ist - dort, wo sich das betreffende Feld im Formular befindet.

          Stattdessen irgendwo anders, in einem "Layer", alle Felder (bzw. nur deren Bezeichnung) aufzufuehren, deren Eingaben fehlerhaft sein sollen - *das* halte ich aus Benutzersicht fuer alles andere als optimal.

          Da ist kein Platz, außerdem ist das keine seltene Form der Validierung, die Fehler aufzulisten. Ich denke, das du dir das ganze ganz anders Vorstellst, als es ist. Es ist wirklich sehr Kundenfreundlich, und sogar für Internet-Noobs einfach zu verstehen.

          »» > Diese Differenzierung enthaelt dein HTML-Code bereits, wenn er vernuenftig aufgebaut ist. Bspw. in Form von Fieldsets.
          »» Sorry, nicht verstanden.

          Sorry, ich dich auch nicht verstanden.
          Wenn du eine konkrete Rueckfrage hast, dann stelle diese bitte.

          Ich habe deine Aussage einfach nicht Verstanden.
          Was für Defferenzierung enhält den mein HTML-Code? Und was für Fieldset?
          PS: Ja sehr vernünftig, komplett in XHTML ( Valide ;) )

          1. Moin.

            »» Na dann bringe den Hinweis an genau der Stelle unter, an der er angebracht ist - dort, wo sich das betreffende Feld im Formular befindet.
            Da ist kein Platz[...]

            Na für irgendeine Art von Markierung (roter Rahmen, gefärbter Hintergrund, ein dickes, rotes X neben dem Feld) ist eigentlich immer Platz.

            Eine konkrete Auflistung der fehlerhaften Eingaben mit Details, aus welchem Grund die Eingabe abgelehnt wurde, würde ich serverseitig nach Absenden des Formulars generieren.

            Das ermöglicht es dann auch, die fehlerhaft befüllten Formularfelder gesondert von den korrekt befüllten am Formularanfang aufzulisten.

            Dementsprechend sollte ein Absenden des Formulars mit JavaScript nicht verhindert werden: Meiner Meinung nach reicht es, mit JavaScript lediglich eine Validierung des Eingabeformats nebst der bereits genannten optischen Fehlermarkierung vorzunehmen: Die genaue Überprüfung erfolgt serverseitig.

            Zwei Beispiele:

            JavaScript testet ein Email-Adressfeld, indem geprüft wird, ob auf das @ ein (syntaktisch) gültiger Domainname folgt. Der Server könnte dann z.B. per ping überprüfen, ob der Mailserver tatsächlich existiert

            Ein Geburtsdatum könnte clientseitig geprüft werden, indem nur Tage von 1-31, Monate von 1-12 und Jahre von 1900-2099 zugelassen werden. Der Server würde dann überprüfen, ob das Datum tatsächlich existiert (Monate mit nur 30 Tagen, Schaltjahre) und ob das Datum in der Zukunft bzw. unterhalb eines eventuellen Mindestalters liegt.

            Christoph

            1. Na für irgendeine Art von Markierung (roter Rahmen, gefärbter Hintergrund, ein dickes, rotes X neben dem Feld) ist eigentlich immer Platz.

              Zum X-Mal, ich habe eine PDF-Vorlage, einer Werbeagentur, an der ich mich halten MUSS!!!

              Eine konkrete Auflistung der fehlerhaften Eingaben mit Details, aus welchem Grund die Eingabe abgelehnt wurde, würde ich serverseitig nach Absenden des Formulars generieren.

              Unsern Shop-Prinzip kann ich nicht ändern, ebenfalls Vorgabe, allerdings vom Chef.

              Dementsprechend sollte ein Absenden des Formulars mit JavaScript nicht verhindert werden: Meiner Meinung nach reicht es, mit JavaScript lediglich eine Validierung des Eingabeformats nebst der bereits genannten optischen Fehlermarkierung vorzunehmen: Die genaue Überprüfung erfolgt serverseitig.

              JavaScript ist VORAUSSETZUNG für den Shop, das weiß der Kunde, das wissen die User, geht ja schließlich nich nach mir.

              Zwei Beispiele:

              JavaScript testet ein Email-Adressfeld, indem geprüft wird, ob auf das @ ein (syntaktisch) gültiger Domainname folgt. Der Server könnte dann z.B. per ping überprüfen, ob der Mailserver tatsächlich existiert

              Das mit dem Ping fällt schon mal aus, unsere Server sind zu 90% Ausgelastet, bei mehr als 30.000 Bestellungen / Tag würde das unsere Kapazitäten sprengen.

              Ein Geburtsdatum könnte clientseitig geprüft werden, indem nur Tage von 1-31, Monate von 1-12 und Jahre von 1900-2099 zugelassen werden. Der Server würde dann überprüfen, ob das Datum tatsächlich existiert (Monate mit nur 30 Tagen, Schaltjahre) und ob das Datum in der Zukunft bzw. unterhalb eines eventuellen Mindestalters liegt.

              Sowas wird bereits geprüft, allerding ONSUBMIT!

              1. Hi,

                Zum X-Mal, ich habe eine PDF-Vorlage, einer Werbeagentur, an der ich mich halten MUSS!!!

                Warum postest du hier unter zwei verschiedenen Nicks?

                MfG ChrisB

                --
                „This is the author's opinion, not necessarily that of Starbucks.“
              2. Moin.

                Zum X-Mal, ich habe eine PDF-Vorlage, einer Werbeagentur, an der ich mich halten MUSS!!!

                Wo bitte hast du das in diesem Thread erwähnt?

                »» Eine konkrete Auflistung der fehlerhaften Eingaben mit Details, aus welchem Grund die Eingabe abgelehnt wurde, würde ich serverseitig nach Absenden des Formulars generieren.
                Unsern Shop-Prinzip kann ich nicht ändern, ebenfalls Vorgabe, allerdings vom Chef.

                Schade. Ich kann dir nur darlegen, was ich für sinnvoll und nutzerfreundlich halte. Dein Chef kann da natürlich anderer Meinung sein.

                Das mit dem Ping fällt schon mal aus, unsere Server sind zu 90% Ausgelastet, bei mehr als 30.000 Bestellungen / Tag würde das unsere Kapazitäten sprengen.

                War nur als Beispiel gedacht. Niemand zwingt dich, das zu implementieren - zumindest nicht ich ;)

                »» Ein Geburtsdatum könnte clientseitig geprüft werden, indem nur Tage von 1-31, Monate von 1-12 und Jahre von 1900-2099 zugelassen werden. Der Server würde dann überprüfen, ob das Datum tatsächlich existiert (Monate mit nur 30 Tagen, Schaltjahre) und ob das Datum in der Zukunft bzw. unterhalb eines eventuellen Mindestalters liegt.
                Sowas wird bereits geprüft, allerding ONSUBMIT!

                Das Problem dabei ist, dass man sich auf Client-seitige Tests nicht verlassen kann, diese also Server-seitig wiederholen muss. Eine doppelte Überprüfung bedeutet doppelten Aufwand bei Erstellung und Wartung, sofern der Client- und Server-seitige Code nicht aus derselben Quelldatei generiert wird (was z.B. mit GWT oder haXe möglich wäre). Daher bin ich dazu übergegegangen, Client-seitig nur mit regulären Ausdrücken zu prüfen und den Rest auf Server-Seite zu erledigen.

                Christoph

          2. Hi,

            Diese Differenzierung enthaelt dein HTML-Code bereits, wenn er vernuenftig aufgebaut ist. Bspw. in Form von Fieldsets.

            Was für Defferenzierung enhält den mein HTML-Code?

            Steht doch da. Und da, schliesslich zitierst du mein Stichwort, auch noch mal:

            Und was für Fieldset?

            PS: Ja sehr vernünftig, komplett in XHTML ( Valide ;) )

            Ja wie jetzt - ohne Fieldset?

            Dein Formular hat doch offenbar unterschiedliche Bereiche, bestehend aus jeweils zusammengehoerigen Eingabefeldern.
            Genau um solche gruppierend auszuzeichnen, gibt es Fieldset.

            MfG ChrisB

            --
            „This is the author's opinion, not necessarily that of Starbucks.“
  3. Moin.

    Ob die eingegebenen Werte gültig sind, sollte bereits während der Eingabe - oder zumindest nach Abschluss selbiger - direkt beim entsprechenden Eingabefeld markiert werden.

    Außerdem sollte zu jedem Eingabefeld, das nur spezielle Muster akzeptiert, ein gültiges Beispiel mitgeliefert werden.

    Das könnte z.B. so aussehen.

    Christoph

    1. Ob die eingegebenen Werte gültig sind, sollte bereits während der Eingabe - oder zumindest nach Abschluss selbiger - direkt beim entsprechenden Eingabefeld markiert werden.

      Außerdem sollte zu jedem Eingabefeld, das nur spezielle Muster akzeptiert, ein gültiges Beispiel mitgeliefert werden.

      Danke, ich werd es mir Überlegen, hört sich nicht schlecht an.
      Allerding habe ich mich an Vorgaben zu halten, mal sehen was sich machen lässt.