Du hast eine Frage? Stell sie der t3n-Community!

? Beispielfragen

Um selbst eine Frage online zu stellen, melde dich bitte an.

Zur Anmeldung

PHP OPP Formular überprüfung

7 Punkte

Frage markiert als beantwortet

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 } ?>

3 Antworten

0 Punkte

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

0 Punkte

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

  • echterhoff: 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.

    vor 5 Monaten

Melde dich an, um einen Kommentar zu schreiben.

0 Punkte

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.

Zur Anmeldung