Profil bearbeiten Problem

Black Angel

Mitglied
Hallo Com,
habe (mal wieder) ein Problem und zwar möchte ich eine Seite "Profil bearbeiten" erstellen.

Leider weiß ich nicht wirklich wie ich das anstellen soll, habe zwar schon einen Code aber der funktioniert nicht.

Die Datenbank lautet "projekt" tabelle "benutzerdaten" mit folgenden Feldern "Id", "Vorname", "Nachname", "E-Mail", "Kennwort" und "level".

Hier mal mein Code
PHP:
<form action="?s=profil_edit" method="post">
E-Mail
<input name="email" type="text"> 
<input type="submit" value="Updaten">
<?php 
$connectionid = mysql_connect ("xxx", "xx", "xxx"); 
if (!mysql_select_db ("projekt", $connectionid)) 
{ 
  die ("Keine Verbindung zur Datenbank"); 
} 


$sql =  $sql = 'UPDATE
                benutzerdaten
            SET
                E-Mail = "'.$_POST["email"].'"
            WHERE
                Id = "'. $_SESSION["user_id"].'"';
mysql_query ($sql)?>
Leider weiß ich nicht weiter, wäre nett wenn mir jemand helfen könnte :)
 
Zuletzt bearbeitet:
Jetzt erstellste dir ein Formular zum verändern der Daten. Liest die Aktuellen Daten des Users aus und befüllst die Input-Felder. Nach dem Abschicken des Formulares überprüfste die Übergaben der Inputs und speicherst sie mit dem Update in der DB.

Editier bitte deinen ersten Beitrag und nimm die Zugangsdaten zu deiner MySQL-DB raus******!
 
Wieso hast du 2x "$sql" hintereinander?

Außerdem würde ich $_POST['email'] im SQL-Query erstmal mit [phpf]mysql_real_escape_string[/phpf] "entschärfen", sodass kein schädlicher Code eingefügt werden kann.
Noch dazu musst du dieses Feld noch in einfache Anführungszeichen einschließen, also:
PHP:
$sql = "UPDATE benutzerdaten SET E-Mail = '".$_POST["email"]."' WHERE Id = ".$_SESSION["user_id"].";

Und wie Maniac gesagt hat, musst du erstmal die Felder mit einem SELECT-Statement auslesen, z.B.:
SQL:
SELECT * FROM benutzerdaten WHERE Id=3
 
Also so?
PHP:
<form action="?s=profil_edit" method="post">
E-Mail:
<input name="email" type="text"> 
Vorname:
<input name="vname" type="text">
Nachname:
<input name="nname" type="text">
<input type="submit" value="Updaten">
<?php
$connectionid = mysql_connect ("xxx", "xxx", "xxx"); 
if (!mysql_select_db ("projekt", $connectionid)) 
{ 
  die ("Keine Verbindung zur Datenbank"); 
} 

$sql = "SELECT 
`E-Mail`, `Nachname`, `Vorname`
  FROM 
    `benutzerdaten` 
  WHERE  
    `Id` LIKE '".$_SESSION['user_id']."'";
mysql_query ($sql);
$sql2 = "UPDATE 
benutzerdaten 
SET 
E-Mail = '".$_POST["email"]."' WHERE Id = ".$_SESSION["user_id"]."'";  
mysql_query($sql2);
?>
 
Zuletzt bearbeitet:
Du musst erstmal überprüfen, ob Daten schon geschickt worden sind:
PHP:
if ($_POST)
{
  /* update */
}
else
{
  /* select */
}

Wieso benutzt bei der Id ein LIKE? Du kannst doch einfach ein Gleichheitszeichen und wenn es ein Integer (Zahl) ist, dass brauchst du auch keine Anführungszeichen.

Beim zweiten Statement musst du $_POST['email'] noch entschärfen:
PHP:
$sql2 = "UPDATE 
benutzerdaten 
SET 
E-Mail = '".mysql_real_escape_string($_POST["email"])."' WHERE Id = ".$_SESSION["user_id"]."'";
 
PHP:
<form action="?s=profil_edit" method="post">
E-Mail:
<input name="email" type="text"> 
Vorname:
<input name="vname" type="text">
Nachname:
<input name="nname" type="text">
<input type="submit" value="Updaten">
<?php
$connectionid = mysql_connect ("xxx", "xxx", "xxx"); 
if (!mysql_select_db ("projekt", $connectionid)) 
{ 
  die ("Keine Verbindung zur Datenbank"); 
} 

if ($_POST)
{
  $sql2 = "UPDATE 
benutzerdaten 
SET 
E-Mail = '".mysql_real_escape_string($_POST["email"])."' WHERE Id = ".$_SESSION["user_id"]."'";   
}
else
{
$sql = "SELECT 
   `E-Mail`, `Nachname`, `Vorname`
  FROM 
    `benutzerdaten` 
  WHERE  
    `Id` = '".$_SESSION['user_id']."'";
}  

mysql_query($sql2);
?>
Funktioniert irgendwie immer noch nicht :|
Hab ich was vergessen?
 
Was erwartest du denn?

Das mit diesen Zeilen der Computer ein schönes Formular zaubert?

Du musst die Daten doch noch in die einzelnen Formular-Felder schreiben.
Also füge dein Formular in das if ($_POST) ein und schreibe in die value-Attribute die Felder aus dem MySQL-Query-Ergebnis.
 
Ich habs dir mal schnell aus dem Kopf geschrieben, gebe aber keine Garantie das es funktioniert, da ich es nicht getestet habe.

Ist jetzt mal ein Ansatz, daher nicht ganz fertig!
PHP:
<?php
$connectionid = mysql_connect ("xxx", "xxx", "xxx"); 
if (!mysql_select_db ("projekt", $connectionid)) 
{ 
  die ("Keine Verbindung zur Datenbank"); 
} 

$sql = "SELECT
   `E-Mail`, `Nachname`, `Vorname`
  FROM 
    `benutzerdaten` 
  WHERE  
    `Id` = '".$_SESSION['user_id']."'";

	$query = mysql_query($sql);
	$data = mysql_fetch_row($query);


if (isset($_POST['send']))
{
  $sql2 = "UPDATE 
`benutzerdaten`
SET 
`E-Mail` = '".mysql_real_escape_string($_POST['email'])."' WHERE Id = ".$_SESSION['user_id'];  
  $update = mysql_query($sql2);
  
  if($update > 0) echo "Profil wurde gespeichert";
}

 


?>

<form action="?s=profil_edit" method="post">
E-Mail:
<input name="email" type="text" value="<?php echo $data['E-Mail']; ?>" /> 
Vorname:
<input name="vname" type="text" value="<?php echo $data['Vorname']; ?>" />
Nachname:
<input name="nname" type="text" value="<?php echo $data['Nachname'];?>" />
<input type="submit" name="send" value="Updaten">

</form>
 
Zuletzt bearbeitet:
@Maniac:

Das SELECT-Statement inklusive [phpf]mysql_query[/phpf] könnte man noch nach dem UPDATE einfügen. Dann werden bei einer Aktualisierung auch die aktuellen Daten angezeigt.
 
@Maniac:

Das SELECT-Statement inklusive [phpf]mysql_query[/phpf] könnte man noch nach dem UPDATE einfügen. Dann werden bei einer Aktualisierung auch die aktuellen Daten angezeigt.

Jepp, ich hab extra nicht alles so geschrieben wie es normalerweise sein sollte, wollte nicht das ganze Script für den Threadersteller machen...
Deshalb fehlen im UPDATe auch noch die anderen Felder sowie die Default-Werte für das Formular.
 
Zurück