php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 13.11.2008, 20:48  
vyo
Benutzer
 
Registriert seit: 13.11.2008
Beiträge: 47
vyo befindet sich auf einem aufstrebenden Ast
Standard Formular

Ich komm momentan nicht wirklich weiter in meinem Registrierungsformular:

Und zwar habe ich hier mein Formular und ist z.B. der Name zu kurz, erzeuge ich mit PHP eine Extra-Zeile über dem Eingabe-Feld mit der Fehlermeldung.

Doch sind nun wirklich keinerlei Fehler im ganzen Formular vorhanden und alle Angaben gemacht worden, die benötigt sind, erst DANN kann ich ja bestimmen, dass es keine Fehler gibt mit einer Variable. Denn mein Ziel ist es, dass ich das Registrierungsformular ausblende, sobald keine Fehler vorhanden sind und nur noch die Nachricht: "Registrierung erfolgreich!" dort steht. Doch das kann ja nicht gehen, wenn das Formular erstmal durchlaufen werden muss.

Gibt es dennoch eine Möglichkeit dies zu lösen?
vyo ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 13.11.2008, 20:51  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.988
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Ja. Trenne Formular und Formularvalidierung. Siehe dazu auch unser Wiki. Z.B. http://www.php.de/wiki-php/index.php...rdverfahren%29

Ansonsten: Willkommen im Forum!
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 13.11.2008, 20:56  
vyo
Benutzer
 
Registriert seit: 13.11.2008
Beiträge: 47
vyo befindet sich auf einem aufstrebenden Ast
Standard

Dankeschön, werde ich mal reinschauen.

PS: Danke, wurde soeben erfolgreich aus einem anderen großen PHP-Forum von schlecht gelaunten Moderatoren mit "Kennste schon if-else?" vergrault wegen dieser Frage.
vyo ist offline  
Alt 13.11.2008, 21:59  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.988
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Bitte beachten: Anmerkungen zu Multipostings
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 13.11.2008, 22:47  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Ich mach das so:

PHP-Code über den HTML-Code, im Formular dann <form action="" method="post">

PHP prüft dann die Daten im $_POST-Array und erzeugt bei festgestellten Fehlern eine Fehlervariable $fehler, z.B. : $fehler .= 'Bitte PLZ eingeben<br />'

