php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 06.12.2004, 16:33  
Gast
 
Beiträge: n/a
Standard Formular Eingabeprüfung

Hallo,

ich habe mich jetzt den Mittag über in das Forum gestürtz und habe auch einige Ansätze über die Überprüfung von Formularen gefunden. Doch leider komme ich damit nicht zurecht.

Nun meine Frage, könnte einer von euch mal den Code hier so ändern, das dass Formular auf eingabe überprüft wird und falls nicht alles eingegeben wurde es die bereits eingegebenen Werte behält und das Formular zur vervollständigung nochmals ausgiebt. Sobald alles ausgefüllt wurde, so es per mail verschickt werden.

Code:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>">


Name

<INPUT size=30 name=Name value="<?php if (isset($_REQUEST['Name'])) echo htmlspecialchars($_REQUEST['Name']); ?>">





Auswahlbox

<SELECT size=1 name=Auswahlbox> 
<OPTION selected></OPTION> 
<OPTION>OPTION1</OPTION> 
<OPTION>OPTION2</OPTION> 
<OPTION>OPTION3</OPTION> 
<OPTION>OPTION4</OPTION> 
<OPTION>OPTION5</OPTION>
</SELECT>




Versandart:
Post <INPUT type=radio 
value=Post name=Versandart>
Fax <INPUT type=radio value=Fax name=Versandart> 

Hinweise
<TEXTAREA name=Fachinformation rows=10 cols=50></TEXTAREA>


AGB gelesen<input type="checkbox" name="gelesen" value="checkbox">



<input type="submit" value="abschicken" name="submit">
<input type="reset" value="l&ouml;schen" name="reset">

</FORM>
Ich weiß das dies viel Arbeit ist, falls aber einer dies machen könnte wäre ich ihm dankbar, dies könnte man dann auch evtl. als FAQ nützen.

Danke im voraus...

Schatt
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 06.12.2004, 16:46  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 646
Magic befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Nun meine Frage, könnte einer von euch mal den Code hier so ändern, [...]
Nö.

An dem Code selbst muss nichts geändert werden. Es muss der PHP-Teil hinzugefügt werden und wie das geht, kannst du auch selbst nachlesen, sonst lernst du es nicht.

http://tut.php-q.net/formulare.html

Ausserdem suchst du dir hier das raus, was du dafür benötigst. Also z.B. if/else, $_GET $_POST, mail(),...
Magic ist offline  
Alt 28.12.2004, 11:49  
Gast
 
Beiträge: n/a
Standard Immer noch das Formular

Hallo, also ich habe mich jetzt hingesetz und mal versucht das ganze zu begreiffen, mit Hilfe der von dir gelinkten Seiten. Habe jetzt folgenden Code:

Code:
<html>
<head>

</head>
<body>
<?php

// Funktion zum Drucken von Fehlermeldungen
function errmsg($msg) {
   ?>
   <font color="#cc0000"><?php print nl2br($msg) ?></font>
   <?php
}

// Überprüft Eingabewerte für $textfeld auf Korrektheit.
function validate_nn($val) {
   $msg = "";
   if (strlen($val) < 1)
      $msg .= "Bitte füllen Sie das Feld Nachname aus.\n";

   return $msg;
}

function validate_vn($val) {
   $msg = "";
   if (strlen($val) < 1)
      $msg .= "Bitte füllen Sie das Feld Vorname aus.\n";

   return $msg;
}


function validate_Versandart($val) {
   	$msg = "";
	if (empty ($_REQUEST["Versandart"])) 
	$msg .= "Bitte geben Sie eine Versandart an.\n";

   return $msg;
}

 
// Für jedes Formularfeld werden nun ein oder mehrere
// Validatoren aufgerufen und das Ergebnis der Überprüfung
// gemerkt.

$valid = true;
if (isset($_REQUEST["nn"])) {
   $error["nn"] = validate_nn($_REQUEST["nn"]);
   if ($error["nn"] != "")
      $valid = false;
}

$valid = true;
if (isset($_REQUEST["vn"])) {
   $error["vn"] = validate_vn($_REQUEST["vn"]);
   if ($error["vn"] != "")
      $valid = false;
}

$valid = true;
if (empty ($_REQUEST["Versandart"])) {
   $error["Versandart"] = validate_Versandart($_REQUEST["Versandart"]);
   if ($error["Versandart"] != "")
      $valid = false;
}

