• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

PHP Formular auswerten

Status
Für weitere Antworten geschlossen.

Desaster3

Neues Mitglied
Hallo,

ich habe ein Forular auf meiner Seite, welches mit Hilfe von PHP ausgewerten werden soll.
Z.B. bei keiner Eingabe im Feld Vorname erscheint ein ERROR Text über dem Formular Feld (siehe Bild im Anhang)

Bei korrektem Ausfüllen gehts auf die Datei senden.php

Hier mal mein Formular:

HTML:
<html>
<head>
<title>Test Formular</title>
</head>
<body>
<form>
<form action="senden.php" method="post" id="send">

:: Kundendaten
<table border="0" width="100%">
<col width="25%">
<col width="75%">
    <tr>
        <td>
            Vorname:
        </td>
        <td>
            <input name="vname" size="30" maxlength="30" value="">
        </td>
    </tr>
    <tr>
        <td>
            Nachname:
        </td>
        <td>
            <input name="name" size="30" maxlength="30" value="">
        </td>
    </tr>
    <tr>
        <td>
            Geschlecht:
        </td>
        <td>
            <label><input type=radio name=sex value=männlich>männlich</label>
            &nbsp;&nbsp;&nbsp;
            <label><input type=radio name=sex value=weiblich>weiblich</label>
        </td>
    </tr>
    <tr>
        <td>
            Straße/Hausnummer:
        </td>
        <td>
            <input name="strasse" size="20" maxlength="50" value="">
            <input name="ha" size="5" maxlength="10" value="">
        </td>
    </tr>
    <tr>
        <td>
            PLZ/Ort:
        </td>
        <td>
            <input name="plz" size="6" maxlength="5" value="">
            <input name="ort" size="19" maxlength="10" value="">
        </td>
    </tr>
    <tr>
        <td>
            Land:
        </td>
        <td>
            <select name="land">
            <option>Deutschland</option>
            <option>Österreich</option>
            <option>Schweiz</option>
            </select>    
    </tr>
        <td>
            Sonstige  Daten:
        </td>
        <td>
            &nbsp;
        </td>
    </tr>
    <tr>
        <td>
            E-Mail:
        </td>
        <td>
            <input name="mail" size="30" maxlength="30" value="">
        </td>
    </tr>
    <tr>
        <td>
            URL der bisherigen Homepage:<br>
            <small>[Worauf die Weiterleitung erfolgt]</small>
        </td>
        <td>
            <input name="homepage" size="30" maxlength="30" value="www.">
        </td>
    </tr>
    <tr>
        <td>
            Gewünschte Domain:
        </td>
        <td>
            <input name="domain" size="19" maxlength="30" value="www.">
            <select name="tld">
                <option>.de</option
                <option>.com</option>
                <option>.eu</option>
                <option>.info</option>
                <option>.net</option>
                <option>.org</option>
                <option>.name</option>
            </select>
        </td>
    </tr>
    <tr>
        <td>
            Durschnittliche Besucher/Tag:
        </td>
        <td>
            <input name="besucher" size="30" maxlength="4" value="">
        </td>
    </tr>
    <tr>
        <td>
            Kenntnissnahme der <a href="agb.html">AGB</a>:
        </td>
        <td>
            <input type="checkbox" name="AGB_read">
        </td>
    </tr>
    <tr>
        <td>
            Kenntnissnahme des <br>
            <a href="impressum.html">Haftungsauschlusses</a>:
        </td>
        <td>
            <input type="checkbox" name="Disclaimer_read">
    </tr>
    <tr>
        <td>
            &nbsp;
        </td>
        <td>
            <input type="submit" name="send" value="Abschicken">
        </td>
    </tr>
</table>
</form>
</body>
</html>

Vielen Dank für Eure Hilfe

mfg
 

Anhänge

  • Form.jpg
    Form.jpg
    51,1 KB · Aufrufe: 16
Also wenn ich das Bild richtig deute liegt dein Fehler darin, dass sämtliche Fehlermeldungen angezeigt werden.

