php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
[HTML] Anmeldeformular: Felder werden nicht an DB übergeben


 
Gravenstein
04-01-2009, 12:02 
 
Hallo,

ich bin am verzweifeln, denn ich bin noch ziemlich neu was MySQL etc. angeht, doch hier geht es nur um das HTML Formular. Deswegen habe ich es auch hier gepostet.

Und zwar, benutze ich diesen HTML Code als Formular:

(Sieht weiter unten)

Das Formular wird zwar erfolgreich abgesendet an die Datenbank, jedoch sind die Salten in der die Daten drinstehen sollen leer.

Damit es besser verstanden wird hier ein Screen: http://img212.imageshack.us/img212/9526/hgfdgwu8.png

Zum Test habe ich erstmal nur username und passwort erstellt. Ich weiß, dass ich die anderen Felder noch hinzufügen muss, die auch im Formular stehen.

Wie muss das Formular verändert werden, damit das Formular die Daten überträgt?

Wäre nett wenn ihn mir helfen könnt.

 
ghostgambler
04-01-2009, 12:53 
 
Bei mir steht der gesamte Code in einer Zeile...

Abgesehen davon fehlt da der wichtige Code - der PHP-Code, der in die Tabelle einträgt.

 
Gravenstein
04-01-2009, 13:30 
 
Hier die Codes:

Anmeldeformular:

<?php
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Unbenanntes Dokument</title>
</head>
<form action="senden.php" method="post" name="form" id="form">
<div width="50px">Anrede</div>
<select name="anrede">
<option>Herr</option>
<option>Frau</option>
</select><br />
<div width="50px">Benutzername:</div> <input type="text" name="benutzername" /><br />
<div width="50px">Vorname:</div> <input type="text" name="vorname" /><br />
<div width="50px">Name:</div><input type="text" name="name" /><br />
<div width="50px">Straße / Nr.:</div><input type="text" name="strasse / nr" /><br />
<div width="50px">PLZ / Ort:</div><input type="text" name="plz / ort" /><br />
<div width="50px">Land:</div><input type="text" name="land" /><br />
<div width="50px">E-Mail Adresse:</div><input type="text" name="email" /><br />
<div width="50px">Klamm-ID:</div><input type="text" name="klammid" /><br />
<div width="50px">Passwort:</div><input type="passwort" name="passwort" /><br />
</select><br />
<input type="submit" value="Send" />
<input type="reset" value="Reset" />
</form>
<body>
</body>
</html>
?>


PHP Code:
<?php

$host = "localhost";
$user = "///";
$passwd = "///";

$db=mysql_connect($host, $user, $passwd) or exit ("Keine Verbindung hergestellt!");
mysql_select_db("///") or exit ("Datenbank nicht geöffnet!");

$sqlbef = "insert into user (username, passwort, gruppe) values ('$username', '$passwort', '$gruppe')";
$sqlerg = mysql_query($sqlbef, $db) or die(mysql_error());

if ($sqlerg == true) {
echo"Anmeldung erfolgreich!";
} else {
echo"Anmeldung nicht erfolgreich!";
}
mysql_close($db);
?>




An der PHP-Datei liegt es nicht, denn wie ich schon gesagt habe Anmelden funktioniert.

Der HTML Code für das Formular ist falsch. Ich vermute die einzelnen Zeilen:

<div width="50px">Klamm-ID:</div><input type="text" name="klammid" /><br />

sind falsch. Diese müssen glaube ich irgendwie ein $ Zeichen enthalten wie in der PHP Datei. Ich weiß nur nicht wo?

 
TobiaZ
04-01-2009, 13:53 
 
