Seite 1 von 1

Kontaktformular Eingabe mit Nullen auffüllen

Verfasst: Do 2. Okt 2008, 11:53
von marphin
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

Verfasst: Do 2. Okt 2008, 13:15
von MichFress
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.

Verfasst: Do 2. Okt 2008, 15:33
von marphin
Danke,

genau das war es:

Code: Alles auswählen

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