Wird kein Fehler festgestellt, dann werden die Daten weiterverarbeitet (gespeichert, gemailt usw. und eine Dankeseite geladen. Wenn $fehler einen Inhalt hat, dann wird php beendet und die HTML-Seite wieder neu angezeigt. Dort gibst du $fehler aus, so wie du das ja wohl auch schon tust.
Die values der Input-Felder werden dann aus den PHP-Variablen gefüllt.
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline  
Alt 13.11.2008, 22:59  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.988
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Oder kurz:
Code:
if (submit) {
  error = Validierung
  }

if (!error) {
  Verarbeitung
  Ende
  }

if (error) Fehlermeldung
Formular mit Selbstaufruf und Wiederauffüllen
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 14.11.2008, 07:11  
vyo
Benutzer
 
Registriert seit: 13.11.2008
Beiträge: 47
vyo befindet sich auf einem aufstrebenden Ast
Standard

Also, um das ganze zu verdeutlichen - mein Code sieht derzeit so aus:

PHP-Code:
// Wenn alle Angaben korrekt sind, diese in der Datenbank speichern und E-Mail-Bestätigung zusenden:
if ($register AND empty($i)) {

        
$pass password(5);
          
mysql_query("INSERT INTO users (prename,surname,email,password,gender,regdate) 
        VALUES ('"
.addslashes($prename)."','".addslashes($surname)."','$mail_1','$pass','$gender',NOW())");
        
        
# Mail verschicken, dass die Registrierung erfolgreich war #
        
mail("$mail_1""".REG_MAIL_TITLE."""".REG_MAIL_TEXT.""
        
"From: info@$urlvar\nReply-To: info@$urlvar\nX-Mailer: PHP/");
        
        echo 
"".REG_OK.""; }
        

        echo 
"<table width='100%'>
        <form action='?site=register' method='post'>"
;
        
if (
$register AND strlen($prename) < 1) { $i=1;
        echo 
"<tr><td colspan='2'>".X_PRENAME_LEN."</td></tr>"; }

echo     
"<tr>
        <td>"
.PRENAME.":</td>
        <td><input type='text' name='prename'></tr>"
;


if (
$register AND strlen($surname) < 1) { $i=1;
        echo 
"<tr><td colspan='2'>".X_SURNAME_LEN."</td></tr>"; }

echo     
"<tr>
        <td>"
.SURNAME.":</td>
        <td><input type='text' name='surname'></tr>
                
        <tr>
        <td>"
.GENDER.":</td>
        <td>
        männlich <input value='m' type='radio' name='gender' checked> 
        weiblich <input value='f' type='radio' name='gender'>
        </tr>"
;

if (
$register AND !eregi('^[A-Z]+(-?.?[0-9A-Z]+)+@{1}([0-9A-Z-]+.{1})+([A-Z]{2,4})$',$mail_1)) { $i=1;
        echo 
"<tr><td colspan='2'>".X_EMAIL_INVALID."</td></tr>"; }
                
        echo 
"<tr>
        <td>"
.MAIL_ADRESS.":</td>
        <td><input type='text' name='mail_1'></tr>"
;
        
if (
$register AND !eregi('^[A-Z]+(-?.?[0-9A-Z]+)+@{1}([0-9A-Z-]+.{1})+([A-Z]{2,4})$',$mail_2)) { $i=1;
        echo 
"<tr><td colspan='2'>".X_EMAIL_INVALID."</td></tr>"; }
elseif (
$register AND $mail_2 != $mail_1) { $i=1; echo "<tr><td colspan='2' width='35%'>".X_EMAIL_MATCH."</td></tr>"; }

        echo 
"<tr>
        <td>"
.MAIL_ADRESS.": *</td>
        <td><input type='text' name='mail_2'></tr>

        <tr><td></td><td>
        
        <input type='submit' name='register' value='"
.REGISTER."'> 
        <input type='reset' name='reset' value='"
.RESET."'>
        </td></tr></form>
        
        </table>"

Ganz oben wollte ich mit $i überprüfen, ob ein Fehler besteht. Aber das kann ja nicht gehen, weil erst durchlaufen werden muss, ob es einen gibt. Mein Ziel ist es aber, dass das Formular nicht mehr angezeigt wird, sobald es keinen Fehler gibt.

Mir würde bzgl. meiner Absicht nur so ein Schema dazu einfallen, aber das wär blöd:

Code:
if (post){

if (error){ zeige formular mit fehlermeldung(en) }
else { zeige kein formular mehr und erfolgsmeldung

}

else{ zeige formular }
Und das Problem hierbei wäre ja, dass ich zwei Mal den Code für das Formular schreiben müsste und das wär ja schwachsinnig (einmal ein exakt gleiches Formular mit Fehlermeldungen und einmal ein "unbenutztes" Formular, wenn man die Seite betritt.

Ich dachte auch daran, dass ich vielleicht mit Javascript direkt überprüfen lasse, ob was falsch ist, doch fehlen mir da leider die Kenntnisse für und ich weiß auch nicht wie sehr Browserkompatibel das generell ist.
vyo ist offline  
Alt 14.11.2008, 08:20  
Neuer Benutzer
 
Registriert seit: 13.11.2008
Beiträge: 20
Wm2k6 befindet sich auf einem aufstrebenden Ast
Standard

gib doch nach der Meldung "Registrierung erfolgreich" ein
PHP-Code:
exit(); 
ein dann wird das Formular ja auch nicht mehr angezeigt.

Ich habe mein Formular auch selber zusammen gewürfelt, aus versch. Tutorials aber dafür klappt es 100%.

Bei mir ist es so "Fehlermeldung werden unter dem Formular angezeigt"


und nach erfolgreicher Registrierung erscheint nur die Meldung und das Formular wird nicht mehr angezeigt.

mfg

Geändert von Wm2k6 (14.11.2008 um 08:27 Uhr).
Wm2k6 ist offline  
Alt 14.11.2008, 10:11  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.988
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Wichtig ist das Wiederbefüllen des Formulars und klare Meldungen, was an den Einträgen falsch ist.

Ich sehe bei Dir auch keine Superglobalen. Falls Du also mit register_globals on arbeitest, solltest Du das schnell ändern.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 14.11.2008, 10:40  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
Zitat von vyo Beitrag anzeigen
Ganz oben wollte ich mit $i überprüfen, ob ein Fehler besteht. Aber das kann ja nicht gehen, weil erst durchlaufen werden muss, ob es einen gibt.
Das liegt nur daran, dass Du Dein Skript so aufgebaut hast
Code:
Parameter X prüfen
HTML für X ausgeben
Parameter Y prüfen
HTML für Y ausgeben
Parameter Z prüfen
HTML für Z ausgeben
Du musst Dein Skript umbauen. Wie nikosch schon schrieb.
Bringe es in die Form
Code:
Parameter X prüfen
Parameter Y prüfen
Parameter Z prüfen
Wenn keine Fehler
- Verarbeitung
sonst
- HTML für X ausgeben
- HTML für Y ausgeben
- HTML für Z ausgeben
David 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
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
Datenbank auslesen, in Formular darstellen und �ndern PHP Tipps 2006 8 22.02.2006 17:51
[Erledigt] Formular in Formular HTML, Usability und Barrierefreiheit 4 19.10.2005 12:18
[Erledigt] Formular testen .... HTML, Usability und Barrierefreiheit 7 19.09.2005 14:03
[Erledigt] PHP Formular ~~wichtig~~ PHP Tipps 2005 27 29.05.2005 19:38
Formular --> Ergebnis auf anderer Seite anzeigen Jojo1 PHP Tipps 2005 58 01.02.2005 17:13
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
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
fehler formular selbstaufruf wiederbefüllen

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:16 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