Kontaktformular Eingabe mit Nullen auffüllen

Gesperrt
marphin
Beiträge: 196
Registriert: Mo 24. Nov 2003, 13:01

Kontaktformular Eingabe mit Nullen auffüllen

Beitrag von marphin » Do 2. Okt 2008, 11:53

Hallo,

da ich nach längerer Suche nichts dazu gefunden habe, hier meine Frage:

Ich habe das Standard-Kontaktformular umgebaut und hätte gerne für eine Zählerstandeingabe, dass man 5 zahlen eingeben muss. Wenn der Stand 10 beträgt, lassen sich die davor eingegebenen Nullen (00010) eingeben, werden aber nicht übertragen. Weiß jemand, wie ich das festlegen kann?

Hier der Output-Code des Moduls (es geht um den 5-stelligen Zählerstand):

Code: Alles auswählen

<?php
/**
* $RCSfile$
*
* Description: Contact Form Output
*
* @version 1.0.0
* @author Andreas Lindner
* @copyright four for business AG <www.4fb.de>
*
* {@internal
* created 2005-08-12
* modified 2008-04-11 Rudi Bieller Changes concerning new layout
* }}
*
* $Id$
*/

#Includes
cInclude("classes", "class.phpmailer.php");

if (!isset($tpl) || !is_object($tpl)) {
    $tpl = new Template();
}

if (!isset ($_POST['send'])) {
    #Form has not been sent yet
    cInclude('classes', 'class.article.php');
    cInclude('classes', 'class.template.php');

    #Create contact form
    $sFormAction = $sess->url("front_content.php?idcat=$idcat&idart=$idart&parentid=$parentid");
    $tpl->set("s", 'form_action', $sFormAction);
    $tpl->set("s", "INFO", mi18n("Bin an Info-Mails interessiert"));
    $tpl->set("s", "INFO_OPTION1", mi18n("Ja"));
    $tpl->set("s", "INFO_OPTION2", mi18n("Nein"));
    $tpl->set("s", "NACHNAME", mi18n("Name"));
    $tpl->set("s", "VORNAME", mi18n("Vorname"));
    $tpl->set("s", "KDNUMMER", mi18n("7-stellige Kunden-Nr."));
    $tpl->set("s", "STRASSE", mi18n("Straße/Nr."));
    $tpl->set("s", "ORTSTEIL", mi18n("Ortsteil"));
    $tpl->set("s", "ZAEHLERNUMMER", mi18n("Zähler-Nr."));
    $tpl->set("s", "EDVNUMMER", mi18n("EDV-Nr."));
    $tpl->set("s", "ZAEHLERSTAND", mi18n("5-stelliger Zählerstand"));
    $tpl->set("s", "EMAIL", mi18n("E-Mail"));
    $tpl->set("s", "BEMERKUNGEN", mi18n("Bemerkungen"));
    $tpl->set("s", "PFLICHTFELDER", mi18n("Bitte alle Felder ausfüllen"));
    $tpl->set("s", "ABSCHICKEN", mi18n("abschicken"));
    $tpl->set("s", "LOESCHEN", mi18n("löschen"));

    $tpl->generate($cfgClient[$client]["path"]["frontend"]."templates/zaehlerstand.html");
} elseif ($_POST['send'] == 1) {
    #Form has been sent

    #Check user input
    $noerrors = true;
    $msg = '';
    if ($_POST['Vorname'] == '') {
        $noerrors = false;
        $msg .= mi18n("Bitte geben Sie Ihren Vornamen ein!")."<br/>";
    }
    if ($_POST['Nachname'] == '') {
        $noerrors = false;
        $msg .= mi18n("Bitte geben Sie Ihren Namen ein!")."'<br/>";
    }
    if ($_POST['EMail'] == '') {
        $noerrors = false;
        $msg .= mi18n("Bitte geben Sie Ihre E-Mail-Adresse ein!")."<br/>";
    }
    if ($_POST['Strasse'] == '') {
        $noerrors = false;
        $msg .= mi18n("Bitte geben Sie Ihre Straße ein!")."<br/>";
    }
    if ($_POST['Ortsteil'] == '') {
        $noerrors = false;
        $msg .= mi18n("Bitte geben Sie Ihren Ortsteil ein!")."<br/>";
    }
        $_POST['KDnummer'] = (int) $_POST['KDnummer'];
        
           if (empty($_POST['KDnummer']) || strlen($_POST['KDnummer']) < 7 ) {
      $noerrors = false;
      $msg .= mi18n("Bitte geben Sie Ihre 7-stellige Kunden-Nummer richtig ein!")."<br/>";
          
    }
        $_POST['Zaehlerstand'] = (int) $_POST['Zaehlerstand'];
        
           if (empty($_POST['Zaehlerstand']) || strlen($_POST['Zaehlerstand']) < 5 ) {
      $noerrors = false;
      $msg .= mi18n("Bitte geben Sie Ihren 5-stelligen Zählerstand richtig ein!")."<br/>";
          
    }

    if ($noerrors == false) {
        echo "<p>";
        #Errors have been found
        echo "<strong>".mi18n("Beim Versenden sind folgende Fehler aufgetreten:")."</strong><br/>";
        echo $msg.'<br/>';
        echo '<a href="javascript:history.back();">&lsaquo; '.mi18n("zurück").'</a>';
    } else {
        #No errors, create and send mail
        $mail = new phpmailer;
        $mail_body = '<html><head></head><body bgcolor="#ffffff"><table cellspacing="0" cellpadding="10" border="0">';

        if (is_array($_POST)) {
            foreach ($_POST as $key => $value) {
                if ($key != 'send') {
                    $mail_body .= "<tr><td>$key</td><td>$value</td></tr>";
                }
            }
        }

        $mail_body .= '</table></bo'.'dy></html>';
        $mail->Host = "localhost";
        $mail->IsHTML(true);

        #Get mailer from settings
        switch (strtolower("CMS_VALUE[4]")) {
            case "smtp" :
                $mail->IsSMTP();
                $host = "CMS_VALUE[5]";
                $user = "CMS_VALUE[6]";
                $password = "CMS_VALUE[7]";
                if (($host != '') && ($user != '') && ($password != '')) {
                    $mail-> $SMTPAuth = true;
                    $mail->Host = $host;
                    $mail->Username = $user;
                    $mail->Password = $password;
                }
                break;
            case "mail" :
                $mail->IsMail();
                break;
            case "sendmail" :
                $mail->IsSendmail();
                break;
            case "qmail" :
                $mail->IsQmail();
                break;
            default :
                }
        $mail->From = "CMS_VALUE[0]";
        $mail->FromName = "CMS_VALUE[2]";
        $mail->AddAddress("CMS_VALUE[1]", "");
        $mail->Subject = "CMS_VALUE[3]";
        $mail->Body = $mail_body;
        $mail->WordWrap = 50;
        $mail->Send();
    
        #Display message after mail is sent
        echo mi18n("Ihr Formular wurde uns übermittelt. Vielen Dank!")."<br/>";
    }
}
?>