Poste den Code doch bitte (gemäß unseren Regeln (http://www.php-resource.de/forum/showthread.php?s=&threadid=50454)) hier im Forum. Das hat den Vorteil, dass dein Problem auch später noch nachvollziehbar bleibt.

 
Gravenstein
04-01-2009, 14:00 
 
So habe es geändert.

 
TobiaZ
04-01-2009, 14:06 
 
Perfekt!

Jetzt noch mal kurz einen Blick hier rein (http://www.php-resource.de/forum/showthread.php?s=&threadid=50454). Und ALLES befolgen! (error-reporting, ausgabe der SQL-Query)

Wie sieht es mit register_globals aus? On oder Off? Sollten generell off sein, nur dass du deine Programmierung auch daran anpassen solltest. ;)

 
gourmet
04-01-2009, 14:09 
 
Hallo,

sql Tip: user_ID
html Tip: das Passwort input Feld ist vom type passworD

vg
gourmet

 
TobiaZ
04-01-2009, 14:27 
 
Original geschrieben von gourmet
sql Tip: user_ID Nirgendwo wird von user_ID gesprochen???

 
Gravenstein
04-01-2009, 14:31 
 
Original geschrieben von TobiaZ
Perfekt!

Jetzt noch mal kurz einen Blick hier rein (http://www.php-resource.de/forum/showthread.php?s=&threadid=50454). Und ALLES befolgen! (error-reporting, ausgabe der SQL-Query)

Wie sieht es mit register_globals aus? On oder Off? Sollten generell off sein, nur dass du deine Programmierung auch daran anpassen solltest. ;)

register_globals ist glaube ich off. Es handelt sich um einem Free Anbieter. Bei den meisten ist das off.

Trotzdem ich glaube ich bin zu blöd dafür. Ich kapiere es einfach nicht :goth:.

Original geschrieben von gourmet
Hallo,

sql Tip: user_ID
html Tip: das Passwort input Feld ist vom type passworD

vg
gourmet

Danke für den HTML Tip: habe es geändert. Eine User ID brauche ich nicht.

 
TobiaZ
04-01-2009, 14:34 
 
register_globals ist glaube ich off. Es handelt sich um einem Free Anbieter. Bei den meisten ist das off. Trotzdem ich glaube ich bin zu blöd dafür. Ich kapiere es einfach nicht . Wenn du nicht in der Lage bist $_POST zu verwenden, dann glaube ich das auch. Tut mir leid, aber das sind absolute Grundlagen. Wer die noch nicht drauf hat, sollte lieber noch ein bisschen mit HTML rumspielen. :teach:

*move* nach PHP, da hier offensichtlich kein HTML-Problem vorliegt.

 
gourmet
04-01-2009, 15:02 
 
Original geschrieben von TobiaZ
Nirgendwo wird von user_ID gesprochen???

^^jup, aber seine tabelle user enthält eine spalte ID die nirgends im query auftaucht???

 
TobiaZ
04-01-2009, 15:06 
 
Wenn du dir den Screenshot mal ansiehst, dürfte dir auffallen, dass er auto_increment gesetzt hat und die Vergabe der ID sinniger Weise dem SQL-Server überlässt.

 
gourmet
04-01-2009, 15:11 
 
Original geschrieben von TobiaZ
Wenn du dir den Screenshot mal ansiehst, dürfte dir auffallen, dass er auto_increment gesetzt hat und die Vergabe der ID sinniger Weise dem SQL-Server überlässt.

sehen kann man es nicht auf dem Screen, es sieht so aus, aber sicher sein anhand des Screen würde ich mir da nicht.

 
TobiaZ
04-01-2009, 15:21 
 
Naja, wenn man bedenkt, dass die zugehörige Query keine ID vorgibt, und alle anderen Daten (aufgrund des register_globals-Problems) leer sind, kann man schon davon ausgehen. Zumal man hier immer ein wenig Glaskugel benötigt. ;)

Jedenfalls würde ich nie (erst recht nicht pauschal) empfehlen, die UserID vom PHP-Script vorgeben zu lassen.

 
Gravenstein
05-01-2009, 13:16 
 
So, es funktioniert jetzt alles wunderbar, ich habe es hinbekommen.

 
nevermind
05-01-2009, 23:17 
 
Als kleinen Tip noch. Evtl. solltest du dich direkt mit
http://de.php.net/mysql_real_escape_string
vertraut machen. Ich kann es aus eigener Erfahrung nur empfehlen das direkt zu nutzen. Je nachdem was du übergibst äußerst Sinnvoll bzw. nicht zu ersetzen.

 
TobiaZ
06-01-2009, 17:53 
 
Dann doch direkt beim Anfang anfangen: SQL-Injections. real_erscape_string ist ja nur die Funktion, die es verhindert. Man sollte aber auch wissen, warum man sie nutzt. ;) Aber wichtiger Hinweis.

 
Gravenstein
18-01-2009, 13:36 
 
Hallo, da bin ich wieder.

Ich möchte kein anderes Thema aufmachen, da es sich hierbei um eine Frage zum Anmeldeformular bzw. MySQL handelt.

Und zwar, möchte ich, dass, wenn sich jemand über das Anmeldeformular anmeldet, dass die Uhrzeit und das Datum automatisch in der DB eingetragen werden. Nur weiß ich jetzt nicht wie ich das machen könnte.

Hilfreich wäre ein Code den ich im Abfragefenster einfügen könnte?

Weiß jemand wie so ein Code aussieht?

 
Kropff
18-01-2009, 17:29 
 
mach es direkt mit SQL. DATETIME und NOW.

peter

 
php_fussel
18-01-2009, 18:31 
 
... also so:

$sqlbef = "insert into user (username, passwort, gruppe, 'datum')
values ('$username', '$passwort', '$gruppe', 'now()')"


... Du kannst aber auch eine Variable im PHP-Script anlegen und mit der funktion ... time() war das glaube ich ... füllen und den Wert als Timestamp speichern (hat einige Vorteile).

... bla, bla
$datum = time();

...

$sqlbef = "insert into user (username, passwort, gruppe, 'datum')
values ('$username', '$passwort', '$gruppe', '$datum')"

... und was die hier angeschprochene ID betrifft ... solche
Generierungen überlässt man üblicherweise der Datenbank
per autoinkrement (wie auch schon gesagt wurde).

Gruß php_fussel

 
Gravenstein
18-01-2009, 19:49 
 
Ich habe es jetzt hinbekommen.


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:06 Uhr.