Formatbeschränkungen für Eingabefelder

Diskussion zum Formular-Modul für ConPresso 4
Antworten
dutch
ConPresso-Experte
Beiträge: 547
Registriert: 04.07.2007 17:12
Hat sich bedankt: 27 Mal
Danksagung erhalten: 7 Mal

Formatbeschränkungen für Eingabefelder

Beitrag von dutch »

Hallo,

wie kann ich bei mod_form die Eingabe in Felder auf richtige Formate kontrollieren?
'authormail' macht das ja schon indirekt für E-Mails.

Es wäre toll, wenn es sowas auch für Felder gäbe, in die z.B. nur Zahlen eingegeben werden dürfen, oder nur ein bestimmtes Datumsformat.

Die Liste ist vermutlich beliebig erweiterbar, aber mit einer Beschränkung auf Zahlen wäre mir momentan schon geholfen 8)

Gruß,
dutch
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 933 Mal
Kontaktdaten:

Beitrag von MarkusR »

special-check.inc.php(.dist) ist Dein Freund!

Umbenennen zu special-check.inc.php und bearbeiten. Erklärung steht in der Datei.
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
dutch
ConPresso-Experte
Beiträge: 547
Registriert: 04.07.2007 17:12
Hat sich bedankt: 27 Mal
Danksagung erhalten: 7 Mal

Beitrag von dutch »

Hallo Markus,

bei mir gibt's nur eine special-chcek.inc.php, also ohne (.dist).

In der ist alles auskommentiert.
Die einzige Beispiel-Prüfung, die dort steht ist diese:

Code: Alles auswählen

if ( trim($_REQUEST['content']['Name (text)']['text']) != '' && strlen($_REQUEST['content']['Name (text)']['text']) < 3 ) {
     $form_error = true;
     $message[] = 'Diese Name ist aber arg kurz!';
     $_REQUEST['error']['Name (form)'] = true; // oder
     $_REQUEST['error']['Name (form)'] = 'Diese Name ist aber arg kurz!';
}
Wie kann ich das umbauen auf Zahlen-Prüfung?? :oops:

Gruß,
dutch
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 933 Mal
Kontaktdaten:

Beitrag von MarkusR »

Wäre es nicht auskommentiert, wäre es ja keine Erklärung, sondern ausführbarer Code...

Du bräuchtest mal jemanden, der Dir PHP beibringt, oder? :twisted:

Code: Alles auswählen

if ( trim($_REQUEST['content']['Zahl (text)']['text']) != '' && !is_numeric($_REQUEST['content']['Zahl (text)']['text']) ) { 
     $form_error = true; 
     $message[] = 'Whoa! Je dom! Dit moet een getal zijn!'; 
     $_REQUEST['error']['Zahl (form)'] = true;
}
Das sollte dann natürlich nicht auskommentiert sein... :wink:
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
dutch
ConPresso-Experte
Beiträge: 547
Registriert: 04.07.2007 17:12
Hat sich bedankt: 27 Mal
Danksagung erhalten: 7 Mal

Beitrag von dutch »

Danke!

Was ein PHP Kommentar ist, weiß ich noch... :D
Wollte ja nur sagen, dass ich keine .dist im Verzeichnis habe, sondern eben (schon) eine ohne .dist, in der dann alles (natürlich!) auskommentiert ist...

Ansonsten ist mein PHP-Wissen sicherlich unterentwickelt, keine Frage :oops:
Auf meiner Visitenkarte steht darum auch nicht PHP-Entwickler :wink:

Wenn ich es richtig versteht, muss ich dann für jeden Feldnamen eine eigene Prüfung anlegen?

Gruß,
dutch

P.S. Nette message auf Holländisch 8) close!
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 933 Mal
Kontaktdaten:

Beitrag von MarkusR »

Wenn ich es richtig versteht, muss ich dann für jeden Feldnamen eine eigene Prüfung anlegen?
Ja, und es lassen sich eben auch Abhängigkeiten prüfen.

