Portal > Foren > PHP > PHP-Programmierung > Formular - Eingabedaten beibehalten
Antwort
 
Themen-Optionen
Alt 04.07.2005, 11:15 Nach oben    #1
cengiz
Gast
 
Beiträge: n/a
Standard Formular - Eingabedaten beibehalten

Hallo,

ich möchte das erreichen was man in diesem tut sieht
Eingabeüberprüfung eines Formulars

hab es mal kopiert und noch ein echo hinzugefügt aber nichts passiert
formular.php
PHP-Code:
<?php

   
// Session starten
   
session_start();

   
// Definition der Schriftfarbe bei inkorrekter Eingabe
   
$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;
   }

   
printf'<form action="ueberpruefung.php" method="post">

               %sName:%s <input type="text" name="vorname" value="%s">
               %sVorname:%s  <input type="text" name="email" value="%s">

               <input type="hidden" name="sent" value="1">
               <input type="submit" name="submit" value="Abschicken">

            </form>'
,
           
$_error['name']['vorne'],
           
$_error['name']['hinten'],
           
$_SESSION['name'],
           
$_error['email']['vorne'],
           
$_error['email']['hinten'],
           
$_SESSION['email'] );
?>

PHP-Code:
<?php

   
// Session starten
   
session_start();

   
$_SESSION['error']  = array();

   
// Absicherung, dass die Datei auch über das Formular aufgerufen wurde
   
if( isset($_POST['gesendet']) ) {
     foreach( 
$_POST as $key => $value ) {
             
// Ist überhaupt etwas geschrieben worden?
             
if( strcmp(trim($value),'') == ) {
                 
$_SESSION['error'][] = $key;
                 echo 
'was eingeben';
             }
             else {
                 if( 
strcmp($key,'email') {
                       
ueberpruefeMail($value);
                 }
                 else {
                       
$_SESSION[$key] = $value;
                 }
             }
        }
   }
   else {
       
header'Location: http://xxx/neu/reservierung/session/formular.php' );
       exit();
    }


   if( 
$count($_SESSION['error']) > ) {
             
header'Location: [url]http://xxx/neu/reservierung/session/formular.php[/url] ' );
             exit();
        }
        else {
             
// Hier kann z.B. eine Mail abgeschickt und der User danach zu einer
             // Bestätigungsseite weitergeleitet werden.
             
header'Location: http://xxx/neu/reservierung/session/index.php' );
             exit();
        }

?>
und ist die fkt. 'ueberpruefeMail' eine selbst geschriebene fkt?

Geändert von Jann Hendrik (27.06.2007 um 11:01 Uhr). Grund: intern-tag-Fehler manuell angepasst
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.07.2005, 16:03 Nach oben    #2
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.213
Standard Formular - Eingabedaten beibehalten

Zitat:
Zitat von cengiz
hab es mal kopiert und noch ein echo hinzugefügt aber nichts passiert

[...]

und ist die fkt. 'ueberpruefeMail' eine selbst geschriebene fkt?
Hi!
Was genau passiert denn nicht?

Ja, die angesprochene Funktion ist eine eigene, die - wenn ich das gerade richtig gelesen habe - nur angedeutet ist. Also kannst du dort an der Stelle noch eine entspr. Funktion einbringen.
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.07.2005, 22:02 Nach oben    #3
cengiz
Gast
 
Beiträge: n/a
Standard Formular - Eingabedaten beibehalten

danke für die hilfe

hat sich schon erledigt

MfG
cengiz
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.07.2005, 08:33 Nach oben    #4
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.213
Standard Formular - Eingabedaten beibehalten

ok!
Woran lag es denn?
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.07.2005, 13:48 Nach oben    #5
cengiz
Gast
 
Beiträge: n/a
Standard Formular - Eingabedaten beibehalten

also ich hab es ganz primitiv gemacht und gebe das Formular immer neu aus mit den entsprechenden value-werten.

mit sessiond kenne ich mich nicht aus deswegen...
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.07.2005, 14:01 Nach oben    #6
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.213
Standard Formular - Eingabedaten beibehalten

das mit den session ist gar nicht so schwer!
das solltest du mal versuchen zu lernen!
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.07.2005, 14:44 Nach oben    #7
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
Standard Formular - Eingabedaten beibehalten

