Clanintern Clanintern Clanintern

Forum

Öffentliche Foren
FORUM: Spiele & Computer THEMA: [PHP] MYSQL Update funktioniert nicht
AUTOR BEITRAG
Bender

RANG Deckschrubber

#1 - 26.03 17:51

Hallo,

ich habe hier ein Formular erstellt womit ich mysql daten über "mysql-update" ändern will. Ich kann zwar die daten eintragen und abschicken, aber sie werden nicht in der mysql tabelle gespeichert... kann mir jemand sagen wo der fehler liegt? Ich weiss nicht mehr weiter.

Hier der Code:

-------------------------------------------------

case edit:
if(isset($_POST['select']) AND "Benutzer auswählen" == $_POST['select'])
{
$_SESSION['uid'] = $_POST['uid'];
$sql = "SELECT
ID,
Vorname,
Nachname,
Nickname,
Ort,
Geburtstag,
Text,
Date
FROM
$friendz
WHERE
ID = '".$_SESSION['uid']."';";
$result = mysql_query($sql) OR die(mysql_error());
$row = mysql_fetch_assoc($result);
echo "<center>\n";
echo "<form action=\"index.php?section=admin&site=admin_friendz&action=edit\"method=\"post\">\n";
echo "<u>//".$row['Vorname']."'s Profil bearbeiten//</u>\n";
echo "<br>\n";
echo "<br>\n";
echo "<label for=\"vorname\">Vorname</label>\n";
if(empty($row['Vorname']))
echo " <input type=\"text\" name=\"vorname\" id=\"vorname\" value=\"N⁄A\"/>\n";
else
{
echo " <input type=\"text\" name=\"vorname\" id=\"vorname\" value=\"".$row['Vorname']."\"/>\n";
}
echo "<br>\n";
echo "<label for=\"nachname\">Nachname</label>\n";
if(empty($row['Nachname']))
echo " <input type=\"text\" name=\"nachname\" id=\"nachname\" value=\"N⁄A\"/>\n";
else
{
echo " <input type=\"text\" name=\"nachname\" id=\"nachname\" value=\"".$row['Nachname']."\"/>\n";
}
echo "<br>\n";
echo "<label for=\"nickname\">Nickname</label>\n";
if(empty($row['Nickname']))
echo " <input type=\"text\" name=\"nickname\" id=\"nickname\" value=\"N⁄A\"/>\n";
else
{
echo " <input type=\"text\" name=\"nickname\" id=\"nickname\" value=\"".$row['Nickname']."\"/>\n";
}
echo "<br>\n";
echo "<label for=\"ort\">Ort</label>\n";
if(empty($row['Ort']))
echo " <input type=\"text\" name=\"ort\" id=\"ort\" value=\"N⁄A\"/>\n";
else
{
echo " <input type=\"text\" name=\"ort\" id=\"ort\" value=\"".$row['Ort']."\"/>\n";
}
echo "<br>\n";
echo "<label for=\"geburtstag\">Geburtstag</label>\n";
if(empty($row['Geburtstag']))
echo " <input type=\"text\" name=\"geburtstag\" id=\"geburtstag\" value=\"N⁄A\"/>\n";
else
{
echo " <input type=\"text\" name=\"geburtstag\" id=\"geburtstag\" value=\"".$row['Geburtstag']."\"/>\n";
}
echo "<br>\n";
echo "<label for=\"date\">Date</label>\n";
if(empty($row['Date']))
echo " <input type=\"text\" name=\"date\" id=\"date\" value=\"N⁄A\"/>\n";
else
{
echo " <input type=\"text\" name=\"date\" id=\"date\" value=\"".$row['Date']."\"/>\n";
}
echo "<br>\n";
echo "<label for=\"text\">Text</label>\n";
if(empty($row['Text']))
echo "<textarea rows=8 cols=25 name=text id=text>N⁄A</textarea>\n";
else
{
echo "<textarea rows=8 cols=25 name=text id=text>".$row['Text']."</textarea>\n";
}
echo "<br>\n";
echo "<br>\n";
echo "<input type=\"submit\" name=\"submit\" value=\"Speichern\" />\n";
echo "<input type=\"reset\" name=\"submit\" value=\"Zurücksetzen\" />\n";
echo "<input type=\"hidden\" name=\"".session_name()."\" value=\"".session_id()."\" />\n";
echo "</form>\n";
echo "</center>\n";
echo "<br>\n";
echo "<br>\n";
back2admin();
}