Praktisch wäre, wenn du nicht nur das Formular, sondern auch die senden.php mal reinstellst ;)

MfG Icy
 
Ne, es ist so dass das Forular ausgwertet werden soll. Die Datei "send.php" habe ich noch nicht fertig.
Die Auswertung soll noch in der Forular Datei erfolgen!

Wenn Der User keinen Vornamen eingibt kommt eine ERROR Message wie auf dem Screen!
 
Und das sollen wir für dich machen? Kennst du nicht diese Seite, wie heißt sie noch... ach ja, Google? Da findest du zu diesem Thema genug! Zum Titel "PHP Formular auswerten" findet man z.B. sehr gute Sachen: Klick mich!

Timmer
 
Ja danach habe ich auch gesucht. EinAuswerten finde ich auch haufenweise nur leider greift die Auswertung immer auf eine andere Datei. (send.php)
das soll nicht der Fall sein.
Dazu habe ich auch ein guten Link gefunden. Nur der Einbau macht mir noch Probleme:
PHP : Formulareingaben prüfen
 
Also ein Formular per JavaScript überprüfen zu lassen, das ist ja wohl das schlechteste. JavaScript ist ja bekanntlich vom User abzuschalten. JavaScript taugt absolut nicht im Bereich der Funktionalität einer Website, allerhöchstens für Designsachen, z.B. Schnee auf der Website zu Weihnachten oder eine Bildergalerie, die zur Not auch ohne JavaSript halbwegs funktionell ist.

Zurück zum Thema: Formulare programmiere ich immer nach dem sogenannten Affenformular-Prinzip: Guter Code - Von HTML zu PHP: Schreibe Formularverarbeitungen in Normalform

Gruß thuemmy
 
Javascript wäre nicht so gut. Ich fidne es auch vom optischem nicht so schön!

Ich habe mal das sogenannte "Affenformular" getestet.

Und zwar so:

PHP:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>">
...
<input name="test" size="30" maxlength="30" value="">
...
</form>

Die Länge einer Textfeldeingabe lässt sich mit der PHP-Funktion strlen() ermitteln. Leere Strings sind in PHP FALSE, d.h. durch eine Überprüfung auf Wahrheit (if ($_REQUEST['textfeldname'])) lässt sich feststellen, ob der Benutzer eine Eingabe gemacht hat.

Das habe ich somit verstanden, doch die Einbindung in das Form bereitet immer noch Probleme.
Wie kann ich Z.B. testen ob im Texfeld "Test" eien Eingabe gemacht wurde!

Ich Danke nochmal für Eure Hilfe!
 
Mir scheint, dass Du den Link nicht bis zum Schluss durchgelesen hast. In dem 2. Code-Teil (das blau hinterlegte) ist der Aufbau ja eindeutig geschrieben. Dort wird auch das Feld $_REQUEST['textfeld'] auf Mindeslänge geprüft, in der Funktion validate_textfeld().

Gruß thuemmy
 
Doch ads hebe ich gelesen. Ich ahbe die ganze zeit es versucht. Ich saß gestern 2 Stunden dran. Aber immer wieder gibts Fehler. Also den richtigen Einbau schaffe ich nicht. Kann mir jemand das mal hierran erklären sodass das Feld Name ein Pflichtfeld ist?

PHP:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input name="name" size="30" maxlength="30" value="">
// Sonstieg Formularfelder

//Sendebutton
</form>
 
Hier mal anhand des Codes von php-faq:
PHP:
<?php
 
// Funktion zum Drucken von Fehlermeldungen
function errmsg($msg) {
   ?>
   <font color="#ff0000"><b><?php print nl2br($msg) ?></b></font>
   <?php
}
 
// Überprüft Eingabewerte für $name auf Korrektheit.
function validate_name($val) {
   $msg = "";
   if (strlen($val) < 1)
      $msg .= "Die Eingabe muss mindestens 1 Zeichen lang sein.\n";
 
   if (preg_match("/\s/", $val))
      $msg .= "Die Eingabe darf keine Leerzeichen "
             ."oder Tabulatoren enthalten.\n";
 
   return $msg;
}
 