Hier mal ein paar der über die Jahre von Kunden angefragten Prüfungen:

Code: Alles auswählen

	if ($_REQUEST['content']['Zahlungsweise (text)']['text'] == 'Lastschrift'
		&& (
			trim($_REQUEST['content']['Kontoinhaber (text)']['text'])=='' ||
			trim($_REQUEST['content']['IBAN (text)']['text'])=='' ||
			trim($_REQUEST['content']['BIC (text)']['text'])=='' ||
			trim($_REQUEST['content']['Name und Ort der Bank (text)']['text'])=='' ||
            $_REQUEST['content']['SEPA-Einverständnis (text)']['text']==''
			)
		) {
            $form_error = true;
            if (
                trim($_REQUEST['content']['Kontoinhaber (text)']['text'])=='' ||
                trim($_REQUEST['content']['IBAN (text)']['text'])=='' ||
                trim($_REQUEST['content']['BIC (text)']['text'])=='' ||
                trim($_REQUEST['content']['Name und Ort der Bank (text)']['text'])==''
            ) {
                if (trim($_REQUEST['content']['Kontoinhaber (text)']['text'])=='') $_REQUEST['error']['Kontoinhaber (form)']=true;
                if (trim($_REQUEST['content']['IBAN (text)']['text'])=='') $_REQUEST['error']['IBAN (form)']=true;
                if (trim($_REQUEST['content']['BIC (text)']['text'])=='') $_REQUEST['error']['BIC (form)']=true;
                if (trim($_REQUEST['content']['Name und Ort der Bank (text)']['text'])=='') $_REQUEST['error']['Name und Ort der Bank (form)']=true;
                $message[] = 'Für die Zahlungsweise "SEPA-Lastschrift" müssen Kontoinhaber, IBAN, BIC sowie Name und Ort der Bank angegeben werden. Bitte vervollständigen Sie die fehlenden Angaben zur Lastschrift!';
            }
            if ($_REQUEST['content']['SEPA-Einverständnis (text)']['text']=='') {
                $_REQUEST['error']['SEPA-Einverständnis (form)']=true;
                $message[] = 'Für die Zahlungsweise "SEPA-Lastschrift" müssen Sie Ihr Einverständnis bestätigen!';
            }
        }

Code: Alles auswählen

    if (trim($_REQUEST['content']['F 50 (text)']['text']) && $_REQUEST['content']['F 50 (text)']['text'] < 2 ) {
		$form_error = true;
		$mindestmengenfehler = true;
		$_REQUEST['error']['F 50 (form)']=true;
	}
	if (trim($_REQUEST['content']['F 100 (text)']['text']) && $_REQUEST['content']['F 100 (text)']['text'] < 2 ) {
		$form_error = true;
		$mindestmengenfehler = true;
		$_REQUEST['error']['F 100 (form)']=true;
	}
	if (trim($_REQUEST['content']['F 200 (text)']['text']) && $_REQUEST['content']['F 200 (text)']['text'] < 2 ) {
		$form_error = true;
		$mindestmengenfehler = true;
		$_REQUEST['error']['F 200 (form)']=true;
	}
	if (trim($_REQUEST['content']['F 300 (text)']['text']) && $_REQUEST['content']['F 300 (text)']['text'] < 2 ) {
		$form_error = true;
		$mindestmengenfehler = true;
		$_REQUEST['error']['F 300 (form)']=true;
	}
	if (trim($_REQUEST['content']['F 400 (text)']['text']) && $_REQUEST['content']['F 400 (text)']['text'] < 2 ) {
		$form_error = true;
		$mindestmengenfehler = true;
		$_REQUEST['error']['F 400 (form)']=true;
	}