else
{

if(isset($_POST['submit']) AND "Speichern" == $_POST['submit'])
{
$sql2 = "UPDATE
$friendz
SET
Vorname = '($_POST['vorname'])',
Nachname = '($_POST['nachname'])',
Nickname = '($_POST['nickname'])',
Ort = '($_POST['ort'])',
Geburtstag = '($_POST['geburtstag'])',
Text = '($_POST['text'])',
Date = '($_POST['date'])'
WHERE
ID = '".$_SESSION['ID']."'";
mysql_query($sql2) OR die(mysql_error());
echo "<center>\n";
echo "<b>Ihre Daten wurde gespeichert</b>\n";
echo "<br>\n";
back2admin();
echo "</center>\n";
}
else
{
echo "<center>\n";
echo "<form ".
"action=\"index.php?section=admin&site=admin_friendz&action=edit\" ".
"method=\"post\" ".
"class=\"formular\">\n";
echo "<u>//Benutzer bearbeiten//\n</u></>";
$sql = "SELECT
ID,
Vorname,
Nachname,
Nickname,
Ort,
Geburtstag,
Text,
Date
FROM
$friendz
ORDER BY
Nickname ASC;";
$result = mysql_query($sql) OR die(mysql_error());
echo "<br>\n";
echo "<br>\n";
echo "<select id=\"nickname\" name=\"uid\">\n";
echo "<br>\n";
echo "<br>\n";
echo "<option value=\"0\" selected=\"selected\">Bitte einen User wählen</option>\n";
while($row = mysql_fetch_assoc($result))
{
echo "<option value=\"".$row['ID']."\">".$row['Nickname']."</option>\n";
}
echo "</select>\n";
echo "<br>\n";
echo "<br>\n";
echo "<input type=\"submit\" name=\"select\" value=\"Benutzer auswählen\" />\n";
echo "<input type=\"reset\" name=\"submit\" value=\"Zurücksetzen\" />\n";
echo "<input type=\"hidden\" name=\"".session_name()."\" ". "value=\"".session_id()."\" />\n";
echo " </li>\n";
echo "</form>\n";
back2admin();
echo "</center>\n";
}
}
break;

-------------------------------------------------
fishbone

RANG Deckschrubber

#2 - 26.03 19:00

Nur mal die ersten Zeilen überflogen und dabei das entdeckt:

WHERE
ID = '".$_SESSION['uid']."';";

Warum ist das erste Semikolon da? Das gehört da definitiv nicht hin!
Total unordentlich, da hab ich schon gar keine Lust mehr, bis zum Ende zu lesen. Sorry.
deluxe *im ganz normalen Prüfungswahnsinn*

RANG Master of Clanintern

#3 - 26.03 21:11

Packs in ein Pastebin bzw. nopaste ding...

nopaste.php-quake.net
Crush (steht auf die extremeren Sachen)

RANG Deckschrubber

#4 - 26.03 21:18

Hat zwar nichts mit deinem Problem zu tun, aber überleg mal was passiert, wenn ich in dein Formular als Vorname
code:
PWNZORED'; DROP TABLE $friendz;
eingebe.

Alle Strings, die du von dem User erhälst, IMMER durch mysql_real_escape_string schicken, ansonsten kann ein gewiefter Hacker mit deiner Datenbank machen was er will.
*al!ve* - Vorbereitung aufs Urlaubssemester

RANG Master of Clanintern

#5 - 27.03 01:12

So ganz allgemein kann da mysql_error() recht gut helfen.d
Bender

RANG Deckschrubber

#6 - 27.03 15:22

Hab jetzt mit error_reporting(E_ALL); gearbeitet und alle angezeigten fehler beseitigt^^. Jetzt hab ich nur noch ein problem. Wenn ich etwas ediere ändert er immer die daten aus der ersten Zeile also "ID 1" und ich versteh nicht wieso. Kann mir da jemand von euch weiter helfen oder tips geben was der fehler sein könnte?
*al!ve* - Vorbereitung aufs Urlaubssemester

RANG Master of Clanintern

#7 - 27.03 18:24

Du sollst nicht error_reporting sondern mysql_error verwenden. Error_reporting liefert dir PHP-Fehler (und Warnungen), von MySQL-Fehlern wirst du da nichts mitbekommen.

Außerdem könntest du dir mal $_SESSION['ID'] ausgeben lassen. Evtl steht da ja ausschließlich ne 1 drin?