PHP OPP Formular überprüfung
von kyrosiii Nerd vor 5 Monaten
Ich habe folgendens probiert.(siehe Code) das ganze ist PHP MVC gemacht. Ich rufe die seiten jeweils über action=XXX auf. Das Formular funktioniert so einfach nicht.
Gibt es eine einfachere Variante das Feld zu überprüfen?
Kann mir jemand helfen.
Nachträglich bearbeitet am 04.01.12 10:07
Code
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Neuen Link anlegen</title>
</head>
<body>
<?php
// Wenn auf 'Eintragen' geklickt wurde, prüfe das Formular
if(isset($_POST['submit'])){
// Fehlerarray erzeugen
$errors = array();
if(trim($_POST['katname'])=='')
$errors[] = "Bitte geben Sie die Kategorie ein.";
}
// Wenn das Formular geprüft wurde und kein Fehler gefunden wurde verarbeite die Daten
if(isset($errors) AND !count($errors)){
header('Location: kategorie.php?action=add');
echo "Vielen Dank!<br>\n".
"Sie wurden erfolgreich in den Newsletter aufgenommen.";
}
// Beim ersten Aufruf oder beim Finden eines Fehlers wird das Formular angezeigt
else {
// Wurde bei der Formularprüfung ein Fehler gefunden wird er über dem Formular ausgegeben
if(isset($errors)){
echo "Sorry, ihre Daten konnten nicht bearbeitet werden.<br>\n".
"<br>\n";
foreach($errors as $error)
echo $error."<br>\n";
echo "<hr>\n";
}
?>
<h1>Neuen Link anlegen</h1>
<form action="<? echo $_SERVER['PHP_SELF']; ?>" method="post">
Kategorie:
<?php
// Stellt den Kategorie wieder her, wenn ein Fehler auftrat
if(isset($_POST['katname']))
// htmlentities sichert das Formular gegen Cross-Scripting
echo "<input type=\"text\" name=\"katname\" value=\"".htmlentities($_POST['katname'], ENT_QUOTES)."\">\n";
else
echo "<input type=\"text\" name=\"katname\">\n";
?>
<input type="submit" name="submit" value="Kategorie anlegen" />
</form>
</body>
</html>
<?php } ?>
- Tags:
- php 42
3 Antworten
von fnagel Geek vor 5 Monaten
Mit MVC hat dein Code nichts (!) zu tun. Ansonsten empfehle ich mal einen Blick in ein PHP Tutorial, zum Beispiel hier: http://tut.php-q.net/de/post.html
von kyrosiii Nerd vor 5 Monaten
Vielen Dank für deine Antwort was mein problem leider nicht löst.
Vielleicht sollte ich es etwas klarer ausdrücken.
Es geht um eine Website auf der links eingeschrieben werden können. Und diese werden kategorien zu geordnet. Nun erfasse ich mit diesem Formular die Kategorien. Das ganze muss ich mit opp erledigen. Das heisst ich habe eine Index.php in der ich die ganzen verzweigungen handle.
und ich rufe diese mit z.b action=add oder list etc auf. Nun wenn ich dieses Formular aufrufe und es ausfülle passiert nix.
ich habe noch mal eine einfachere variante geschrieben bei der ich aber das gleiche problem habe
rufe ich die seite so auf http://localhost:8088/linkverzeichnis/views/kategorie/add.php geht es ruf ich sie so http://localhost:8088/linkverzeichnis/kategorie.php?action=add auf geht es nicht.
der senden button führt mich direkt zum default und es passiert nix
Code
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Neuen Link anlegen</title>
</head>
<body>
<?php
$fehler = '';
if (isset($_POST['katname'])){
if (trim($_POST['katname']) != ''){
$katname = $_POST['katname'];
}else{
$fehler = $fehler . 'Katname ausfüllen! </br>';
}
if($fehler != ''){
echo $fehler;
}else {
echo 'daten verschicken' . $_POST['katname'];
}
}
?>
<h1>Neuen Link anlegen</h1>
<form action="<? echo $_SERVER['PHP_SELF']; ?>" method="post">
Kategorie:
<?php
// Stellt den Kategorie wieder her, wenn ein Fehler auftrat
if(isset($_POST['katname']))
// htmlentities sichert das Formular gegen Cross-Scripting
echo "<input type=\"text\" name=\"katname\" value=\"".htmlentities($_POST['katname'], ENT_QUOTES)."\">\n";
else
echo "<input type=\"text\" name=\"katname\">\n";
?>
<input type="submit" name="submit" value="Kategorie anlegen" />
</form>
</body>
</html>
Kommentare
-
vor 5 Monatenechterhoff: Schau mal nach dem Unterschied von $_GET, $_POST und $_REQUEST
Ein in einer URL übergebenes Key/Val-Paar bekommst Du nur mit $_GET oder $_REQUEST.
von sec0nd Rookie vor 5 Monaten
Wobei das einfach schlechter Stil ist (also das Übergeben von Actions via GET-Parameter).
Für diese Standardactions ist in jedem Fall eine RESTful Architektur vorzuziehen, also die HTTP-Verben in Verbindung mit URL-Pfaden, damit klar beschrieben ist, was mit den Collections & Ressourcen passiert (siehe unten im Codeabschnitt)
Natürlich brauchst Du eine Router-Komponente, die entsprechend die URL-Pfade auf die richtigen Controller und Actions mappt.
Sowas würde ich aktuell nicht mehr selber schreiben, da gibt es Frameworks, die den Bodensatz schon fertig haben.
Stichwort MVC bzw. Dein Code: Du solltest Dir in jedem Fall die Konzepte anschauen, die woanders umgesetzt sind. Dein Code oben ist PHP-Frickelei per excellence ;)
Nachträglich bearbeitet am 23.12.11 20:24
Code
GET resources # collection aller resourcen holen
GET resource/id # einzelne resource holen
POST ressource # neue resource anlegen
PUT resource/id # einzelne resource updaten
DESTROY resource/id # einzelne resource löschen
Antwort schreiben
Um eine Antwort schreiben zu können, sollest du dich zuvor anmelden.





100.000+ Community-User. Mach mit!
Unser neuestes Video auf YouTube:
Weitere Videos findest in unserem t3n-YouTube-ChannelCloud Coding, Google+ für iPhone und Facebook App Center [TechnikLOAD 83]
Unsere RSS-Feeds
Wer steckt hinter t3n?
Welche Köpfe stecken hinter t3n und wie kannst du ihnen bei Facebook, Google+ oder Twitter folgen? Wirf doch mal einen Blick auf unsere Teamseite.
Das t3n-Team