PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Daten updaten


ttmobil
07.09.2011, 13:17:51
Hallo zusammen!

Ich möchte Usern die Möglichkeit bieten, Ihre per Formular eingegebenen Daten in
einer Datenbank mittels Nichname & Kennwort selbst zu ändern.
Nickname & Kennwort wird dabei von den Usern selbst vergeben.

Hier die einzelnen PHP-Seiten.

Formular Login:
<form action="login.php" method="post">
<table align=center valign=top cellspacing='0' cellpadding='1' border='0' height=100 width=800>
<tr>
<td width=400 align=right>Name:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td width=400 align=left><input type="text" name="name" size="20"></td>
</tr>
<tr>
<td width=400 align=right>Kennwort:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td width=400 align=left><input type="password" name="pwd" size="20"></td>
</tr>
<tr>
<td></td>
<td align=left><input type="submit" class="submit" value="Login"></td>
</tr>
</form>

Login:
<?php
// Session starten
session_start ();

// Datenbankverbindung aufbauen
$verbindung = mysql_connect ("localhost","root", "")
or die ("keine Verbindung möglich.
Benutzername oder Passwort sind falsch");

mysql_select_db("DB??????")
or die ("Die Datenbank existiert nicht.");

$sql = "SELECT ".
"id ".
"FROM ".
"viererteam ".
"WHERE ".
"(Nickname like '".$_REQUEST["name"]."') AND ".
"(Kennwort = '".$_REQUEST["pwd"]."')";
$result = mysql_query ($sql);

if (mysql_num_rows ($result) > 0)
{
// Benutzerdaten in ein Array auslesen.
$data = mysql_fetch_array ($result);

// Sessionvariablen erstellen und registrieren
$_SESSION["user_id"] = $data["Id"];
$_SESSION["user_nickname"] = $data["Nickname"];

header ("Location: test.php");
}
else
{
header ("Location: fehler.php?fehler=1");
}
?>So, bis hierhin eigentlich kein Problem, in der nächsten Datei, test.php, will ich nun
den entsprechenden Datensatz, passend zu dem Nickname & Kennwort auslesen.
Wie mache ich das? Wie bekomme ich bei WHERE diese Abfrage rein???

<?php
// Aufbau der Datenbankverbindung
$verbindung = mysql_connect ("localhost","root", "")
or die ("keine Verbindung möglich.
Benutzername oder Passwort sind falsch");

mysql_select_db("DB??????")
or die ("Die Datenbank existiert nicht.");

$sql = "select * from viererteam WHERE ???";

$abfrage = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_array($abfrage))
{


Damit wäre mir schonmal geholfen, später dann weiter!
Wäre toll, wenn mir das jemand näher bringen könnte!


Gruß Tim

vt1816
07.09.2011, 13:35:54
Schau mal auf die Überschrift: "PHP für Fortgeschrittene und Experten - Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken".

Zu denen scheinst Du noch nicht zu gehören, denn sonst wären Dir folgende Seiten bekannt:

PHP Handbuch (http://php.net)
PHP Tutorial (http://tut.php-q.net/de/)
PHP FAQ (http://www.php-faq.de/)
PHP Kompendium (http://www.peterkropff.de/)
MySQL Tutorial (http://dev.mysql.com/doc/refman/5.1/de/tutorial.html)


Und:
Wieso benutzt Du LIKE beim Nickname?
Wieso benutzt Du $_REQUEST statt $_GET bzw. $_POST?
Wieso prüfst Du die Usereingaben nicht vor ihrer Verwendung?

So, nun bist Du dran ...

mn_
07.09.2011, 19:50:47
Wieso benutzt Du LIKE beim Nickname?
Wieso benutzt Du $_REQUEST statt $_GET bzw. $_POST?
Wieso prüfst Du die Usereingaben nicht vor ihrer Verwendung?

wenn du dich um diese punkte gekümmert hast:

in der tabelle viererteam die benutzer id hinzufügen. diese kannst du dann mit where abfragen und bekommst nur die datensätze des angemeldeten benutzers.

ps: mysql_real_escape_string verwenden!

ttmobil
08.09.2011, 10:08:13
Hi!

Danke erstmal für Eure Ausführungen.

Wieso benutzt Du LIKE beim Nickname?
Wieso benutzt Du $_REQUEST statt $_GET bzw. $_POST?
Wieso prüfst Du die Usereingaben nicht vor ihrer Verwendung?


Um diese Punkte dacht ich müßte ich mich nicht kümmern, weil das an anderer Stelle
schon funktioniert, wenn auch nur um in einen Adminbereich zu gelangen.
Dies scheint aber wohl bei meinem Vorhaben nicht ganz zu passen. Leider habe ich zu
wenig Hintergrundwissen bzgl. PHP. Nun gut, dann wirds halt ne lange Geburt.

Die Benutzer Id müßte ja schon beim Eintragen von Userdaten automatisch erstellt werden,
kann ich da nicht auch die id ( auto_increment ) verwenden?
Hatte gedacht, das Nickname & Kennwort schon in jedem Datensatz stehen, das ich dies
zur Identifizierung des Datensatzes nehmen kann.

Ich glaub, da steig ich eh nicht durch! :-(

Gruß Tim

ttmobil
08.09.2011, 10:34:23
Hi!

So, an die richtigen Daten komme ich nun schonmal mit dem entsprechenden Nickname & Passwort:

$query = "SELECT * FROM viererteam WHERE Nickname='{$_POST['name']}' AND Kennwort='{$_POST['pwd']}'";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result))
{

blablabla

Jetzt muß ich nur noch zusehen, wie ich die geänderten Daten in den den richtiggen Datensatz schreibe.

ttmobil
08.09.2011, 10:51:35
So!

Also vom LOGIN komme ich problemlos an den zu ändernden Datensatz, diesen
öffne ich in einem Formular. Von dort sende ich die neuen Daten mittels
<form name=\"formular\" method=\"post\" action=\"edit_4.php\" enctype=\"multipart/form-data\">";
<input type=\"text\" name=\"teamname\" class=\"feld\" value='$row[teamname]' tabindex=\"1\"></td>";
an die Datei edit_4.php ( Bsp "teamname" )

<?php
$teamname = $_POST['teamname'];
$mann_1 = $_POST['mann_1'];

// Aufbau der Datenbankverbindung.
$verbindung = mysql_connect ("localhost","root", "")
or die ("keine Verbindung möglich.
Benutzername oder Passwort sind falsch");

mysql_select_db("???")
or die ("Die Datenbank existiert nicht.");

$query = "UPDATE viererteam SET teamname = '$teamname', mann_1 = '$mann_1' WHERE Nickname='{$_POST['name']}' AND Kennwort='{$_POST['pwd']}'";
$result = mysql_query($query) or die(mysql_error());
mysql_close($verbindung);

Die Änderung der Daten klappt aber leider nicht, vermutlich, weil Nickname & Kennwort nicht mit übergeben werden. Wie mache ich das?

Dann sollte es eigentlich klappen!


Gruß Tim

vt1816
08.09.2011, 22:03:27
Zum Beispiel mit hidden-Feldern im Formular.

ttmobil
09.09.2011, 08:06:10
Hi!

So habe ich es momentan gelöst, aber ist das nicht ziemlich unsicher?
Gibts da noch eine elegantere Lösung?


Gruß Tim

vt1816
09.09.2011, 09:37:52
Hi!

So habe ich es momentan gelöst, aber ist das nicht ziemlich unsicher?
Gibts da noch eine elegantere Lösung?


Gruß Tim
Sorry, kann die Felder in Deinem Code nicht entrdecken.

ttmobil
09.09.2011, 12:05:02
Hi!

Wie meinst Du das?
Die habe ich hier ja auch nicht gepostet!

vt1816
09.09.2011, 15:03:52
Hi!

Wie meinst Du das?
Die habe ich hier ja auch nicht gepostet!

Wie sollen wir Dir helfen wenn Du uns die wesentlichen Informationen vorenthältst?

ttmobil
12.09.2011, 10:19:54
STOP!

Habe keinem etwas vorenthalten, habe nur im Laufe der Zeit selbst weiter experimentiert
und die Sache mit "hidden" eingebaut. Mehr nicht.

Mir ging es halt um eine elegantere Lösung, die vll auch etwas sicherer ist.


Gruß Tim