Code: Alles auswählen

	$mengeSpeditionsWare = (int) $_REQUEST['content']['F 50 (text)']['text']
							+ (int) $_REQUEST['content']['F 100 (text)']['text']
							+ (int) $_REQUEST['content']['F 200 (text)']['text']
							+ (int) $_REQUEST['content']['F 300 (text)']['text']
							+ (int) $_REQUEST['content']['F 400 (text)']['text'];
	if ($mengeSpeditionsWare == 1) {
		$_REQUEST['error']['F 50 (form)']=true;
		$_REQUEST['error']['F 100 (form)']=true;
		$_REQUEST['error']['F 200 (form)']=true;
		$_REQUEST['error']['F 300 (form)']=true;
		$_REQUEST['error']['F 400 (form)']=true;
		$message[] = 'Für Speditionsware gilt eine Mindestabnahmemenge von 2 VE!';
	}

	if (
			trim($_REQUEST['content']['Lieferung Name (text)']['text']).
			trim($_REQUEST['content']['Lieferung Firmenname (text)']['text']).
			trim($_REQUEST['content']['Lieferung PLZ (text)']['text']).
			trim($_REQUEST['content']['Lieferung Ort (text)']['text']).
			trim($_REQUEST['content']['Lieferung Strasse (text)']['text']).
			trim($_REQUEST['content']['Lieferung Telefon (text)']['text'])!=''
		&& (
			trim($_REQUEST['content']['Lieferung Name (text)']['text'])=='' ||
			trim($_REQUEST['content']['Lieferung Firmenname (text)']['text'])=='' ||
			trim($_REQUEST['content']['Lieferung PLZ (text)']['text'])=='' ||
			trim($_REQUEST['content']['Lieferung Ort (text)']['text'])=='' ||
			trim($_REQUEST['content']['Lieferung Strasse (text)']['text'])=='' ||
			trim($_REQUEST['content']['Lieferung Telefon (text)']['text'])==''
			)
		) {
		$form_error = true;
		if (trim($_REQUEST['content']['Lieferung Name (text)']['text'])=='') $_REQUEST['error']['Lieferung Name (form)']=true;
		if (trim($_REQUEST['content']['Lieferung Firmenname (text)']['text'])=='') $_REQUEST['error']['Lieferung Firmenname (form)']=true;
		if (trim($_REQUEST['content']['Lieferung PLZ (text)']['text'])=='') $_REQUEST['error']['Lieferung PLZ (form)']=true;
		if (trim($_REQUEST['content']['Lieferung Ort (text)']['text'])=='') $_REQUEST['error']['Lieferung Ort (form)']=true;
		if (trim($_REQUEST['content']['Lieferung Strasse (text)']['text'])=='') $_REQUEST['error']['Lieferung Strasse (form)']=true;
		if (trim($_REQUEST['content']['Lieferung Telefon (text)']['text'])=='') $_REQUEST['error']['Lieferung Telefon (form)']=true;
		$message[] = 'Bei Angabe einer abweichenden Lieferanschrift müssen alle Felder ausgefüllt werden! Bitte vervollständigen Sie die fehlenden Angaben zur Lieferanschrift!';
	}

Code: Alles auswählen

// Rüden stimmen nicht!
if ( (int) $_REQUEST['content']['Zuchtbucheintragung Rüden (text)']['text'] != ( (int) $_REQUEST['content']['Rüden (text)']['text'] - (int) $_REQUEST['content']['tote Rüden (text)']['text'] - (int) $_REQUEST['content']['verendete Rüden (text)']['text']) )  { 
	$form_error = true;
    $_REQUEST['error']['Rüden (form)'] = 'Bitte prüfen!';
    $_REQUEST['error']['tote Rüden (form)'] = 'Bitte prüfen!';
    $_REQUEST['error']['verendete Rüden (form)'] = 'Bitte prüfen!';
    $_REQUEST['error']['Zuchtbucheintragung Rüden (form)'] = 'Bitte prüfen!';
	$message[] = 'Bitte prüfen Sie die Zahlenangaben für Rüden!<br />Die Anzahl für die Meldung zur Zuchtbucheintragung sollte der Wurfstärke abzüglich toter und verendeter Welpen entsprechen.';
}
	