Hallo,
Zitat:
Zitat von cengiz
mit sessiond kenne ich mich nicht aus
schau einfach mal hier rein:
Daten per Session weiterleiten

Grüße Ben.

Geändert von Jann Hendrik (27.06.2007 um 11:02 Uhr). Grund: intern-tag-Fehler manuell angepasst
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.07.2005, 07:24 Nach oben    #8
cengiz
Gast
 
Beiträge: n/a
Standard Formular - Eingabedaten beibehalten

ok danke

ich werd mein Glück herausfordern
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.11.2005, 13:36 Nach oben    #9
Erfahrener Benutzer
 
Benutzerbild von Doggi
 
Registriert seit: 26.10.2005
Ort: Basel
Beiträge: 115
Standard Frust!!!

session.php (gleichzusetzen mit überprüfung.php)
PHP-Code:
<?php 

   
// Session starten 
   
session_start(); 

   
$_SESSION['error']  = array();

   
// Absicherung, dass die Datei auch über das Formular aufgerufen wurde 
   
if( isset($_POST['submit']) ) { 
     foreach( 
$_POST as $key => $value ) { 
             
// Ist überhaupt etwas geschrieben worden? 
             
if( strcmp(trim($value),'') == ) { 
                 
$_SESSION['error'][] = $key;
                 echo 
'was eingeben'
             } 
             else { echo 
"test";
                 if( 
strcmp($key,'email') { 
                       echo 
'mail';     //ueberpruefeMail($value); 
                 

                 else { 
                       
$_SESSION[$key] = $value
                 }              } 
        }     
   }    
   else { 
       
header'Location: http://localhost/xampp/backshop-beims/verlosung/index.php' ); 
       exit(); 
    }
   

 
if( 
$count($_SESSION['error']) > ) {     //Zeile 32  
             
header'Location: [url]http://http://localhost/xampp/backshop-beims/verlosung/index.php[/url] ' ); 
             exit();    
        } 
        else {         
             
// Hier kann z.B. eine Mail abgeschickt und der User danach zu einer 
             // Bestätigungsseite weitergeleitet werden. 
             
header'Location: http://localhost/xampp/backshop-beims/verlosung/index.php' ); 
             exit();                
        } 
 
?>
und das formular (hier index.php)

PHP-Code:
<?php 

   
// Session starten 
   
session_start(); 

   
$_SESSION['error']  = array();

   
// Absicherung, dass die Datei auch über das Formular aufgerufen wurde 
   
if( isset($_POST['submit']) ) { 
     foreach( 
$_POST as $key => $value ) { 
             
// Ist überhaupt etwas geschrieben worden? 
             
if( strcmp(trim($value),'') == ) { 
                 
$_SESSION['error'][] = $key;
                 echo 
'was eingeben'
             } 
             else { echo 
"test";
                 
/*if( strcmp($key,'email') { 
                       ueberpruefeMail($value); 
                 } 
                 else { 
                       $_SESSION[$key] = $value; 
                 } */
             

        }     
   }    
   else { 
       
header'Location: http://localhost/xampp/backshop-beims/verlosung/index.php' ); 
       exit(); 
    }
   

   if( 
$count($_SESSION['error']) > ) {     
             
header'Location: [url]http://http://localhost/xampp/backshop-beims/verlosung/index.php[/url] ' ); 
             exit();    
        } 
        else {         
             
// Hier kann z.B. eine Mail abgeschickt und der User danach zu einer 
             // Bestätigungsseite weitergeleitet werden. 
             
header'Location: http://localhost/xampp/backshop-beims/verlosung/index.php' ); 
             exit();                
        } 
 
?>
fehlermeldung:

parse erro in line 17

wenn ich im browser zurück gehe, ist name und email gehighlightet, allerdings muss ich manuell zurück.

anzumerken ist hier das alle *.html seiten bei mir *.php seiten sind ist ein bug des forums. daran liegt es also nicht.

