Ok, ich mach das wohl am Besten mit nem neuen Script.
Das Formular übergibt die Daten mit klicken auf den Send-Button.
Wie müsste das Script aussehen? Oder besser: Wie speichere ich die übergebenen Daten in $-Parameter, die die Namen der Formularfelder haben? Also z.B. zwei Textfeld haben den Namen "PLZ" und "Ort" und die Werte "12345" und "Irgendwo". Wie erreiche ich, dass
$PLZ = "12345" und $Ort = "Irgendwo" damit ich das für den SQL-Befehl gleich weiterverarbeiten kann? Oder muss ich die alle einzeln mit
my $PLZ = $dbh->quote(param('PLZ')); speichern?
Und die zweite Frage: Die SQL-Datenbank mag keine Gänsefüße "". Wie verhindere ich, dass der User welche übergibt?
______________________________
Vorschlag für das Script:
#!/usr/bin/perl
use CGI::Carp qw(fatalsToBrowser);
# DBI-Modul und Datenquelle
use DBI;
my $DB_DSN = "DBI:mysql:xyz"; # Datenbank
my $DB_USER = "xyz"; # Benutzer
my $DB_PASSWD = "xyz"; # Passwort
my $dbh = DBI -> connect ($DB_DSN, $DB_USER, $DB_PASSWD) || die "Kann keine Verbindung zu $DB_DSN herstellen: $DBI::errstr";
my $Name = $ENV{'REMOTE_USER'};
##############################################
##### 1: Daten ändern
my $sql = qq[
UPDATE datenbankname
SET plz=$PLZ, wohnort=$Ort
WHERE User=$Name];
$dbh->do($sql) or die "Die Daten konnten nicht aktuallisiert werden. ($sql)";
##############################################
##### 2: Profil anzeigen (mit den neuen Daten)
##### - hier fehlt noch der entscheitede Refresh-Befehl
my $Abfrage=$dbh->prepare("SELECT * FROM datenbankname WHERE Username = '$Name'");
$Abfrage->execute();
while (@Datensatz=$Abfrage->fetchrow_array) {
($id,)=@Datensatz;
print "Location:
http://www.xyz.de/...ssen.pl?id=$id\n\n"; }
##############################################
$Abfrage->finish;
$dbh->disconnect; # Datenbankverbindung trennen
exit;