<b>REGISTER</b>

GFX-Sector - PHP, MySQL


 
GFX-Sector » Coding Area » Webentwicklung » PHP, MySQL » Hilfe bei einem Formular » Hello Guest [Login|Register]
Last Post | First Unread Post Print Page | Recommend to a Friend | Add Thread to Favorites

PHP, MySQL

Themen rund um die serverseitige Programmierung mit PHP in Verbindung mit der Datenbanksoftware MySQL
Pages (2): [1] 2 next » Post New Thread Post Reply

Hilfe bei einem Formular

     Deutsche Version  English version
Author
Post « Previous Thread | Next Thread »

logi
Zauberstabbenutzer


logi hat kein Avatar

Registration Date: 14.01.2010
Posts: 17

Spacer
Hilfe bei einem Formular

Hilfe bei einem Formular

      

Hallo,



ich bräuchte jemanden, der mir dabei behilflich sein kann ein Forular zu erstellen. Ich bin absolut neu auf dem Gebiet und würde mich über ein Beispiel sehr freuen

Beispiel:
Das Formular hat 3 Felder
  • Vorname
  • Nachmame
  • Email

Diesen Daten sollen in eine Datenbank geschrieben werden. Wichtig dabei wäre, das "Vorname" und "Email" pflichtfelder sein sollten.

Für Profis ist das sicherlich ein Witz, aber für mich absolutes Neuland.

Gruß logi

This post has been edited 2 time(s), it was last edited by logi: 14.01.2010 15:46.

Hilfe bei einem Formular 14.01.2010 15:46 logi is offline Search for Posts by logi

quantum quantum is a male
Pfadfinder

Spender


Avatar von quantum

Registration Date: 29.12.2008
Posts: 721
Deviantart: xcracx

Spacer
      

index.php

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:

<!-- hier den html header und den bereich ueber der form -->

