Daten aus Datenbank holen - bearbeiten Problem

Lektor21

Erfahrenes Mitglied
Hallo!

Also ich habe ein Formulat feld:

PHP:
<input type="Text" name="comment" value="<?php echo("$comment"); ?>" class="show" size="67" maxlength="80" style="color:#008000; font-weight:bold;">

Und damit hole ich mir alle Daten zu einem Benutzer aus der Datenbank;

PHP:
<?php
include("config.php");
$info=mysql_query("SELECT * FROM user WHERE user = '$user'");
while ($row = mysql_fetch_object ($info)) {
$vorname="$row->vorname";
$name="$row->name";
$geburtsdatum="$row->geburtsdatum";
$anschrift="$row->anschrift";
$plz="$row->plz";
$ort="$row->ort";
$user="$row->user";
$email="$row->email";
$ebayuser="$row->ebayuser";
$comment="$row->comment";
$payuser="$row->payuser";
$usersince="$row->usersince";
}

Wie kann ich nun in dem Formularfeld etwas ändern und bei klick auf diesen Button:

PHP:
<input type="submit" name="uebernehmen" value="Übernehmen" class="button">

das ganze in die Datenbank schreiben

So ist mein Anfang:

PHP:
<?php
    if ($_POST["uebernehmen"])
    {
    include('config.php');

    
    }
?>
 
Hmmm

Es müssen aber die Daten für diesen $user bearbeitet werden! D.h. ich möchte nur dass die Variable $comment in die Spalte bei $user geupdatet wird!

Wie fange ich damit an? Ich habe keine Ahnung von SQL
 
Zuletzt bearbeitet:
PHP:
mysql_query("UPDATE user SET comment = '$text' WHERE user = '$user'");
so würdest du das Feld "comment" updaten,
denk daran die Eingabe aus dem Formular ($_POST['comment']) und evtl. auch
$user gegen SQL-Injection u.Ä. Angriffe abzusichern!
Angenommen der Benutzername kommt in deiner DB öfters vor, würde der Befehl so bei jedem User mit gleichem Namen das Feld "comment" updaten! Denke nicht dass das hier der Fall ist, aber besser vorher dran denken ;)
Ansonsten könntest du mit LIMIT 1 am Ende der SQL-Anweisung die Ausführung auf den ersten passenden Datensatz beschränken.

Hilft dir das so weiter ?
mfg

Noch was: Mittels einem versteckten Feld im Formular (<input type="hidden" name="benutzername" value="bla">)
und dann im PHP-Script durch $_POST['benutzername'] kannst du zB die Identifizierung des Benutzers lösen!
Ganz allgemein würde ich dir allerdings empfehlen mittels der id auf Datenbankeinträge zuzugreifen
 
Zuletzt bearbeitet:
Nein! Der User ist nur einmal verfügbar, da ich schon beim Anmelden abfrage ob es den Usernamen schon gibt! Und ich lasse auch bei der Anmeldung bereits z.B. bei Namen nur Buchstaben zu! :)

Ich werde es mal testen ...
 
Hallo!

So das funktioniert schonmal!

Aber wie kann ich nach dem aktualisieren zur Seite zurück gehen?

So funktionierts nicht:
PHP:
<?php
    if ($_POST["uebernehmen"])
    {
    include('config.php');
    mysql_query("UPDATE user SET comment = '$comment' WHERE user = '$user'");
    mysql_query($sql) or die(error_reporting()); 
    echo "<head><meta http-equiv='refresh' content='0;URL=userprofile.php'></head>";
    }
?>
 
Ok erledigt!

So funktionierts:

PHP:
<?php
    if ($_POST["uebernehmen"])
    {
    include('config.php');
    mysql_query("UPDATE user SET comment = '$comment' WHERE user = '$user'");
    }
?>

Gibts da irgendwelche Einwände dagegen? :confused:
 
OK warst schon schneller ;)
Keine Einwände, nur ein Anstoss: Eingegebene Daten durch regex o.Ä. absichern!





------

Setz den Block mit in den Teil der Ausgabe!
if ($_POST["uebernehmen"]) ...
wenn true --> Änderungen speichern, Ausgabe Bestätigungstext, Ausgabe Restliche Seite
wenn nicht --> Nur Ausgabeblock

haut das hin ?

PHP:
<?php
include("config.php");
if ($_POST["uebernehmen"])
    {
    mysql_query("UPDATE user SET comment = '$comment' WHERE user = '$user'");
    echo 'Comment gespeichert';
    } 

$info=mysql_query("SELECT * FROM user WHERE user = '$user'");
while ($row = mysql_fetch_object ($info)) {
$vorname="$row->vorname";
$name="$row->name";
$geburtsdatum="$row->geburtsdatum";
$anschrift="$row->anschrift";
$plz="$row->plz";
$ort="$row->ort";
$user="$row->user";
$email="$row->email";
$ebayuser="$row->ebayuser";
$comment="$row->comment";
$payuser="$row->payuser";
$usersince="$row->usersince";
}
 
Zurück