Viele Grüße und Danke schon Mal
Martin

MichFress
Beiträge: 750
Registriert: Mo 5. Jan 2004, 22:32
Wohnort: Bochum
Kontaktdaten:

Beitrag von MichFress » Do 2. Okt 2008, 13:15

Es wäre ein Versuch wert, wenn du statt

Code: Alles auswählen

$_POST['Zaehlerstand'] = (int) $_POST['Zaehlerstand'];
dieses schreibst:

Code: Alles auswählen

$_POST['Zaehlerstand'] = (string) $_POST['Zaehlerstand'];
oder:

Code: Alles auswählen

$_POST['Zaehlerstand'] = sprintf("%010s",$_POST['Zaehlerstand']);
Das hängt so viele Nullen an, bis die Zahl 10 Ziffern lang ist.
"Es wird keine Handlung geben, keine Geschichte mit ihrer Versprechung auf einen Anfang und ihrer Hoffnung auf ein Ende." (Andrzej Stasiuk)

marphin
Beiträge: 196
Registriert: Mo 24. Nov 2003, 13:01

Beitrag von marphin » Do 2. Okt 2008, 15:33

Danke,

genau das war es:

Code: Alles auswählen

Code:
$_POST['Zaehlerstand'] = sprintf("%010s",$_POST['Zaehlerstand']);
Viele Grüße
Martin

Gesperrt