<?php
if (isset($_POST['vorname'], $_POST['name'], $_POST['mail'])) {
    // wenn alle daten gegeben sind
    $user "username"// unbedingt deine daten eingeben!
    $password "password";
    $host "localhost";
    $database "datenbank";
    $table "table";
    
    mysql_connect($host$user$password) or die('<p>Cannot connect to database:<br>'.mysql_error().'</p>'); // verbindung herstellen
    mysql_select_db($database) or die('<p>Cannot select database:<br> '.mysql_error().'</p>'); // datenbank auswählen
    
    $query "INSERT INTO `".$table."`(`vorname`, `name`, `mail`) VALUES ('".$_POST['vorname']."', '".$_POST['name']."', '".$_POST['mail']."')";
        mysql_query($query) or die('<p>Insertion failed!<br>'.mysql_error().'</p>'); //versuchen, mail in datenbank einzufuegen
        if (mysql_query)
            echo '<p>Success!<br>Wrote mail to Database</p>'//wenn mail erfolgreich eingefuegt wurde, gib nachricht aus
        }
} else {
    echo  '<form method="post" action="index.php">
<label for="vorname">Vorname: </label><br>
<input type="text" name="vorname" value="'.$_POST['vorname'].'"><br>
<label for="name">Name: </label><br>
<input type="text" name="name" value="'.$_POST['name'].'">
<label for="mail">E-Mail: </label>
<textarea name="mail">'.$_POST['mail'].'</textarea>
<input type="submit" value="Abschicken">
</form>'// fügt die eingegebenen daten in die form ein, damit sie nicht erneut eingegeben werden, wenn keine daten gegeben sind, wird halt ein leeres formular angezeigt ...
?>

<!-- hier den footer und den bereich unter der form -->



ungetestet ... (zu faul ne testdatenbank aufzumachen großes Grinsen )


/e:
achso, wenn nur vorname und mail pflicht sein sollen, ändere zeile 5 wie folgt:
php:
1:
if (isset($_POST['vorname'], $_POST['mail'])) {




Vergiss aber bitte nicht, das Markup zu komplettieren!
Also alles was übere und unter der Form sein sollte.



This post has been edited 5 time(s), it was last edited by quantum: 14.01.2010 16:18.

Hilfe bei einem Formular 14.01.2010 16:10 quantum is offline Homepage of quantum Search for Posts by quantum

logi
Zauberstabbenutzer


logi hat kein Avatar

Registration Date: 14.01.2010
Posts: 17

Thread Starter Thread Started by logi
Spacer
      

Vielen Dank.

aber wenn ich die Datei im Browser öffner, komtm folgender Fehler

Parse error: parse error in F:\wamp\www\gtarl\index.php on line 18

Hilfe bei einem Formular 14.01.2010 16:25 logi is offline Search for Posts by logi

Fireball Fireball is a male
Boardchef


Avatar von Fireball

Registration Date: 11.11.2006
Posts: 16,355
Classing-Rank: GFX-Sector
Location: Bremen, Deutschland
Program: Adobe Photoshop CS2
Deviantart: oenismaster
Forums: (alle)

Spacer
      

Habs mal korrigiert smile

quote:
Original von CrAc
index.php
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:

<!-- hier den html header und den bereich ueber der form -->

<?php
if (isset($_POST['vorname'], $_POST['name'], $_POST['mail'])) {
    // wenn alle daten gegeben sind
    $user "username"// unbedingt deine daten eingeben!
    $password "password";
    $host "localhost";
    $database "datenbank";
    $table "table";
    
    mysql_connect($host$user$password) or die('<p>Cannot connect to database:<br>'.mysql_error().'</p>'); // verbindung herstellen
    mysql_select_db($database) or die('<p>Cannot select database:<br> '.mysql_error().'</p>'); // datenbank auswählen
    
    $query "INSERT INTO `".$table."`(`vorname`, `name`, `mail`) VALUES ('".$_POST['vorname']."', '".$_POST['name']."', '".$_POST['mail']."')";
        if (mysql_query($query)) echo '<p>Success!<br>Wrote mail to Database</p>'//wenn mail erfolgreich eingefuegt wurde, gib nachricht aus
        else die('<p>Insertion failed!<br>'.mysql_error().'</p>'); //versuchen, mail in datenbank einzufuegen
} else {
    echo  '<form method="post" action="index.php">
<label for="vorname">Vorname: </label><br>
<input type="text" name="vorname" value="'.$_POST['vorname'].'"><br>
<label for="name">Name: </label><br>
<input type="text" name="name" value="'.$_POST['name'].'">
<label for="mail">E-Mail: </label>
<textarea name="mail">'.$_POST['mail'].'</textarea>
<input type="submit" value="Abschicken">
</form>'// fügt die eingegebenen daten in die form ein, damit sie nicht erneut eingegeben werden, wenn keine daten gegeben sind, wird halt ein leeres formular angezeigt ...
?>

<!-- hier den footer und den bereich unter der form -->



ungetestet ... (zu faul ne testdatenbank aufzumachen großes Grinsen )


/e:
achso, wenn nur vorname und mail pflicht sein sollen, ändere zeile 5 wie folgt:
php:
1:
if (isset($_POST['vorname'], $_POST['mail'])) {




Vergiss aber bitte nicht, das Markup zu komplettieren!
Also alles was übere und unter der Form sein sollte.



Hilfe bei einem Formular 14.01.2010 16:29 Fireball is offline Homepage of Fireball Search for Posts by Fireball

logi
Zauberstabbenutzer


logi hat kein Avatar

Registration Date: 14.01.2010
Posts: 17

Thread Starter Thread Started by logi
Spacer
      

Sorry, ich steh total aufen Schlauch smile

Parse error: parse error in F:\wamp\www\gtarl\index.php on line 29

Hilfe bei einem Formular 14.01.2010 16:41 logi is offline Search for Posts by logi

quantum quantum is a male
Pfadfinder

Spender


Avatar von quantum

Registration Date: 29.12.2008
Posts: 721
Deviantart: xcracx

Spacer
      

Huch, danke großes Grinsen

Habe eine { in Zeile 18 hinter der if-Abfrage vergessen =/
Und das else...

Funktioniert das denn ohne brackets? Wusste ich ja gar nicht smile

/e: ja da auch noch eine vergessen großes Grinsen

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:

<!-- hier den html header und den bereich ueber der form -->

<?php
if (isset($_POST['vorname'], $_POST['name'], $_POST['mail'])) {
    // wenn alle daten gegeben sind
    $user "username"// unbedingt deine daten eingeben!
    $password "password";
    $host "localhost";
    $database "datenbank";
    $table "table";
    
    mysql_connect($host$user$password) or die('<p>Cannot connect to database:<br>'.mysql_error().'</p>'); // verbindung herstellen
    mysql_select_db($database) or die('<p>Cannot select database:<br> '.mysql_error().'</p>'); // datenbank auswählen
    
    $query "INSERT INTO `".$table."`(`vorname`, `name`, `mail`) VALUES ('".$_POST['vorname']."', '".$_POST['name']."', '".$_POST['mail']."')";
        if (mysql_query($query)) echo '<p>Success!<br>Wrote mail to Database</p>'//wenn mail erfolgreich eingefuegt wurde, gib nachricht aus
        else die('<p>Insertion failed!<br>'.mysql_error().'</p>'); //versuchen, mail in datenbank einzufuegen
} else {
    echo  '<form method="post" action="index.php">
<label for="vorname">Vorname: </label><br>
<input type="text" name="vorname" value="'.$_POST['vorname'].'"><br>
<label for="name">Name: </label><br>
<input type="text" name="name" value="'.$_POST['name'].'">
<label for="mail">E-Mail: </label>
<textarea name="mail">'.$_POST['mail'].'</textarea>
<input type="submit" value="Abschicken">
</form>'; }  // fügt die eingegebenen daten in die form ein, damit sie nicht erneut eingegeben werden, wenn keine daten gegeben sind, wird halt ein leeres formular angezeigt ...
?>

<!-- hier den footer und den bereich unter der form -->



/e #2:
Also bei mir gibt's diesmal keinen Parse Fehler, scheint alles korrekt Wink



This post has been edited 3 time(s), it was last edited by quantum: 14.01.2010 16:47.

Hilfe bei einem Formular 14.01.2010 16:44 quantum is offline Homepage of quantum Search for Posts by quantum

logi
Zauberstabbenutzer


logi hat kein Avatar

Registration Date: 14.01.2010
Posts: 17

Thread Starter Thread Started by logi
Spacer
      

nun wird der Eintrag gemacht, aber auf der Hauptseite steht über dem Formular immer noch

Notice: Undefined index: vorname in F:\wamp\www\gtarl\index.php on line 21

Wenn man nun auf "Abschicken" klickt wird der Beitrag in derDB gemacht.

Problem ist: man kann eine leeres Feld abschicken und wenn die Nachricht kommt das der Eintrag gemacht wurde und dann F5 drückt, wird der Eintrag noch mal gemacht.

Hilfe bei einem Formular 14.01.2010 17:03 logi is offline Search for Posts by logi

Fireball Fireball is a male
Boardchef


Avatar von Fireball

Registration Date: 11.11.2006
Posts: 16,355
Classing-Rank: GFX-Sector
Location: Bremen, Deutschland
Program: Adobe Photoshop CS2
Deviantart: oenismaster
Forums: (alle)

Spacer
      

Den Fehler mit dem undefined Index kannst du beseitigen, indem du in Zeile 22 noch id hinzufügst, damit das Label funktioniert:

php:
1:
<input type="text" name="vorname" id="vorname" value="'.$_POST['vorname'].'"><br>


Das mit dem F5 ist ganz normal, da es per POST abgeschickt wurde und du auf der gleichen Zielseite gelandet bist Wink



Hilfe bei einem Formular 14.01.2010 17:07 Fireball is offline Homepage of Fireball Search for Posts by Fireball

logi
Zauberstabbenutzer


logi hat kein Avatar

Registration Date: 14.01.2010
Posts: 17

Thread Starter Thread Started by logi
Spacer
      

aber dann werden die einträge doch immer wieder in die datenbank geschrieben?

Hilfe bei einem Formular 14.01.2010 17:15 logi is offline Search for Posts by logi

quantum quantum is a male
Pfadfinder

Spender


Avatar von quantum

Registration Date: 29.12.2008
Posts: 721
Deviantart: xcracx

Spacer
      

Jo. großes Grinsen
An der Stelle wird eigentlich auch nicht aktualisiert.
Man hat ja eigentlich noch den rest der .html und die sollte da halt einen link zu der Seite haben, damit aktualisierungen vermieden werden.



Hilfe bei einem Formular 14.01.2010 17:18 quantum is offline Homepage of quantum Search for Posts by quantum

logi
Zauberstabbenutzer


logi hat kein Avatar

Registration Date: 14.01.2010
Posts: 17

Thread Starter Thread Started by logi
Spacer
      

Ich muß noch viel lernen smile


Ich erkläre mal kurz was ich vor habe

Wir betreiben einen Gameserver. Um auf diesen Server connecten zu können, muß man auf der Whitelist stehen.

Ich möchte ein Formular haben um diese Whitellist zu verwalten.

Alleine bekomme ich das ja nicht auf die Reihe. Hätte evtl.jemand Lust mir soetwas zu machen. Funktion sollten sein. Eingabe, Ausgabe, Löschen.

Hilfe bei einem Formular 14.01.2010 17:23 logi is offline Search for Posts by logi

quantum quantum is a male
Pfadfinder

Spender


Avatar von quantum

Registration Date: 29.12.2008
Posts: 721
Deviantart: xcracx

Spacer
      

Ich muss demnächste/heute so etwas ähnliches für mein eigenes CMS implementieren, mit benutzer usw.
wenn du dich geduldest, kann ich dir das dann passend abwandeln Wink



Hilfe bei einem Formular 14.01.2010 18:20 quantum is offline Homepage of quantum Search for Posts by quantum

logi
Zauberstabbenutzer


logi hat kein Avatar

Registration Date: 14.01.2010
Posts: 17

Thread Starter Thread Started by logi
Spacer
      

Danke. Ich würde mich freuen smile

Hilfe bei einem Formular 15.01.2010 06:45 logi is offline Search for Posts by logi

quantum quantum is a male
Pfadfinder

Spender


Avatar von quantum

Registration Date: 29.12.2008
Posts: 721
Deviantart: xcracx

Spacer
      

Hier der Zwischenstand
(Damit du erstmal etwas hast, ich neige nämlich dazu, keines meiner projekte zu beenden großes Grinsen – außerdem kann da nochmal wer drüber gucken, wegen sicherheit Wink )

log.php

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
<?php session_start(); ?>
<!-- header daten -->
<?php
    include_once("functions.php"); // funktionen einbinden
    
    // login form
    $login_form '<form method="post" action="log.php">
    <label for="user">User: </label>
    <input type="text" name="user" size="20">
    <label for="password">Password: </label>
    <input type="password" name="password" size="20">
    <input type="submit" value="einloggen">
    </form>';
    
    connectDB(); // Zur Datenbank verbinden
    
    if (isset($_POST['user'], $_POST['password'])) { //wenn die Variablen gesetzt sind
        $table "user";
        $query "select * from ".$table." where username = '".$_POST['user']."' and password = '".$_POST['password']."'"// datenbank anfrage
        $request mysql_query($query); // datenbank anfragen
        mysql_num_rows($request); // ausgabe der datenbank zaehlen
        if(mysql_num_rows($request) > 0) { // wenn die ausgabe der datenbank groesser als 0 ist, erstelle user-session
            $_SESSION['user'] = $_POST['user'];
            header("location:admin.php");
        } else {
            echo '<p>Wrong login!</p>'//bescheid sagen
            echo '<p>You have to wait 30 seconds for another try!</p>'//bescheid sagen
            
            sleep(30); // warte 30 sekunden bis zur  naechsten aktion
            header("location:log.php"); // redirect auf sich selbst
        }
    }    else { // wenn die variablen user und password nicht gesetzt sind ...
        echo $login_form// dann gebe die html-login-form aus
    }

?>
<!-- footer daten -->


functions.php
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
//verbindung zur datenbank herstellen
function connectDB() {
    $dbuser "root";
    $dbpasswd "*";
    $dbhost "localhost";
    $dbname "*";
    
    mysql_connect($dbhost$dbuser$dbpasswd) or die('<p class="error">Cannot connect to database:<br>'.mysql_error().'</p>'); // verbindung herstellen
    mysql_select_db($dbname) or die('<p class="error bold">Cannot select database: '.mysql_error().'</p>'); // datenbank auswählen
}


admin.php (da kommt noch ne menge rein Wink
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
<?php
session_start();
if (isset($_SESSION['user'])) { // wenn user-daten gegeben sind
    echo '<p><form method="post" action="logout.php">
    <input type="hidden" name="logout" value="true">
    <input type="submit" value="Logout"></form></p>'// form, die dem script logout.php die $_POST['logout'] = true uebergibt
    echo '<h2>Artikel und Seiten verwalten</h2>'// moeglichkeiten, die wir haben
    // hier geht es dann weiter :D
    // bla bla: 
    //
    // echo '<h2>Artikel:</h2>';
    // $query = "SELECT id, heading, category FROM articles ORDER BY id";
    // gebe artikel, seiten, kategorien & benutzer aus (evtl. die letzten 5 jeweils)
    // je ueberschrift (Artikel, seiten, benutzer, seiten) gebe optionen: add, edit, delete
    // uebergebe den dateien add.php, edit.php und delete.php den parameter "type" (page,article,cat,user)
    // das kommt hier noch bla ...
} else {
    header("location:log.php");
}
?>


logout.php
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
<?php session_start(); ?>
<!-- header daten -->
<?php
    include_once("functions.php"); // funktionen einbinden
    
if (isset($_SESSION['user']) AND $_POST['logout'] == "true") { // wenn user-daten gegeben sind
    echo 'Logging out …'// bescheid sagen ^^
    session_unset(); // alle session-variablen lösen
    session_destroy(); // session endgueltig terminieren
    header("location:log.php");
} else {
    header("location:log.php");
}

?>
<!-- footer daten -->


lg



This post has been edited 1 time(s), it was last edited by quantum: 15.01.2010 13:30.

Hilfe bei einem Formular 15.01.2010 13:29 quantum is offline Homepage of quantum Search for Posts by quantum

Surako Surako is a male
Abwedler


Avatar von Surako

Registration Date: 01.03.2009
Posts: 249
Location: Bayern
Program: Photoshop CS5 Extended
Deviantart: stpfeifer

Spacer
      

CrAc, achte auf SQL Injections.^^
So ist deine Seite ganz schnell gehackt. xD

Ersetze Zeile 19 in log.php wie folgt:

php:
1:
$query "SELECT * FROM `".$table."` WHERE `username` = '".mysql_real_escape_string($_POST['user'])."' and password = '".mysql_real_escape_string($_POST['password'])."'";

Soviel mal zur Sicherheit. großes Grinsen

Tipp: Ich würde nicht so viele Variablen benutzen.
Die verbrauchen nur unnötig Platz, Übersicht und Performance.

Nochwas allgemein:
Verschlüssel Passwörter immer mit MD5, das ist sicherer.
PHP Funktion: md5(string);





.:: Artgroup ::.

.:: quantum .::. raD1anT .::. Seb@stian .::. -Soul .::. Surako .::. Tuneup91 ::.
Hilfe bei einem Formular 15.01.2010 20:44 Surako is offline Homepage of Surako Search for Posts by Surako
 
Spacer
   
GFX-Sector
unregistered


 hat kein Avatar


Spacer

Have you enjoyed this topic?


If you were enjoying this post and if you keen on reading more interesting stuff then do not hesitate to complete the free sign up.

After the free registration you will gain access to all areas and you will be able to communicate with other artists from all over the world.

In addition you will benefit from our Photoshop and coding section as well as from our huge (hundreds of gigabytes) free resource section where you can find everything you will need to be a successful (web) designer/artist.

Sign up now and enjoy the advantages as a registered member.

(This website will be ad-free after a complete free sign up.)

New Post 21.01.2010 12:57  
Pages (2): [1] 2 next » Tree Structure | Board Structure
Post New Thread Post Reply
GFX-Sector » Coding Area » Webentwicklung » PHP, MySQL » Hilfe bei einem Formular

Similar topics to Hilfe bei einem Formular
Thread
[S] Flash Hilfe (Forum: Anderes)
Fireball, Nyalin und Kairi beim chilln made by dynamite (Forum: Signaturen/Avatare)
[Frage] Zu einem Bild (Forum: Fragen & Probleme)
Frage zu einem Banner (Forum: Tutorial Suche)
Brauche Hilfe (Forum: Fragen & Probleme)