// Hündinnen stimmen nicht!
if ( (int) $_REQUEST['content']['Zuchtbucheintragung Hündinnen (text)']['text'] != ( (int) $_REQUEST['content']['Hündinnen (text)']['text'] - (int) $_REQUEST['content']['tote Hündinnen (text)']['text'] - (int) $_REQUEST['content']['verendete Hündinnen (text)']['text']) )  { 
	$form_error = true;
    $_REQUEST['error']['Hündinnen (form)'] = 'Bitte prüfen!';
    $_REQUEST['error']['tote Hündinnen (form)'] = 'Bitte prüfen!';
    $_REQUEST['error']['verendete Hündinnen (form)'] = 'Bitte prüfen!';
    $_REQUEST['error']['Zuchtbucheintragung Hündinnen (form)'] = 'Bitte prüfen!';
	$message[] = 'Bitte prüfen Sie die Zahlenangaben für Hündinnen!<br />Die Anzahl für die Meldung zur Zuchtbucheintragung sollte der Wurfstärke abzüglich toter und verendeter Welpen entsprechen.';
}
	
// Datums-Check
// $_REQUEST['Erstes Deckdatum'], $_REQUEST['Letztes Deckdatum'], $_REQUEST['Wurfdatum']
// Datumseingabe ist o.k. wenn das Wurfdatum größergleich erstes Deckdatum plus 56 Tage und kleinergleich letztes Deckdatum plus 70 Tage ist.

// erstmal müssen die Datumswerte umgewandelt werden
$ErstesDeckdatumArray =		explode(".", $_REQUEST['content']['Erstes Deckdatum (text)']['text']);
$LetztesDeckdatumArray =	explode(".", $_REQUEST['content']['Letztes Deckdatum (text)']['text']);
$WurfdatumArray =			explode(".", $_REQUEST['content']['Wurfdatum (text)']['text']);

$ErstesDeckdatum =	strtotime($ErstesDeckdatumArray[2]."-".$ErstesDeckdatumArray[1]."-".$ErstesDeckdatumArray[0]);
$LetztesDeckdatum =	strtotime($LetztesDeckdatumArray[2]."-".$LetztesDeckdatumArray[1]."-".$LetztesDeckdatumArray[0]);
$Wurfdatum =		strtotime($WurfdatumArray[2]."-".$WurfdatumArray[1]."-".$WurfdatumArray[0]);

$DiffMin = 54 * ( 24 * 60 * 60 );
$DiffMax = 70 * ( 24 * 60 * 60 );

// jetzt prüfen
if ($Wurfdatum < ( $ErstesDeckdatum + $DiffMin ) OR $Wurfdatum > ( $LetztesDeckdatum + $DiffMax ) )  {
	$form_error = true;
    $_REQUEST['error']['Erstes Deckdatum (form)'] = 'Bitte prüfen!';
    $_REQUEST['error']['Letztes Deckdatum (form)'] = 'Bitte prüfen!';
    $_REQUEST['error']['Wurfdatum (form)'] = 'Bitte prüfen!';
	$message[] = 'Bitte prüfen Sie die Datumsangaben!<br />Die Datumseingabe ist o.k. wenn das Wurfdatum größergleich erstes Deckdatum plus 54 Tage und kleinergleich letztes Deckdatum plus 70 Tage ist.';
}
Datumsprüfungen macht das Formular übrigens schon selbst mittels des Parameters datecheck
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
dutch
ConPresso-Experte
Beiträge: 547
Registriert: 04.07.2007 17:12
Hat sich bedankt: 27 Mal
Danksagung erhalten: 7 Mal

Beitrag von dutch »

Danke!

Werde ich mich mal durchwurschteln...

Gruß,
dutch
Antworten