Welcome to the LimeSurvey Community Forum

Ask the community, share ideas, and connect with other LimeSurvey users!

Validierung von Adressdaten

  • AnnaBurmeister
  • AnnaBurmeister's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
3 years 5 months ago #208162 by AnnaBurmeister
Validierung von Adressdaten was created by AnnaBurmeister
Hallo zusammen,

wir haben versucht unsere Abfrage von Kontaktdaten zu validieren. Im Manual fanden wir diese Angaben:

VALIDIERUNG HAUSNR.: /^[1-9][0-9]{0,}$/
VALIDIERUNG PLZ: /^([0-9][0-9][0-9][0-9][0-9])$/
VALIDIERUNG E-MAIL: /^.+?@.+?\..+$/

Anbei unsere Umsetzung

File Attachment:

File Name: limesurvey...9113.lss
File Size:26 KB
, die leider immer Fehlermeldungen bringt.

Bei der Validierung der Hausnummer sind wir uns auch nicht sicher, ob eine Hausnummer "5a" eine Fehlermeldung bringen würde. Das sollte möglichst nicht der Fall sein.

Für Unterstützung bei der Umsetzung sind wir dankbar.

Viele Grüße
Anna
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 5 months ago #208165 by Joffm
Replied by Joffm on topic Validierung von Adressdaten
Diese kommen nicht in die Teilfragenrelevanz; ist ja kein Unterschied zu den Validierungen in Deiner Fragenrelevanz.
Und die Syntax ist falsch.
Hier musst Du die Funktion "regexMatch" benutzen regexMatch(pattern,QCode)

Bei der Hausnummer kannst Du ja noch ein [A-Za-z] dahintersetzen.