// Für jedes Formularfeld werden nun ein oder mehrere
// Validatoren aufgerufen und das Ergebnis der Überprüfung
// gemerkt.
$valid = true;
if (isset($_REQUEST["textfeld"])) {
   $error["name"] = validate_textfeld($_REQUEST["name"]);
   if ($error["textfeld"] != "")
      $valid = false;
}
 
?>
<form action="<?php print $_SERVER["PHP_SELF"]; ?>">
<input type="text"
       name="name"
       value="<?php print htmlspecialchars($_REQUEST["textfeld"]); ?>"><br>
<?php
// Ggf. Fehlermeldung ausdrucken.
if ($error["textfeld"] != "")
   print errmsg($error["textfeld"]);
?>
<input type="submit"
       name="do_form_x"
       value="Ausführen">
</form>
<hr>
<?php if ($valid and isset($_REQUEST["do_form_x"])) { ?>
<!-- Nutzlast -->
<?php } ?>

Gruß thuemmy
 
Geht bei mir nicht. Also ich fang nochmal von vorne an.

Hallo zusammen,

ich habe mir mal eigenes HTML Formular geschrieben. Jetzt brauche ich ein paar PHP Features.

1.) Pflichtfleder in PHP
2.) Richtig eingegebene Daten speichern

Zu 1.)

Hier mal ein Form:
<form name='test' method='post' action='{$_SERVER['PHP_SELF']}'>

Vorname: <input name="vname" size="30" maxlength="30" value=""><br />
Nachname: <input name="name" size="30" maxlength="30" value="">

<input type="submit" name="senden" value="Abschicken">

Ich würde gerne beide Felder als Pflichtfelder festlegen.

Zu 2.)

Wichtig ist es, dass bei einer Falscheingabe im Feld Nachname, nicht die richtigen Daten gelöscht werden.
Si sollen also kurz gespeichert werden und zurückgegeben werden.


Ich Danke für alle die mir dabei hlefen können.
Ich bin seit 3 Wochen auf der Suche!
1.gif


mfg
 
Hast du's schon oder brauchst du immer noch Hilfe ? Ist ja schon 3 Tage her dein letzter Post.
Hab dir schnell mal etwas gebastelt - ungetestet ! Müsste aber deinen Wünschen entsprechen. Musste halt die anderen Daten noch einfügen. Falls es nicht geht, melde dich einfach noch einmal.

Code:
<html> 
<head> 
<title>Test Formular</title>
</head> 
<body> 

<!-- Eingabemaske -->
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST">
<p>Vorname: <input name="vname" type="text" value="<?php if(isset($_POST['vname'])) {
 echo htmlspecialchars(stripslashes($_POST['vname']));
} ?>"</input></p>
<p>Nachname: <input name="name" type="text" value="<?php if(isset($_POST['name'])) {
 echo htmlspecialchars(stripslashes($_POST['name']));
} ?>"></input></p>
<p><input type="submit" name="submit" value="Abschicken"></input></p> 
</form> 
<!-- / Eingabemaske -->

<?php
// Ab zum PHP Teil
if (isset($_POST["submit"])) { // Formular gesendet ?

// Variablen freundlicher machen :)
$vname = $_POST["vname"];
$name = $_POST ["name"];
$fehler = false;
$fehlertext = "<p>";

// Fehlertext zusammensetzen
if (empty($vname)) {
 $fehler = true;
 $fehlertext .= "Bitte einen Vornamen angeben!<br>";
 }
if (empty($name)) {
 $fehler = true;
 $fehlertext .= "Bitte einen Namen angeben!<br>";
 }

// Skriptabbruch bei Fehler !
if ($fehler) {
 echo "$fehlertext</p>";
 die ("</body></html>");
 
 } else { // keine Fehler, dann Eintrag in DB etc.
 
$sql = "INSERT INTO ... VALUES (...)"; // Deine DB Infos !!!
mysql_query($sql);

// Eintrag erfolgreich oder etwa nicht ? ;)
if (mysql_affected_rows > 0) {
  echo "<p>Eintrag erfolgreich!</p>";
  } else {
  echo "<p>Eintrag nicht erfolgreich!</p>";
  }
 }
}