?>
Bitte geben Sie einen Namen ein und senden Sie das Formular ab:
<form action = "<?php $PHP_SELF ?>" method = "post">
    <input name = "nn" value="<?php if (isset($_REQUEST['nn'])) echo htmlspecialchars($_REQUEST['nn']); ?>">> Nachname


    <input name = "vn" value="<?php if (isset($_REQUEST['vn'])) echo htmlspecialchars($_REQUEST['vn']); ?>">> Vorname


	
	<select name="Beruf" size="1">
                          <option></option>
                          <option>Test1</option>
                          <option>Test2</option>
                          <option>Test3</option>
                          <option>Test4</option>
                          <option>Test5</option>
                        </select>


				

	Post <input type="radio" name="Versandart" value="Post">
    Fax <input type="radio" name="Versandart" value="Fax">


	
<?php
// Ggf. Fehlermeldung ausdrucken.
if ($error["nn"] != "")
   print errmsg($error["nn"]);

if ($error["vn"] != "")
   print errmsg($error["vn"]);

if ($error["Versandart"] != "")
   print errmsg($error["Versandart"]);
  
  

?>

	
    <input type = "submit" name = "gesendet">
    <input type = "reset">
</form>
</body>
</html>
Wie ich es anschließend per Mail verschicke ist mir klar, deshalb habe ich diesen Teil mal ausgelassen. Das obige Formular funktioniert auch einwandfrei nur wenn die Seite das erstemal aufgerufen wird kommt gleich die Meldung das die Versandart nicht angegeben wurde. Das passiert bei den Namen nicht ??? Warum? Kann mir da jemand einen Tip geben??

Danke Schatt
 
Alt 28.12.2004, 11:58  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.235
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Du kannst derartige Probleme recht einfach mit einem kleinen Trick umgehen. In deinem Formular fügst du z.B. folgende Zeile hinzu: <input type="hidden" name="filled" value="true">

Das erste was du machst, ist zu prüfen, ob $_REQUEST['filled'] existiert. Wenn es existiert, machst du die ganzen Prüfungen etc. Wenn es aber nicht existiert, bedeutet dies, dass das Formular noch gar nicht abgeschickt wurde und du daher das Formular leer ohne Inhalte und ohne Eingabeprüfungen und ohne Mailversand einfach nur ausgibst.

Das ist zwar etwas hinten rum durch die Brust ins Auge, aber so kannst du etwas klarer erkennen, ob dein Formular schon abgeschickt wurde oder ob es nicht abgeschickt wurde (erstes Betreten der Seite z.B.).
mepeisen ist offline  
Alt 28.12.2004, 12:35  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

so. ^^
PHP-Code:
<?php

   
# Datei validateInput.inc.php

   // Session starten
   // [url]http://php.net/session_start[/url]
   
session_start();

   
// [url]http://php.net/isset[/url]
   
if( isset($_POST['sent']) )
   {
        
/** Überprüfen, ob alles ausgefüllt ist.
         *  Du kannst auch mit einer "for each - Schleife" durch
         *  das $_POST-Array laufen.
         */


        // Mehrdimensionales Array wird initialisiert. 
        
$_SESSION['error']  = array();


        
// [url]http://php-info.org/viewtopic.php?p=159#209[/url]
        
foreach( $_POST as $key => $value )
        { 
             
// [url]http://php.net/strcmp[/url] 
             
if( strcmp(trim($value),'') == )
             {
                 
$_SESSION['error'][] = $key;
             }
             else
             {
                 
$_SESSION[$key] = $value;
             }
        }     


        
// Zurückleiten zur Datei mit dem Formular, falls ein Fehler aufgetreten ist
        
if( $count($_SESSION['error']) > )
        {
             
// [url]http://php.net/header[/url] --> Anmerkungen beachten
             
header'Location: [url]http://pfadzuderdatei[/url] ');
             exit();    
        }
        else
        {
             
// Mail abschicken
             // [url]http://php.net/mail[/url]

             // und weiterleiten
             
header'Location: [url]http://irgendwohin[/url] ');
             exit();                
        }
   }
   else
   {
        
header'Location: [url]http://pfadzuderdatei[/url] ');
        exit();         
   }


?>



<?php

   
# Datei formular.php


   // Session starten (Link: siehe oben)
   
session_start();

   
// Definition der Schriftfarbe, wenn nichts eingegeben wurde.
   
$cssErrorVorne  '<span style="color:#ff0000;">';
   
$cssErrorHinten '</span>';


   
// Array, welches die anzuzeigenden Fehler enthält
   
$_error = array();

   foreach( 
$_SESSION['error'] as $key )
   {
        
$_error[$key]['vorne']  = $cssErrorVorne
        
$_error[$key]['hinten'] = $cssErrorHinten
   }

   

   
// Ausgabe des Formulars 
   // [url]http://php.net/printf[/url]
   
printf'<form action="validateInput.inc.php" method="post">
               
               %sName:%s      <input type="text" name="vorname" value="%s" />
               %sVorname:%s  <input type="text" name="nachname" value="%s" />
                
               <input type="hidden" name="sent" value="1" />
               <input type="submit" name="submit" value="Abschicken" />
                  
            </form>'
