 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
24.08.2008, 19:45
|
#1
|
|
TP-Supporter
Registriert seit: Jul 2008
Ort: Tübingen
|
//Validation
 Hallo Leute,
ich habe ein Form mit verschiedenen Textfeldern erstellt. Nun möchte ich erreichen das wenn ein Textfeld vom User nicht ausgefüllt wird, das er darauf hingewiesen wird dieses doch auszufüllen. Habe ich auch soweit erreicht...
...und zwar so
PHP-Code:
//Validation
if(!ereg('[A-Za-z0-9_-]+\@[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+',$nome))
{
die("<p align='center'><font face='Arial' size='3' color='#FF0000'>Por favor coloque seu nome!</font></p>");
}
allerdings gefällt mir das "die" nicht. Hier hätte ich geren das mir das Html-document in dem das Formular drin ist von neuem angezeigt wird allerdings mit dem Hinweis das entsprechende Textfeld auszufüllen.
Kann mir jemand ein Tip geben? Für Hilfe bedanke ich mich jetzt schon.
__________________
Das Leben ist schön -
Lehren ist die schönste Methode zu lernen.
|
|
|
24.08.2008, 20:02
|
#2
|
|
TP-Greis
Registriert seit: Mar 2001
Ort: Berlin, Germany
|
Sammel doch alle Fehlermeldungen in einem Array und gib dieses dann halt da aus, wo die Fehler dann stehen sollen (z.B. über dem Formular).
__________________
“My software never has bugs. It just develops random features ...”
» DevShack - die Website des freien Webentwicklers Boris
|
|
|
24.08.2008, 20:04
|
#3
|
|
TP-Moderator
Registriert seit: Aug 2004
Ort: Kaiserslautern
|
Hallo Sascha79,
in so einem Fall arbeitet man mit einem Flag. Hier mal ein Beispiel, dass eigentlich selbsterklärend sein sollte:
PHP-Code:
<?php
// Flag setzen
$fehlerfrei = true;
// Formular wurde abgeschickt
if (isset( $_POST['submit'] ))
{
// Feld prüfen
if (!ereg( '[A-Za-z0-9_-]+\@[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+', $nome ))
{
// Falls das Feld fehlerhaft ausgefüllt wurde, Flag auf falsch setzen
$fehlerfrei = false;
}
// Falls das Flag true ist wurde das Feld korrekt ausgefüllt
if ($fehlerfrei === true)
{
// Code um in DB zu schreiben oder Email senden
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Kleines beispiel</title>
</head>
<body>
<?php
if ($fehlerfrei === false)
{
echo 'Bitte überprüfen sie das Eingabefeld.';
}
?>
<form>
.
.
.
</form>
</body>
</html>
Bei mehreren Feldern arbeitet man mit einem Array.
__________________
#.Viele Grüße, Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
|
|
24.08.2008, 21:29
|
#4
|
|
TP-Supporter
Registriert seit: Jul 2008
Ort: Tübingen
|
Vielen Dank,
ich denke das hilft mir mal weiter. Hab zwar noch nie mit einem Array gearbeitet, aber ich werd mal ein bischen im Forum suchen und etwas googeln.
__________________
Das Leben ist schön -
Lehren ist die schönste Methode zu lernen.
|
|
|
25.08.2008, 00:00
|
#5
|
|
TP-Supporter
Registriert seit: Jul 2008
Ort: Tübingen
|
Hi nochmal,
wie bringe ich den diese Flags sauber in einem Array unter???
__________________
Das Leben ist schön -
Lehren ist die schönste Methode zu lernen.
|
|
|
25.08.2008, 00:04
|
#6
|
|
TP-Greis
Registriert seit: Mar 2001
Ort: Berlin, Germany
|
Nein, nicht die Flags - die Fehlermeldungen.
if(dies == soundso) $fehlermeldungen[]='Das und das ist falsch';
if(jenes == bla) $fehlermeldungen[]='Das ist auch ganz ist falsch';
Ausgabe dann so:
if(isset($fehlermeldungen)){
foreach($fehlermeldungen AS $wert) echo $wert;
}
__________________
“My software never has bugs. It just develops random features ...”
» DevShack - die Website des freien Webentwicklers Boris
|
|
|
11.10.2008, 09:59
|
#7
|
|
TP-Supporter
Registriert seit: Jul 2008
Ort: Tübingen
|
Hallo Jungs,
da mir das zu dieser Zeit noch alles etwas zu hoch war (ich weiss, wollte wierder mal mit dem Kopf durch die Wand  ) und ich mich jetzt schon etwas mehr mit PHP beschäftigt habe, wollte ich das hier nochmal ausprobieren.
So, das hat auch soweit geklappt. Wenn ein Feld nicht ausgefüllt wird, werden die Daten nicht übertragen und eine Meldung wird angezeigt.
Nun habe ich aber das Problem, wenn alle Felder ausgefüllt wurden, werden die Daten leider auch nicht an die Datenbank weitergegeben. Mit print_r habe ich überprüft ob die Daten an PHP übergeben werden. Das passt soweit.
Hier mal mein Code:
PHP-Code:
//Flag setzen
$fehlerfrei = true;
if (isset ($_POST['submitbutton'] ))
{
//Textfelder auf Inhalt überprüfen
if ($name == false)$fehlermeldung[]='Sie haben keinen Namen angegeben';
{
$fehlerfrei = false;
}
if ($fehlerfrei === true)
{
//Verbindung zu Datenbank
//Inhalte sammeln der an die Dantenbank gesendet werden soll
//Inhalte an Dantenbank senden
//Prüfen ob Datensatz hinzugefügt wurde
}
und in der Ausgabe:
PHP-Code:
if (isset($fehlermeldungen))
{
foreach($fehlermeldungen AS $wert) echo $wert;
}
So hab ich mir das mal zusammen getüftelt. Über ein paar Tips würde ich mich freuen 
__________________
Das Leben ist schön -
Lehren ist die schönste Methode zu lernen.
|
|
|
11.10.2008, 10:10
|
#8
|
|
TP-Greis
Registriert seit: Mar 2001
Ort: Berlin, Germany
|
Zitat:
|
werden die Daten leider auch nicht an die Datenbank weitergegeben.
|
Naja ... da das dein Problem ist, solltest du uns genau diesen Code eigentlich nicht vorenthalten 
__________________
“My software never has bugs. It just develops random features ...”
» DevShack - die Website des freien Webentwicklers Boris
|
|
|
11.10.2008, 10:15
|
#9
|
|
TP-Supporter
Registriert seit: Jul 2008
Ort: Tübingen
|
Hier ist der Code
PHP-Code:
///Flag setzen
$fehlerfrei = true;
if (isset ($_POST['registrar'] ))
{
//Maskierende Slashes aus POST entfernen
$_POST = get_magic_quotes_gpc() ? array_map( 'stripslashes', $_POST ) : $_POST;
//Inhalte der Textfeldern aus POST holen
$nome = $_POST['Name'];
$sobrenome = $_POST['Nachname'];
$tel = $_POST['Telefon'];
$email = $_POST['E_mail'];
$servico = $_POST['Dienst'];
//Textfelder auf Inhalt überprüfen
if ($nome == false)$fehlermeldung[]='<div id=statusmeldung><h2>Sie haben keinen Namen angegeben</h2></div>';
if ($sobrenome == false)$fehlermeldung[]='<div id=statusmeldung><h2>Sie haben keinen Nachnamen angegeben</h2></div>';
if ($tel == false)$fehlermeldung[]='<div id=statusmeldung><h2>Sie haben keine Telefonnummer angegeben</h2></div>';
if ($email == false)$fehlermeldung[]='<div id=statusmeldung><h2>Sie haben keine E-mail angegeben</h2></div>';
if ($servico == false)$fehlermeldung[]='<div id=statusmeldung><h2>Sie haben keinen Dienst angegeben</h2></div>';
{
$fehlerfrei = false;
}
if ($fehlerfrei === true)
{
//Verbindung zu Datenbank
$conID = mysql_connect ( $db_host, $db_user, $db_pass ) or die("Die Datenbank konnte nicht erreicht werden!");
if ($conID)
{
mysql_select_db ( $db_name, $conID );
}
//Inhalte sammeln der an die Dantenbank gesendet werden soll
$sql = "INSERT INTO `form`
(`Name`,`Nachname`,`Telefon`,`E_mail`,`Dienst`)
VALUES(
'" .mysql_real_escape_string ($nome)."',
'" .mysql_real_escape_string ($sobrenome)."',
'" .mysql_real_escape_string ($tel)."',
'" .mysql_real_escape_string ($email)."',
'" .mysql_real_escape_string ($servico)."'
)";
//Inhalte an Dantenbank senden
mysql_query ( $sql );
//Prüfen ob Datensatz hinzugefügt wurde
if (mysql_affected_rows() == 1)
{
$statusmeldung = "<h2>Obrigado, seu registro foi bem sucedido!</h2><br>
<p>Você recebeu um Email da Listabarra.</p>";
}
else
{
$statusmeldung = "<h2 class='rot'>ERRO: Infelizmente seu registro foi mal sucedido!</h2>
<p>Para maiores informações escreve um Email para Listabarra!<p>
<a href='mailto:barradesaojoao@ymail.com'>Escrever Email</a></p>";
}
}
}
Bevor ich den Teil um die Textfelder zu prüfen eingebaut habe, wurden alle Daten hervoragend (Dank Rizzo´s Tutorial) an die DB übergeben.
__________________
Das Leben ist schön -
Lehren ist die schönste Methode zu lernen.
Geändert von Sascha79 (11.10.2008 um 11:02 Uhr).
|
|
|
11.10.2008, 12:00
|
#10
|
|
TP-Supporter
Registriert seit: Jul 2008
Ort: Tübingen
|
Hey Boris,
ich hab´s gelöst und zwar hab ich
PHP-Code:
if ($fehlerfrei === true)
durch das
PHP-Code:
if ($nome == true)
if ($sobrenome == true)
if ($tel == true)
if ($email == true)
if ($servico == true)
ersetzt. Damit hat´s geklappt.
Nur noch eine kleine Frage zum Verständnis. Sind das Booleans??? Ich weiss das es eine If-Anweisung ist, aber dadurch das ich mit true und false arbeite sollten es doch auch Booleans sein, oder???
__________________
Das Leben ist schön -
Lehren ist die schönste Methode zu lernen.
|
|
|
11.10.2008, 12:23
|
#11
|
|
TP-Greis
Registriert seit: Mar 2001
Ort: Berlin, Germany
|
== vergleicht nur Werte ... === vergleicht auch, ob es die gleiche Art ist (int === int, string === string).
'1' == 1 wäre war
'1' === 1 wäre falsch (string gegen int)
Allerdings seh ich jetzt spontan den Fehler nicht, mir brummt aber auch der Kopf 
__________________
“My software never has bugs. It just develops random features ...”
» DevShack - die Website des freien Webentwicklers Boris
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| 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.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 01:47 Uhr.
|
 |