?>

</body> 
</html>
 
Zuletzt bearbeitet:
Hallo, habe folgendes Problem. und zwar möchte ich eine seite aufbauen wo man sich anmelden muss... dies klappt wunderbar das problem ist jetzt das ich mich nicht einloggen kann. :cry:

hier mal ein ausschnitt wie es sein sollte:
PHP:
<?php

require_once("./config.php");
session_start();

// Wenn bereits eingeloggt wieder in die Memberzone schicken
if($_SESSION['auth']==true) {
    header("Location: memberzone/index.php");
}
else {
    $connection = mysql_connect($db_host, $db_user, $db_password) or die ("Konnte keine Datenbankverbindung herstellen.");

    if($_REQUEST['login']) {
        $db=mysql_select_db($database, $connection) or die ("Konnte keine Datenbank selektieren.");
        $sql="SELECT nickname FROM user_data WHERE nickname='$_POST[nickname]'";
        $result=mysql_query($sql) or die ("Konnte den Query nicht ausführen.");
        $anzahl=mysql_num_rows($result);
        if($anzahl==1) {
            $crypted_passwort=md5($_POST['passwort']);
            $sql="SELECT nickname FROM user_data WHERE nickname='$_POST[nickname]' AND passwort='$crypted_passwort';";
            $result=mysql_query($sql) or die ("Konnte den Query nicht ausführen.");
            $anzahl=mysql_num_rows($result);
                            $array=mysql_fetch_array($result);
                if($array[0]==1) {
                    $_SESSION['nickname']=$_POST['nickname'];
                                        $result=mysql_query($sql) or die ("Konnte den Query nicht ausführen.");
                    $array=mysql_fetch_array($result);
                }
                else {
                    $_SESSION['auth']=true;
                    $_SESSION['nickname']=$_POST['nickname'];
                     mysql_query($sql);
                    // Weiterleiten in die Memberzone
                    header("Location: memberzone/index.php");
                }
            }
            else {
                $error=1;
            }
        }
        else {
            $error=1;
        }
    }
}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
 <head>
  <title><?php echo $title; ?></title>
  <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1" />
  <link rel="stylesheet" href="style.css" type="text/css" title="Cascading Style Sheet" />
  <link rel="Shortcut Icon" type="image/x-icon" href="images/favicon.ico" />
 </head>
 <body>
  <div id="outer_site">
   <div id="logo"></div>
<?php
if ($site=="") {
?>
   <a href="?site=registrieren" id="registrieren"></a>
<br />
   <form method="post" action="<?php $_SERVER[´PHP_SELF´]; ?>" class="form">
    <span id="nickname">Nickname</span> <input type="text" name="nickname" class="nickname"><br />
    <span id="passwort">Passwort</span> <input type="password" name="passwort">
    <input type="submit" name="login" value="Login">
   </form>
   <a href="?site=passwort_vergessen" id="passwort_vergessen">Passwort vergessen</a>
<?php
if($error==1) {
?>
    <div id="error">
<?php
    echo $login_err;
?>
    </div>
<?php
}
}
elseif(file_exists($template_dir.$identifier.$site.$template_format) && $site!=""){
    include ($template_dir.$identifier.$site.$template_format);
}

?>
  </div>
 </body>
</html>


Soll eigentlich ein simple abfrage sein nur funtioniert sie irgendwie nicht. vllt kann mir einer von euch helfen.

PS. abgefragt wird ob username und pw stimmen... wenn ja memberzone/index.php

und wenn bereits vorher eingeloggt (session angelegt) dann auch in die memberzone gehen.

Vielen herzlichen dank im vorraus


MfG
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben