Archiv verlassen und diese Seite im Standarddesign anzeigen : Benutzerdaten auslesen und ändern
TRC120
26.05.2009, 18:51:53
Hallo zusammen.
Ich bin ein Neuling in php und habe einen 4 Wochen Grundkurs hinter mir.
Jetzt wollte ich für mein Loginsystem ein script machen, wo der Benutzer seine Daten ändern kann.
Ich kann die Daten auslesen, sie in ein Formular bringen, das Formular auch ändern.
Jetzt mein Problem : Wenn ich auf senden klicke, geschied nichts.
Kann mir da jemand helfen ??
Hier das geschriebene, was ich bis jetzt gemacht habe.
<?php
session_start();
// Prüfen, ob Benutzer korekt eingeloggt ist,
// durch Prüfen ob Session-Variable existiert
if (isset ($_SESSION['berechtigt']) == false)
{
?>
<meta http-equiv="refresh" content="0;URL=index.php?seite=login_inc"></meta>
<?php
die();
}
$db = new MySQLi("localhost","root","","trc")
or die('Derzeit kann keine Verbindung zur Datenbank hergestellt werden');
// Ändern eines oder mehrerer Datensätze
// *************************************
if (isset($_POST['senden']))
{
$anfrageart = "INSERT INTO 'userdaten' VALUES('','vname','nname','benutzername','anschrift','plz','ort','tele fon','icq','home','email')";
$ergebnis = $db -> query($anfrageart); // Senden an Dabenbank
if ($ergebnis -> affected_rows > 0)
{
echo "Neue Daten wurde gespeichert!<br>";
$tabellen_id = $db -> insert_id; // Aulesen des neu erstellten Autowertes.
}
else
{
echo "Datensatz konnte nicht eingetragen werden!<br>";
}
/********************************************************************** *****************************************/
} // ende if klammer send button
echo "<div class='profil'>";
echo '<form method="post" action="'.$_SERVER['PHP_SELF'].'">';
echo '<h3>Profil ändern :</h3>';
echo '<table width=100%>';
echo '<tr><td width=20%>Vorname:</td><td><input type="text" name="vname" size="50" value="'.$result['vname'].'"><br></td></tr>';
echo '<tr><td>Nachname:</td><td><input type="text" name="nname" size="50" value="'.$result['nname'].'"><br></td></tr>';
echo '<tr><td>Benutzername:</td><td><input type="text" name="benutzername" size="50" value="'.$result['benutzername'].'"><br></td></tr>';
echo '<tr><td>Anschrift:</td><td><input type="text" name="anschrift" size="50" value="'.$result['anschrift'].'"><br></td></tr>';
echo '<tr><td>PLZ:</td><td><input type="text" name="plz" size="50" value="'.$result['plz'].'"><br></td></tr>';
echo '<tr><td>Ort:</td><td><input type="text" name="ort" size="50" value="'.$result['ort'].'"><br></td></tr>';
echo '<tr><td>Telefon:</td><td><input type="text" name="telefon" size="50" value="'.$result['telefon'].'"><br></td></tr>';
echo '<tr><td>ICQ:</td><td><input type="text" name="icq" size="50" value="'.$result['icq'].'"<br></td></tr>';
echo '<tr><td>Homepage:</td><td><input type="text" name="home" size="50" value="'.$result['home'].'"><br></td></tr>';
echo '<tr><td>E-Mail:</td><td><input type="text" name="email" size="50" value="'.$result['email'].'"><br></td></tr>';
echo '<input type="hidden" name="benutzername" value="'.$_GET['edit'].'"><br>';
echo '<tr><td></td><td><input type="submit" name="senden" value="Senden"> <input type=button value="Zurück" onClick="history.back()"></td></tr>';
echo '</table>';
echo '</form>';
echo '</div>';
/********************************************************************** *****************************************/
if (isset($_POST['update']))
{
$anfrageart = "UPDATE userdaten SET
vname = '$vname',
nname = '$nname',
benutzername= '$benutzername',
anschrift = '$anschrift',
plz = '$plz',
ort = '$ort',
telefon = '$telefon',
icq = '$icq',
home = '$home',
email = '$email' WHERE benutzername = 'benutzername'";
$ergebnis -> $db -> query($anfrageart); // Senden an Dabenbank
if ($ergebnis -> affected_rows > 0)
{
echo $ergebnis -> affected_rows." Daten wurden geändert!<br>";
}
else
{
echo "Keine Datensätze gefunden!<br>";
}
}
$db -> close(); // datenbank geschlossen.
?>
Danke schon mal im Vorraus.
rarios
26.05.2009, 20:18:29
---> if (isset($_POST['update']))
Wo ist in Deinem Script denn ein Feld mit dem Namen update?
Immerhin überprüfst Du ja mit der o.g. Zeile, ob die globale Variable $_POST['update'] vorhanden ist.
Und da sie es nicht ist, und auch beim klicken von Senden nicht erstellt wird, passiert folglich auch rein gar nichts.
TRC120
26.05.2009, 21:50:35
@ rarios
Danke, aber wo oder wie muss ich das einbinden ?
Wie gesagt, Lerne php erst seit 4 Wochen.
rarios
26.05.2009, 22:11:43
Wenn ich mir so Deinen Quelltext angucke, weiß ich nicht wo ich anfangen soll...
Du solltest unbedingt mit error_reporting(E_ALL); am Anfang Deines Scriptes arbeiten.
Das hilft schon einmal etwas.
Ist das ganze nur ein Teil eines Scriptes?
Ansonsten bemängele ich den Teil ab
// ende if klammer send button.
Dort ist ein Formular, was genutzt wird, um neue Einträge zu erstellen. Gleichzeitig werden aber schon, bzw. es sollen jedenfalls durch $result[...] aktuelle Daten im Formular stehen. Eine Definition von $tesult erkenne ich in Deinem Script nirgends.
Das fehlerhafte Formular wird dann an das Script übergeben und ein neuer Eintrag erstellt. Ein Button zum Editieren bzw. zum Speichern der Editierungen gibt es aber nicht, wozu auch immerhin fehlt jegliches Edit-Formular. Im Grunde kannst du den Teil ab if (isset($_POST['update'])) komplett weglassen, alle $result Variablen löschen, und dann hast Du ein Script, dass in eine Datenbank Einträge schreibt. Mehr aber auch nicht.
TRC120
26.05.2009, 22:27:58
Naja, das sollte eigentlich nur der Teil (script) sein, der eben die Daten aus der DB ausliest, sie in einen Formular anzeigt, und man sie da auch ändern und wieder abspeichern kann.
Ich stehe zur zeit komplett daneben,
TRC120
27.05.2009, 20:44:14
Hallo
Habe jetzt das Script verändert, jedoch wird nichts in die DB upgedatet.
<?php
session_start();
// Prüfen, ob Benutzer korekt eingeloggt ist,
// durch Prüfen ob Session-Variable existiert
if (isset ($_SESSION['berechtigt']) == false)
{
?>
<meta http-equiv="refresh" content="0;URL=index.php?seite=login_inc"></meta>
<?php
}
$db = new MySQLi("localhost","root","","trc")
or die('Derzeit kann keine Verbindung zur Datenbank hergestellt werden');
if (isset($_POST['senden']) == true)
{
/********************************************************************** *****************************************/
$anfrageart = "UPDATE userdaten SET
vname = 'vname',
nname = 'nname',
benutzername= 'benutzername',
anschrift = 'anschrift',
plz = 'plz',
ort = 'ort',
telefon = 'telefon',
icq = 'icq',
home = 'home',
email = 'email' WHERE benutzername = '$benutzername' AND passwort ='$passwort_md5'";
$ergebnis = $db -> query($anfrageart); // Senden an Dabenbank
if ($db -> affected_rows > 0)
{
echo $ergebnis -> affected_rows." Daten wurden geändert!<br>";
}
else
{
echo "Keine Datensätze gefunden!<br>";
}
}
echo "<div class='profil'>";
echo '<form method="post" action="">';
echo '<h3>Profil ändern :</h3>';
echo '<table width=100%>';
echo '<tr><td width=20%>Vorname:</td><td><input type="text" name="vname" size="50" value=""><br></td></tr>';
echo '<tr><td>Nachname:</td><td><input type="text" name="nname" size="50" value=""><br></td></tr>';
echo '<tr><td>Benutzername:</td><td><input type="text" name="benutzername" size="50" value=""><br></td></tr>';
echo '<tr><td>Anschrift:</td><td><input type="text" name="anschrift" size="50" value=""><br></td></tr>';
echo '<tr><td>PLZ:</td><td><input type="text" name="plz" size="50" value=""><br></td></tr>';
echo '<tr><td>Ort:</td><td><input type="text" name="ort" size="50" value=""><br></td></tr>';
echo '<tr><td>Telefon:</td><td><input type="text" name="telefon" size="50" value=""><br></td></tr>';
echo '<tr><td>ICQ:</td><td><input type="text" name="icq" size="50" value=""><br></td></tr>';
echo '<tr><td>Homepage:</td><td><input type="text" name="home" size="50" value=""><br></td></tr>';
echo '<tr><td>E-Mail:</td><td><input type="text" name="email" size="50" value=""><br></td></tr>';
echo '<tr><td></td><td><input type="submit" name="senden" value="Ändern"> <input type=button value="Zurück" onClick="history.back()"></td></tr>';
echo '</table>';
echo '</form>';
echo '</div>';
/********************************************************************** *****************************************/
$db -> close(); // datenbank geschlossen.
?>
xabbuh
28.05.2009, 11:17:50
Wird die Datenbankabfrage denn überhaupt ausgeführt? Das kannst du ganz einfach durch eine Ausgabe in der Verzweigung testen.
TRC120
28.05.2009, 12:34:58
hallo xabbuh
Nach nochmaligem Umschreiben, kann ich Daten eingeben. Sobalt ich auf SENDEN klicke bekomme ich die Meldung Datensatz konnte nicht eingetragen werden! und Keine Datensätze gefunden! .
Jedoch wird in der Datenbank nichts verändert.
Hier mein neues Script:
<?php
session_start();
// Prüfen, ob Benutzer korekt eingeloggt ist,
// durch Prüfen ob Session-Variable existiert
if (isset ($_SESSION['berechtigt']) == false)
{
?>
<meta http-equiv="refresh" content="0;URL=index.php?seite=login_inc"></meta>
<?php
}
$db = new MySQLi("localhost","root","","trc")
or die('Derzeit kann keine Verbindung zur Datenbank hergestellt werden');
if (isset($_POST['senden']) == true)
{
$anfrage = "INSERT INTO 'userdaten' VALUES('','vname','nname','benutzername','anschrift','plz','ort','tele fon','icq','home','email')";
$vname = $_POST['vname'];
$nname = $_POST['nname'];
$benutzername = $_POST['benutzername'];
$anschrift = $_POST['anschrift'];
$plz = $_POST['plz'];
$ort = $_POST['ort'];
$telefon = $_POST['telefon'];
$icq = $_POST['icq'];
$home = $_POST['home'];
$email = $_POST['email'];
$ergebnis = $db -> query($anfrage); // Senden an Dabenbank
if ($db -> affected_rows > 0)
{
echo "Neue Daten wurde gespeichert!<br>";
$tabellen_id = $db -> insert_id; // Aulesen des neu erstellten Autowertes.
}
else
{
echo "Datensatz konnte nicht eingetragen werden!<br>";
}
/********************************************************************** *****************************************/
$anfrage = "UPDATE userdaten SET vname='vname', nname='nname', benutzername='benutzername', anschrift='anschrift', plz='plz', ort='ort', telefon='telefon', icq='icq', home='home', email='email' WHERE benutzername='$benutzername'";
$ergebnis = $db -> query($anfrage); // Senden an Dabenbank
if ($db -> affected_rows > 0)
{
echo $ergebnis -> affected_rows." Daten wurden geändert!<br>";
}
else
{
echo "Keine Datensätze gefunden!<br>";
}
}
/********************************************************************** *****************************************/
echo "<div class='profil'>";
echo '<form method="post" action="">';
echo '<h3>Profil ändern :</h3>';
echo '<table width=100%>';
echo('<tr><td width=20%>Vorname:</td><td><input type="text" name="vname" size="50" value=""><br></td></tr>
<tr><td>Nachname:</td><td><input type="text" name="nname" size="50" value=""><br></td></tr>
<tr><td>Benutzername:</td><td><input type="text" name="benutzername" size="50" value=""><br></td></tr>
<tr><td>Anschrift:</td><td><input type="text" name="anschrift" size="50" value=""><br></td></tr>
<tr><td>PLZ:</td><td><input type="text" name="plz" size="50" value=""><br></td></tr>
<tr><td>Ort:</td><td><input type="text" name="ort" size="50" value=""><br></td></tr>
<tr><td>Telefon:</td><td><input type="text" name="telefon" size="50" value=""><br></td></tr>
<tr><td>ICQ:</td><td><input type="text" name="icq" size="50" value=""><br></td></tr>
<tr><td>Homepage:</td><td><input type="text" name="home" size="50" value=""><br></td></tr>
<tr><td>E-Mail:</td><td><input type="text" name="email" size="50" value=""><br></td></tr>
<tr><td></td><td><input type="submit" name="senden" value="Ändern"> <input type=button value="Zurück" onClick="history.back()"></td></tr>');
echo '</table>';
echo '</form>';
echo '</div>';
/********************************************************************** *****************************************/
$db -> close(); // datenbank geschlossen.
?>
xabbuh
28.05.2009, 19:03:37
Steht irgendwas in $db->error?
rarios
29.05.2009, 14:43:55
$anfrage = "INSERT INTO 'userdaten' VALUES('','vname','nname','benutzername','anschrift','plz','ort','tele fon','icq','home','email')";
$vname = $_POST['vname'];
$nname = $_POST['nname'];
$benutzername = $_POST['benutzername'];
$anschrift = $_POST['anschrift'];
$plz = $_POST['plz'];
$ort = $_POST['ort'];
$telefon = $_POST['telefon'];
$icq = $_POST['icq'];
$home = $_POST['home'];
$email = $_POST['email'];
Also entweder ich stehe gerade tierisch auf dem Schlauch, oder aber bei $anfrage fehlen jegliche Variablen. Die werden zwar da unter genannt, aber nicht zu $anfrage hinzugefügt.
Meiner Meinung nach müsste das so deklariert werden:
##### Muster: #####
$query = "INSERT INTO `".$table."` (".$rows.") VALUES (".$values.")";
Du lässt bei Dir $rows komplett weg und schreibst die field_names in VALUE rein. Da gehören aber, wie der Name schon sagt, Deine ganzen Werte rein.
TRC120
29.05.2009, 17:24:35
Ich bins wieder.
Habe das ganze jetzt nochmals geändert, jedoch bleibt der Fehler immer noch.
Alles geht, nur werden die Daten in der Datenbank nicht verändert.
Es wird mir auch keinerlei Fehler angezeit.
<?php
session_start();
// Prüfen, ob Benutzer korekt eingeloggt ist,
// durch Prüfen ob Session-Variable existiert
if (isset ($_SESSION['berechtigt']) == false)
{
?>
<meta http-equiv="refresh" content="0;URL=index.php?seite=login_inc"></meta>
<?php
}
include "include/db_verbindung.php";
if (isset($_POST['senden']) == true)
{
/********************************************************************** *****************************************/
$anfrage_update = "UPDATE userdaten SET
vname ='".$_POST['vname']."',
nname ='".$_POST['nname']."',
benutzername ='".$_POST['benutzername']."',
anschrift ='".$_POST['anschrift']."',
plz ='".$_POST['plz']."',
ort ='".$_POST['ort']."',
telefon ='".$_POST['telefon']."',
icq ='".$_POST['icq']."',
home ='".$_POST['home']."',
email ='".$_POST['email']."' WHERE benutzername='".mysql_real_escape_string($_POST['benutzername'])."'";
$ergebnis = $db -> query($anfrage_update); // Senden an Dabenbank
if ($db -> affected_rows > 0)
{
/********************************************************************** *****************************************/
?>
<div class='profil'>
<form method="post" action="<?php echo $_REQUEST['SELF_PHP'];?>">
<h3>Profil ändern :</h3>
<table width=100%>
<tr><td width=20%>Vorname:</td><td><input type="text" name="vname" size="50" value="<?php echo $vname;?>"><br></td></tr>
<tr><td>Nachname:</td><td><input type="text" name="nname" size="50" value="<?php echo $nname;?>"><br></td></tr>
<tr><td>Benutzername:</td><td><input type="text" name="benutzername" size="50" value="<?php echo $benutzername;?>"><br></td></tr>
<tr><td>Anschrift:</td><td><input type="text" name="anschrift" size="50" value="<?php echo $anschrift;?>"><br></td></tr>
<tr><td>PLZ:</td><td><input type="text" name="plz" size="50" value="<?php echo $plz;?>"><br></td></tr>
<tr><td>Ort:</td><td><input type="text" name="ort" size="50" value="<?php echo $ort;?>"><br></td></tr>
<tr><td>Telefon:</td><td><input type="text" name="telefon" size="50" value="<?php echo $telefon;?>"><br></td></tr>
<tr><td>ICQ:</td><td><input type="text" name="icq" size="50" value="<?php echo $icq;?>"><br></td></tr>
<tr><td>Homepage:</td><td><input type="text" name="home" size="50" value="<?php echo $home;?>"><br></td></tr>
<tr><td>E-Mail:</td><td><input type="text" name="email" size="50" value="<?php echo $email;?>"><br></td></tr>
<tr><td></td><td><input type="hidden" name="benutzername" value="'.$_GET['benutzername'].'"><br></td></tr>
<tr><td></td><td><input type="submit" name="senden" value="Ändern"> <input type=button value="Zurück" onClick="history.back()"></td></tr>
</table>
</form>
</div>
<?php
/********************************************************************** *****************************************/
echo $ergebnis -> affected_rows." Daten wurden geändert!<br>" . mysql_error();
}
else
{
echo "Daten konnten nicht geändert werden!<br>";
}
} // ende if "senden"
/********************************************************************** *****************************************/
?>
<div class='profil'>
<form method="post" action="<?php echo $_REQUEST['SELF_PHP'];?>">
<h3>Profil ändern :</h3>
<table width=100%>
<tr><td width=30%>Vorname:</td><td bgcolor=#444444><input type="text" name="vname" size="50"><br></td></tr>
<tr><td>Nachname:</td><td bgcolor=#444444><input type="text" name="nname" size="50"><br></td></tr>
<tr><td>Benutzername:</td><td bgcolor=#444444><input type="text" name="benutzername" size="50"><br></td></tr>
<tr><td>Anschrift:</td><td bgcolor=#444444><input type="text" name="anschrift" size="50"><br></td></tr>
<tr><td>PLZ:</td><td bgcolor=#444444><input type="text" name="plz" size="50"><br></td></tr>
<tr><td>Ort:</td><td bgcolor=#444444><input type="text" name="ort" size="50"><br></td></tr>
<tr><td>Telefon:</td><td bgcolor=#444444><input type="text" name="telefon" size="50"><br></td></tr>
<tr><td>ICQ:</td><td bgcolor=#444444><input type="text" name="icq" size="50"><br></td></tr>
<tr><td>Homepage:</td><td bgcolor=#444444><input type="text" name="home" size="50"><br></td></tr>
<tr><td>E-Mail:</td><td bgcolor=#444444><input type="text" name="email" size="50"><br></td></tr>
<tr><td></td><td><input type="submit" name="senden" value="Ändern"> <input type=button value="Zurück" onClick="history.back()"></td></tr>
</table>
</form>
</div>
<?php
/********************************************************************** *****************************************/
echo $anfrage_update;
$db -> close(); // datenbank geschlossen.
?>
Ich bin schon am Haareausraufen.
Braucht man noch irgent eine while schleife dazu, oder noch einen anderen Befehl ?????
TRC120
30.05.2009, 20:42:46
Hallo
Hat noch jemand eine Idee ??
Ich habe schon 10x umgeschrieben, immer das selbe problem.
Bekomme immer die echo ausgabe " Daten konnten nicht geändert werden! "
xabbuh
31.05.2009, 00:03:03
Du bist bislang auch noch nicht auf meine Frage eingegangen, ob irgendetwas in $db->error steht.
TRC120
31.05.2009, 00:33:03
Du bist bislang auch noch nicht auf meine Frage eingegangen, ob irgendetwas in $db->error steht.
Entschuldige, aber ich möchte euch nicht weiter Nerven, da ich feststellen muss, daß uns in dem Kurs eigentlich nichts beigebracht wurde.
Ich muss gestehen das ich nicht im geringsten weis, was du damit meinst.
Ich habe durch zufall mit echo $anfrage_update; festgestellt, das meine Formularfeder lehr sind. wie ich das hinbekomme weis ich noch nicht.
vBulletin® v3.8.3, Copyright ©2000-2024, Jelsoft Enterprises Ltd.