,
           
$_error['vorname']['vorne'],
           
$_error['vorname']['hinten'],
           
$_SESSION['vorname'],
           
$_error['nachname']['vorne'],
           
$_error['nachname']['hinten'],
           
$_SESSION['nachname'] );
  
?>
also. ich habe hier kein PHP zur verfügung .. konnte also nichts testen.
aber von der logik her ... ich habs nur noch mal kurz zum test überflogen sollte das eigentlich funktionieren
bei der farblichen kennzeichnung bin ich mir nicht ganz sicher.

teste das mal bitte wer.
danke.

grüße ben.


PS:
ich hab echt gezögert, ob ich das abschicken soll .. aber ... zack. passiert. ^^
imported_Ben ist offline  
Alt 28.12.2004, 14:51  
Gast
 
Beiträge: n/a
Standard

Hallo,

hab es mit der Lösung von mpeisen hinbekommen !
Danke für die Hilfe von euch. Und @Ben danke für den langen Code,
aber mach es doch lieber auf die einfache art :wink: !!
 
Alt 28.12.2004, 19:25  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

du hast ihn noch nicht einmal getestet? nicht nur ein kurzes mal? find ich doof.

btw:
der code ist einfach.
imported_Ben ist offline  
Alt 04.01.2005, 01:25  
Gast
 
Beiträge: n/a
Standard

und er geht Ben
 
Alt 04.01.2005, 03:42  
Erfahrener Benutzer
 
Registriert seit: 26.09.2004
Beiträge: 430
toscho
Standard

Zitat:
Zitat von mepeisen
Du kannst derartige Probleme recht einfach mit einem kleinen Trick umgehen. […]
Das erste was du machst, ist zu prüfen, ob $_REQUEST['filled'] existiert.
Sauberer und eleganter:
Code:
if($_SERVER['REQUEST_METHOD'] == "POST") {
// Prüfen…
}
Die Krücke mit dem Extrafeld ist doch sehr umständlich.

Gruß
Thomas
toscho ist offline  
Alt 04.01.2005, 09:39  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von 2Fast4UeXtrem
und er geht Ben
geil. haha ... ohne test. yeah ..
imported_Ben ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PHP: Formular Generator Zergling-new Tutorials 16 06.07.2010 03:14
Ergebnis von Formular in iFrame zeigen PsychoEagle HTML, Usability und Barrierefreiheit 2 22.07.2009 21:07
Wert aus Textfeld in neues Formular übernehmen (kein Submit) PsychoEagle HTML, Usability und Barrierefreiheit 9 02.01.2007 14:51
formular an mehrere email-empfänger katarzyna PHP Tipps 2006 2 22.08.2006 07:42
formular includen samspa5 PHP Tipps 2006 13 18.03.2006 11:37
[Erledigt] Formular in Formular HTML, Usability und Barrierefreiheit 4 19.10.2005 12:18
leeres Formular PHP Tipps 2005-2 15 05.10.2005 16:49
[Erledigt] PHP Formular ~~wichtig~~ PHP Tipps 2005 27 29.05.2005 19:38
Im Formular user abfragen? Datenbanken 3 06.01.2005 10:51
Formular nach UPDATE anzeigen PHP Tipps 2004-2 5 22.12.2004 02:06
[Erledigt] Daten in einem Formular ausgeben und ändern PHP Tipps 2004-2 7 07.12.2004 17:22
Wie implementiere ich mein Email Formular? PHP Tipps 2004-2 2 14.11.2004 17:02
Brauche PHP Formular Beitragsarchiv 9 16.08.2004 16:23
[Erledigt] Formular mit Daten werden auf anderer Seite zusammengefasst PHP Tipps 2004 4 15.08.2004 15:44
[Erledigt] Daten in neuem Formular anzeigen PHP Tipps 2004 6 21.07.2004 10:44

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php eingabeprüfung, php saubere überprüfung von eingabefelder, eingabeprüfung php, http://www.php.de/php-tipps-2005/13644-formular-eingabepruefung.html, eingabe select option name mit $_request prüfen, html eingabeprüfung, php eingabepruefung, php formular prüfung, formular get php hinten anhängen, formular mit eingabeprüfung php, if (isset ($_post[\'gesendet\'])) {$_session[\'error\'] = array();foreach ($_post as $key => $value) {, html eingabeprüfungen, php richtlinien eingabeprüfung, php: eingabeprüfungen, php:eingabeprüfungen, php eingabeprüfungen, php kontaktformular behält eingaben, php eingabeprüfung formular, php formular eingabeprüfung danke, php eingabeprüfung sql

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:43 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.