//EDIT 1 es muss in der session.php nicht
PHP-Code:
if( isset($_POST['gesendet']) ) { 
sondern
PHP-Code:
if( isset($_POST['submit']) ) { 
da ja im formular name=submit ist und nicht gesendet.
nun mach ich mich mal an die anderen fehler.
__________________
Wer später bremst, fährt länger schnell...

Geändert von Doggi (10.11.2005 um 13:56 Uhr).
Doggi ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.11.2005, 13:42 Nach oben    #10
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
Standard

Hi,
kann es sein, dass es an dem Fehler liegt, auf den Chr!s mich aufmerksam gemacht hat?
http://forum.developers-guide.net/th....html#post4872
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.11.2005, 14:18 Nach oben    #11
Erfahrener Benutzer
 
Benutzerbild von Doggi
 
Registriert seit: 26.10.2005
Ort: Basel
Beiträge: 115
Standard

nein leider nicht, habe das zwar jetzt aktualisiert, aber der fehler kommt in zeile 17 der session.php (ueberprüfung.php)
bei
PHP-Code:
if( strcmp($key,'email') { 
warum auch immer. ich find den blöden fehler nicht. er geht nicht mehr zurück zur index.php (formular.php)
__________________
Wer später bremst, fährt länger schnell...
Doggi ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.11.2005, 14:21 Nach oben    #12
me pro ok?
 
Benutzerbild von Lars
 
Registriert seit: 07.09.2005
Ort: Pulheim bei Köln
Beiträge: 964
Standard

Zitat:
Parse Error: Unexpected "{", expecting ")" in session.php on line 17
Dürfte so aussehen die Fehlermeldung, denk ich mal.
Mach das hier draus, es fehlt eine schließende Klammer.
PHP-Code:
if( strcmp($key,'email') ) { 
__________________
Gedanken aus Draht stricken einen Zaun.
Lars ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.11.2005, 14:40 Nach oben    #13
Erfahrener Benutzer
 
Benutzerbild von Doggi
 
Registriert seit: 26.10.2005
Ort: Basel
Beiträge: 115
Standard

blind wie ein maulwurf bin ich

danke. ich denke jetzt sind die gröbsten fehler beseitigt. nun mach ich mich mal an den rest

diese fehler sollten jedoch aus dem tutorial beseitigt werden
ich finde tutorials mit fehlern sehr frustrierend
mal schaun ob sessions wirklcih so einfach sind, wie ihr behauptet.
__________________
Wer später bremst, fährt länger schnell...
Doggi ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.11.2005, 14:42 Nach oben    #14
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
Standard

Zitat:
Zitat von Doggi
ich finde tutorials mit fehlern sehr frustrierend
Ehrlich gesagt ist das eigentlich ziemlich lernintensiv, weil man sich einfach mehr damit befassen muss, was da eigentlich passiert .. das Tutorial wird aber aktualisiert.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.11.2005, 15:05 Nach oben    #15
Erfahrener Benutzer
 
Benutzerbild von Doggi
 
Registriert seit: 26.10.2005
Ort: Basel
Beiträge: 115
Standard

da hast du recht! sollte keine böse kritik sein. frust ist, wie du schon richtig sagtest, nicht immer schlecht.

kommen wir zum nächsten fehler, den ich nicht nachvollziehen kann.

öffnet man den browser neu und öffnet die formular.php bekomm ich einen fehler:

Warning: Invalid argument supplied for foreach() in E:\htdocs\xampp\name\verlosung\index.php on line 11
Name: email:


soweit so gut.

geb ich daten ein: name: ingolf email: test@mail.de

geh auf abschicken, ist alles ok.

die mail wird bei einem fehler automatisch wieder eingefügt (im formular), der name leider nicht
ich kann nur leider den code dafür nicht zuordnen bzw. erkenn ich nicht, wie ich dies erweitern könnte

ich denke dies hier ist dafür zuständig.
PHP-Code:
if( strcmp($key,'email')) { 
                       echo 
'mail';     //ueberpruefeMail($value); 
                 

                 else { 
                       
$_SESSION[$key] = $value
                 } 
leider fehlt mir die logik bzw. erfahrung um diesen teil zu erweitern
ich würde zu gern wissen wieso der name nicht stehen bleibt wenn nur die mail fehlt.

gebt mir einen denkanstoß, BITTE, sonst muss ich von der teppichkante hüpfen.
__________________
Wer später bremst, fährt länger schnell...

Geändert von Doggi (06.12.2005 um 13:12 Uhr).
Doggi ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.11.2005, 18:13 Nach oben    #16
me pro ok?
 
Benutzerbild von Lars
 
Registriert seit: 07.09.2005
Ort: Pulheim bei Köln
Beiträge: 964
Standard

Ersetz das foreach (...) durch
PHP-Code:
while ( list($key$value) = @each($array) ) 
dann bleibt der Fehler weg. DU musst halt nur die drei Variablennamen anpassen.
__________________
Gedanken aus Draht stricken einen Zaun.
Lars ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.11.2005, 18:48 Nach oben    #17
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
Standard

@Lars:
Warum funktioniert mein Skript dann auch ohne dieses list() + each()?

Ohne Erklärung, wo der Unterschied liegt ... nunja .. bringt das ja auch nicht so wirklich was.

Grüße Ben.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.11.2005, 18:57 Nach oben    #18
me pro ok?
 
Benutzerbild von Lars
 
Registriert seit: 07.09.2005
Ort: Pulheim bei Köln
Beiträge: 964
Standard

Stimmt... ich mache manchmal den fehler, dass ich zuviel voraus setze, sorry.

@Doggi:
Der Unterschied zwischen Bens foreach und meinem while ist eigentlich einfach. foreach ist eine Schleife nur für Arrays (seit PHP5 auch für Objekte, Stichwort Object Iteration), die einfach ein Array erwartet. Kommt keins, gibt es eine Warnung, die man afaik auch nicht durch ein vorangestelltes @ unterdrücken kann.
Die while-Methode macht auf den ersten Blick das selbe, ist aber aus zwei verschiedenen Teilen zusammen gesetzt. Einmal each(), dass den Schlüssel und den Wert des aktuellen Wertepaares zurückgibt, dann list() welches Schlüssel und Wert in die mitgegebenen Variablen setzt. Wenn each kein Array (oder seit PHP5 Objekt, s. o.) bekommt, gibt es wie foreach eine Warnung aus, da es aber eine normale Funktion ist, kann diese per vorangestelltem @ unterdrücken. Bekommt list() kein Array, gibt es nur false zurück, wodurch dann die Schleife abgebrochen wird, macht allerdings sonst keine Mucken.

Ich hoffe, das war einigermaßen verständlich
__________________
Gedanken aus Draht stricken einen Zaun.
Lars ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.11.2005, 18:57 Nach oben    #19
Erfahrener Benutzer
 
Benutzerbild von Doggi
 
Registriert seit: 26.10.2005
Ort: Basel
Beiträge: 115
Standard

ich probier das mal, wenn ich hintergestiegen bin, dann werde ich dir mal ein komplettes und funktionierendes tutorial von anfängern, für anfänger zukommen lassen. das ist doch häufig am sinnvollsten oder? allerdings nur wenn interesse besteht. ist vielleicht auch mehr ansporn für mich dabei

EDIT

da hatten wir wohl gleichzeitig gepostet. danke erstmal für eure geduld und hilfe. werd mich mal an die arbeit machen.
__________________
Wer später bremst, fährt länger schnell...
Doggi ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.12.2005, 16:32 Nach oben    #20
Erfahrener Benutzer
 
Benutzerbild von Doggi
 
Registriert seit: 26.10.2005
Ort: Basel
Beiträge: 115
Standard

So nachdem ich unseren Firmenserver neu machen durfte, komm ich endlich mal wieder zu meinem Problem zurück.

Habe jetzt mal wie while Schleife probiert und habs nun schon soweit, dass mir die Schleife auch Werte zurückgibt, die nicht eingegeben wurden. Das Problem ist allerdings, dass die fehlenden Werte nicht rot markiert werden.

hier wird es rot markiert, aber beim Start der Seite ein Fehler. s.o.
PHP-Code:
foreach( $_SESSION['error'] as $key ) { 
        
$_error[$key]['vorne']  = $cssErrorVorne
        
$_error[$key]['hinten'] = $cssErrorHinten
   } 

Hier fehlt mir einfach das Verständnis. Ich komm nicht drauf.
$errorname erhält den Wert "name" wenn die Variable nicht durch das Formular übergeben wird.
PHP-Code:
while ( list($errorname$errormail) = each($_SESSION['error']) ) { 

//was muss hier rein, um die Feldbeschreibung rot zu markieren?
        
    
$_error[$key]['vorne'