Und Du solltest den Validierungstip entsprechend des Fehlers anpassen, also z.B.
{if(is_empty(...),"Diese Frage ist eine Pflichtfage",if(!regexMatch(pattern,QCode),"Bitte geben Sie eine gültige PLZ ein",...

Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 5 months ago #208177 by Joffm
Replied by Joffm on topic Validierung von Adressdaten
Hallo, Anna,
jetzt etwas ausführlicher.

Zunächst zur "Teilfragenvalidierung. Wie im Handbuch steht

Sub-question validation equation (em_validation_sq)

Description

This is an equation that is used to validate each subquestion (text field) individually. Any text field that does not pass these validation conditions will have its background color turned pink (using the .em_sq_fn_validation CSS style) to highlight the error. Note that this is available in addition to the regular expression-based validation option.

Valid values
Any equation that makes use of the ExpressionScript syntax, without surrounding curly braces.

Examples
For example, if you want to allow only numbers that are a multiple of 3 as answers, the equation would be:
(this / 3) == floor(this/3)

The reserved variable this is automatically replaced by a reference to the active text entry cell.


werden hiermit durch eine einzige Funktion alle Teilfragen gleichzeitig validiert.
Wie im Beispiel - ALLE Eingaben müssen durch 3 teilbar sein.

Du hast aber für jede Zelle unterschiedliche Validierungen.

Gut, im Endeffekt läuft es auf diese Validierung hinaus:
!is_empty(Kontaktvalidiert_SQ002_SQ001.NAOK) AND !is_empty(Kontaktvalidiert_SQ003_SQ001.NAOK) AND !is_empty(Kontaktvalidiert_SQ005_SQ001.NAOK) AND !is_empty(Kontaktvalidiert_SQ006_SQ001.NAOK) AND !is_empty(Kontaktvalidiert_SQ007_SQ001.NAOK) AND !is_empty(Kontaktvalidiert_SQ008_SQ001.NAOK) AND regexMatch('/^[1-9][0-9]+[A-Za-z]?$/',Kontaktvalidiert_SQ003_SQ001.NAOK) AND regexMatch('/^[0-9][0-9][0-9][0-9][0-9]$/',Kontaktvalidiert_SQ005_SQ001.NAOK) AND regexMatch('/^.+?@.+?\..+$/',Kontaktvalidiert_SQ008_SQ001.NAOK)

Alle diese Bedingungen müssen ja für die Frage erfüllt sein.
Außerdem siehst Du den richtigen Gebrauch einer "Regular Expression".

Jetzt zum Hinweis:
Da es ziemlich verwirrend wäre, die Fehlermeldung "Das ist ein Pflichtfeld" anzuzeigen, wenn die Postleitzahl nur 4 Stellen hat, musst Du den Tipp entsprechend formulieren - mit einem geschachtelten IF-Statement.

Z.B. (nur ganz roh)
{if(is_empty(Kontaktvalidiert_SQ002_SQ001) OR is_empty(Kontaktvalidiert_SQ003_SQ001) OR is_empty(Kontaktvalidiert_SQ005_SQ001) OR is_empty(Kontaktvalidiert_SQ006_SQ001) OR is_empty(Kontaktvalidiert_SQ007_SQ001) OR is_empty(Kontaktvalidiert_SQ008_SQ001),"Mit * gekennzeichnete Felder sind Pflichtfelder",if(!regexMatch('/^[1-9][0-9]+[A-Za-z]?$/',Kontaktvalidiert_SQ003_SQ001.NAOK),"Bitte, geben Sie eine gültige Hausnummer ein!",if(!regexMatch('/^[0-9][0-9][0-9][0-9][0-9]$/',Kontaktvalidiert_SQ005_SQ001.NAOK),"Bitte, geben Sie eine gültige PLZ ein!",if(!regexMatch('/^.+?@.+?\..+$/',Kontaktvalidiert_SQ008_SQ001.NAOK),"Bitte, geben Sie eine gültige E-Mail-Adresse ein!",""))))}











Joffm

Na, irgendwann muss das Ding doch einmal fertig werden. ;)

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The topic has been locked.
  • AnnaBurmeister
  • AnnaBurmeister's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
3 years 4 months ago #208418 by AnnaBurmeister
Replied by AnnaBurmeister on topic Validierung von Adressdaten
Herzlichen Dank für die Hilfe auf meinen letzten Post zu diesem Thema.

Der Feinschliff will mir jedoch einfach nicht gelingen.

Bei der Übernahme kam es stets zu Fehlermeldung für die Hausnummer: regexMatch('/^[1-9][0-9]+[A-Za-z]?$/',Kontaktvalidiert_SQ003_SQ001.NAOK) Hier werden nur zweistellige Hausnummern angenommen. Mein Versuch die zwei Zahlen analog zu +[A-Za-z] mit einem + zu verbinden - regexMatch('/^[1-9]+[0-9]+[0-9]+[A-Za-z]?$/',KontaktStandort1_SQ003_SQ001.NAOK) -, brachte auch keine Abhilfe.

Und weil wir schon am Feinschliff sind: Wie lassen sich auch für die SQ001, SQ002, SQ006 und SQ012 angepasste Fehlermeldungen einfügen? Auch mit regex

SQ001: Bitte geben Sie die Bezeichnung des Standortes an.
SQ002: Bitte geben Sie die Straße des Standortes an.
SQ006: Bitte geben Sie den Ort des Standortes an.
SQ012: Bitte geben Sie an, ob an diesem Standort Mitarbeitende von Agentur für Arbeit, Jobcenter und dem örtlichen Träger der öffentlichen Jugendhilfe vertreten sind.


@Joffm: Ich hoffe, dass dieses Ding wirklich bald fertig ist. Mein Geduldsfaden ist am Ende, meine Kenntnisse auch. Umso größer mein Dank für die Unterstützung.

Anna
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 4 months ago #208420 by Joffm
Replied by Joffm on topic Validierung von Adressdaten
Hallo, Anna,

regexMatch('/^[1-9][0-9]+[A-Za-z]?$/',Kontaktvalidiert_SQ003_SQ001.NAOK) Hier werden nur zweistellige Hausnummern angenommen.

Das glaube ich nicht.
Es ist ja so: [1-9][0-9]+[A-Za-z]?
1 Zeichen von 1-9,
1 Zeichen von 0-9, dabei sagt hier das Pluszeichen "keinmal oder mehrmals".
1 Zeichen von A-Z oder a-z, bei welchem aber durch das Fragezeichen gesagt wird "die Klammer kommt nicht oder genau einmal vor".)

Ich meine, wenn Du RegEx verwenden willst, musst Du auch ein bisschen darüber wissen.
Hier kann man gut testen und üben:
regex101.com/

Und zum Validierungstipp:
Im Moment sieht es ja so aus für die einfachen Pflichtfelder:
{if(is_empty(KontaktStandort1_SQ002_SQ001) OR is_empty(KontaktStandort1_SQ003_SQ001) OR is_empty(KontaktStandort1_SQ005_SQ001) OR is_empty(KontaktStandort1_SQ006_SQ001) OR is_empty(KontaktStandort1_SQ007_SQ001) OR is_empty(KontaktStandort1_SQ008_SQ001),"Mit * gekennzeichnete Felder sind Pflichtfelder",
...

Wenn Du für jedes einzelne Feld eine separate Meldung haben willst, musst Du nur dieses ebenso aufgliedern wie es bei den anderen Feldern ist.
Es ist ja immer dasselbe Prinzip.

ODER Du kannst auch für jedes Feld einen separaten Tipp eintragen, etwa so:
{if(is_empty(KontaktStandort1_SQ001_SQ001),"'Bezeichnung des Standortes' ist ein Pflichtfeld<br/>","")}
...
{if(!regexMatch('/^[1-9][0-9]+[A-Za-z]?$/',KontaktStandort1_SQ003_SQ001.NAOK),"Bitte geben Sie eine gültige Hausnummer ein!","")}
...


Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 4 months ago #208442 by Joffm
Replied by Joffm on topic Validierung von Adressdaten
Hallo, Anna,
ich habe mir einmal die Mühe gemacht, einen Validierungshinweis für jedes einzelne Feld zu machen.
{if(is_empty(KontaktStandort1_SQ002_SQ001),"Bitte, füllen Sie 'Straße' aus",if(is_empty(KontaktStandort1_SQ003_SQ001),"Bitte, füllen Sie 'Hausnummer' aus",if(!regexMatch('/^[1-9][0-9]+[A-Za-z]?$/',KontaktStandort1_SQ003_SQ001.NAOK),"Bitte geben Sie eine gültige Hausnummer ein!",if(is_empty(KontaktStandort1_SQ005_SQ001),"Bitte, füllen Sie 'PLZ' aus",if(!regexMatch('/^[0-9][0-9][0-9][0-9][0-9]$/',KontaktStandort1_SQ005_SQ001.NAOK),"Bitte geben Sie eine gültige PLZ ein!",if(is_empty(KontaktStandort1_SQ006_SQ001),"Bitte, füllen Sie 'Ort' aus",if(is_empty(KontaktStandort1_SQ007_SQ001),"Bitte, füllen Sie 'Telefon' aus",if(is_empty(KontaktStandort1_SQ008_SQ001),"Bitte, füllen Sie 'E-Mail-Adresse' aus",if(!regexMatch('/^.+?@.+?\..+$/',KontaktStandort1_SQ008_SQ001.NAOK),"Bitte geben Sie eine gültige E-Mail-Adresse ein!","")))))))))}

Die Gleichung kann ja so bleiben
!is_empty(KontaktStandort1_SQ001_SQ001.NAOK) AND !is_empty(KontaktStandort1_SQ002_SQ001.NAOK) AND !is_empty(KontaktStandort1_SQ003_SQ001.NAOK) AND !is_empty(KontaktStandort1_SQ005_SQ001.NAOK) AND !is_empty(KontaktStandort1_SQ006_SQ001.NAOK) AND !is_empty(KontaktStandort1_SQ007_SQ001.NAOK) AND !is_empty(KontaktStandort1_SQ008_SQ001.NAOK) AND !is_empty(KontaktStandort1_SQ012_SQ001.NAOK) AND regexMatch('/^[1-9]+[0-9]+[0-9]+[A-Za-z]?$/',KontaktStandort1_SQ003_SQ001.NAOK) AND regexMatch('/^[0-9][0-9][0-9][0-9][0-9]$/',KontaktStandort1_SQ005_SQ001.NAOK) AND regexMatch('/^.+?@.+?\..+$/',KontaktStandort1_SQ008_SQ001.NAOK)

wobei der Standort ja aus einer Vorfrage eingepipet wird; kann also eigentlich entfallen.
Dann sieht es so aus:
1.

2.

3.

4.

5.

6.

Und wenn Du schon ganz genau sein willst, kannst Du auch die "Pflichtfeldsternchen" rot machen mit
Straße <span style="color:red"><sup>*</sup></span>


Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The topic has been locked.
  • AnnaBurmeister
  • AnnaBurmeister's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
3 years 4 months ago - 3 years 4 months ago #208465 by AnnaBurmeister
Replied by AnnaBurmeister on topic Validierung von Adressdaten
Auch mit der Einarbeitung des neuen Validierungshinweises bekomme ich diese Fehlermeldung (Siehe Attachment). Es ist verhext.
Last edit: 3 years 4 months ago by AnnaBurmeister.
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 4 months ago - 3 years 4 months ago #208468 by Joffm
Replied by Joffm on topic Validierung von Adressdaten
Das ist merkwürdig.
Es wird anscheinend kein Fehlertext angegeben (er ist nicht rot), trotzdem ist die Frage noch fehlerbehaftet.

Also her mit dem lss export.

Joffm

Oh, sorry,
Ich habe gerade gesehen, dass ich die "alte" Validierungsgleichung als "kann so bleiben" eingefügt hatte.
!is_empty(KontaktStandort1_SQ001_SQ001.NAOK) AND !is_empty(KontaktStandort1_SQ002_SQ001.NAOK) AND !is_empty(KontaktStandort1_SQ003_SQ001.NAOK) AND !is_empty(KontaktStandort1_SQ005_SQ001.NAOK) AND !is_empty(KontaktStandort1_SQ006_SQ001.NAOK) AND !is_empty(KontaktStandort1_SQ007_SQ001.NAOK) AND !is_empty(KontaktStandort1_SQ008_SQ001.NAOK) AND !is_empty(KontaktStandort1_SQ012_SQ001.NAOK) AND regexMatch('/^[1-9]+[0-9]+[0-9]+[A-Za-z]?$/',KontaktStandort1_SQ003_SQ001.NAOK) AND regexMatch('/^[0-9][0-9][0-9][0-9][0-9]$/',KontaktStandort1_SQ005_SQ001.NAOK) AND regexMatch('/^.+?@.+?\..+$/',KontaktStandort1_SQ008_SQ001.NAOK)
Da steht ja dieser Unsinn drin.

Nein , sie muss lauten:
!is_empty(KontaktStandort1_SQ001_SQ001.NAOK) AND !is_empty(KontaktStandort1_SQ002_SQ001.NAOK) AND !is_empty(KontaktStandort1_SQ003_SQ001.NAOK) AND !is_empty(KontaktStandort1_SQ005_SQ001.NAOK) AND !is_empty(KontaktStandort1_SQ006_SQ001.NAOK) AND !is_empty(KontaktStandort1_SQ007_SQ001.NAOK) AND !is_empty(KontaktStandort1_SQ008_SQ001.NAOK) AND !is_empty(KontaktStandort1_SQ012_SQ001.NAOK) AND regexMatch('/^[1-9][0-9]+[A-Za-z]?$/',KontaktStandort1_SQ003_SQ001.NAOK) AND regexMatch('/^[0-9][0-9][0-9][0-9][0-9]$/',KontaktStandort1_SQ005_SQ001.NAOK) AND regexMatch('/^.+?@.+?\..+$/',KontaktStandort1_SQ008_SQ001.NAOK)

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 3 years 4 months ago by Joffm.
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 4 months ago #208517 by Joffm
Replied by Joffm on topic Validierung von Adressdaten
Hallo, Anna,
zunächst einmal musste ich wohl meiner Vergreisung Tribut zollen.
Ich hatte Deine Formulierung "Hier werden nur zweistellige Hausnummern angenommen." interpretiert als "Ich kann keine dreistelligen Hausnummern eingeben" und nicht als "Ich kann keine einstelligen..."

Daher muss das Pluszeichen in der RegEx durch ein Sternchen ersetzt werden.

Außerdem habe ich noch einen Validierungstext für die letzte Teilfrage (Dropdown) zugefügt; der Text sollte vielleicht geändert werden.
Wenn ich richtig liege, wird der Name ja aus einer Vorfrage eingefügt, oder?

Hier also das "Gesamtkunstwerk".

File Attachment:

File Name: limesurvey...5_JK.lss
File Size:32 KB


Bis dann
Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The following user(s) said Thank You: AnnaBurmeister
The topic has been locked.
  • AnnaBurmeister
  • AnnaBurmeister's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
3 years 4 months ago #208719 by AnnaBurmeister
Replied by AnnaBurmeister on topic Validierung von Adressdaten
Herzlichen Dank für all die Mühe! Mittlerweile funktioniert es auch bei uns!

Die Antworten hier im Forum sind echt große Klasse. Vielen Dank für all die Mühe der Antwortenden.
The topic has been locked.
  • AnnaBurmeister
  • AnnaBurmeister's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
3 years 1 month ago #213533 by AnnaBurmeister
Replied by AnnaBurmeister on topic Validierung von Adressdaten
Entschuldigung, dass ich nochmal in dieser Sache um Hilfe fragen muss. 

Nach ein paar Verschiebungen bekomme ich die Validierung in der Frage [Kontakt1OSS] nicht mehr zum Laufen.
Für
Kontakt1OSS_SQ002_SQ001  
Kontakt1OSS_SQ003_SQ001
Kontakt1OSS_SQ005_SQ001 
Kontakt1OSS_SQ006_SQ001
Soll allgemein "Mit * gekennzeichnete Felder sind Pflichtfelder!" angezeigt werden.
Für das Felder
Kontakt1OSS_SQ003_SQ001
if(!regexMatch('/^[1-9][0-9]*[A-Za-z]?([-][1-9][0-9]*[A-Za-z]?)?$/',Kontakt1OSS_SQ003_SQ001.NAOK),"Bitte geben Sie eine gültige Hausnummer ein!",
Die fettgedruckten Angaben sind eine neue Ergänzung 
und für das Feld
if(!regexMatch('/^[0-9][0-9][0-9][0-9][0-9]$/',Kontakt1OSS_SQ005_SQ001.NAOK),"Bitte geben Sie eine gültige PLZ ein!")

Könnte mir bitte jemand helfen, wo sich der Fehler verbirgt? 

Außerdem habe ich noch eine zweite Frage:

Ich würde gern als Antwort zu einigen Teilfragen von [Kontakt1OSS] die Angabe von [Kontaktinfozentral] pipen
z. B. SQ008 (E-Mail-Adresse der Anlaufstelle) --> Kontaktinfozentral_SQ001
So soll das am Ende aussehen:
E-Mail-Adresse der Anlaufstelle:  [Angabe von Kontaktinfozentral]

Meine Versuche mit {Kontaktinfozentral_SQ001.shown} oder !is_empty(Kontaktinfozentral_SQ001.NAOK) als Angabe in der Relevanz-Gleichung der jeweiligen Teilfrage waren nicht erfolgreich.

Vielen Dank im Voraus für Hinweise!
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 1 month ago #213539 by Joffm
Replied by Joffm on topic Validierung von Adressdaten
Bitte, keine lsq Exporte, nur lss.

Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The topic has been locked.
Moderators: Joffm

Lime-years ahead

Online-surveys for every purse and purpose