Hallo nochmal (Jahre später ;-)
Also ich weiß immer noch nicht, was da los ist. Habe mal rumprobiert. Der gesamte Datensatz wird nicht gelöscht. Der Name und die Dinge, die man nicht im Formular ändern kann, bleiben erhalten. Es wird sogar das Änderungsdatum aktuallisiert. Nur alles andere (was man mit den vielen Input-Feldern ändern kann) wird gelöscht. Das passiert übrigens nur, wenn man einen vorhandenen Eintrag löschen will.
Ein Beispiel: Beim ersten Besuch hat der Benutzer seinen Wohnort angegeben (Input-Felder 'PLZ' und 'Wohnort'). Beim 2. Besuch fällt ihm ein, dass er die PLZ falsch hat und die richtige weiß er irgendwie nicht. Also löscht er die Angabe im Feld 'PLZ' und klickt auf 'Daten ändern'. Darauf hin landet er auf einer leeren Profilseite. Alles weg (außer Name, Geburtstag und Änderungsdatum...)
Hier nochmal das KOMPLETTE Änderungs-Script (aenderung.pl):
#!/usr/bin/perl
# Einbinden der Module
use CGI::Carp qw(fatalsToBrowser);
use strict;
use CGI;
use DBI;
##### Verbindung zur Datenbank herstellen ####################
my $dbh=DBI->connect('dbi:mysql:XYZ', 'xyz', 'ZYX') || die "Kann keine Verbindung zur Datenbank herstellen: $DBI::errstr";
my $http=new CGI;
##### Formularfelder einlesen ################################
my $i05 = $http->param('AktuellerName');
my $i06 = $http->param('email');
my $i07 = $http->param('Email2');
my $i08 = $http->param('Website');
my $i09 = $http->param('ICQ');
my $i10 = $http->param('AIM');
my $i11 = $http->param('YIM');
my $i12 = $http->param('MSNM');
my $i14 = $http->param('H-Strasse');
my $i15 = $http->param('H-PLZ');
my $i16 = $http->param('H-Wohnort');
my $i17 = $http->param('H-Land');
my $i18 = $http->param('H-Tel1');
my $i19 = $http->param('H-Tel2');
my $i20 = $http->param('H-Mobil');
my $i21 = $http->param('H-Fax');
my $i22 = $http->param('H-Bemerkungen');
my $i23 = $http->param('Z-Strasse');
my $i24 = $http->param('Z-PLZ');
my $i25 = $http->param('Z-Wohnort');
my $i26 = $http->param('Z-Land');
my $i27 = $http->param('Z-Tel1');
my $i28 = $http->param('Z-Tel2');
my $i29 = $http->param('Z-Mobil');
my $i30 = $http->param('Z-Fax');
my $i31 = $http->param('Z-Bemerkungen');
my $i32 = $http->param('Familienstand');
my $i33 = $http->param('Partner');
my $i34 = $http->param('Kinder');
my $i35 = $http->param('Werdegang');
my $i36 = $http->param('Job-aktuell');
my $i37 = $http->param('Job-wo');
my $i38 = $http->param('Plaene');
my $i39 = $http->param('Sonstiges');
##### Wer ist online? ########################################
my $Name = $ENV{'REMOTE_USER'};
my $Abfrage1=$dbh->prepare("SELECT ID FROM adressen WHERE Username = '$Name'");
$Abfrage1->execute();
(my $ID)=$Abfrage1->fetchrow_array;
$Abfrage1->finish;
##### Aktuelles Datum ########################################
my (undef, $min, $hour, $mday, $mon, $year, $wday, undef, undef) = localtime(time);
my $year = $year+1900;
if ($min < 10) {
my $min = "0$min";
}
if ($hour < 10) {
my $hour = "0$hour";
}
my @tag = ("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
my @monat = ("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
my $Aenderungsdatum = "$tag[$wday], $mday. $monat[$mon] $year";
##### Änderung in Datenbank übernehmen #######################
my $query = $dbh->prepare ("UPDATE adressen SET NeuerName=?, Email_1=?, Email_2=?, Website=?, ICQ=?, AIM=?, YIM=?, MSNM=?, H_Strasse=?, H_PLZ=?, H_Wohnort=?, H_Land=?, H_Tel1=?, H_Tel2=?, H_Mobil=?, H_Fax=?, H_Bemerkung=?, Z_Strasse=?, Z_PLZ=?, Z_Wohnort=?, Z_Land=?, Z_Tel1=?, Z_Tel2=?, Z_Mobil=?, Z_Fax=?, Z_Bemerkung=?, Familienstand=?, Partner=?, Kinder=?, Werdegang=?, Job_aktuell=?, Job_wo=?, Plaene=?, Sonstiges=?, LastChange=? WHERE Username=? ");
print $dbh->errstr; #Errorstring
$query->execute($i05, $i06, $i07, $i08, $i09, $i10, $i11, $i12, $i14, $i15, $i16, $i17, $i18, $i19, $i20, $i21, $i22, $i23, $i24, $i25, $i26, $i27, $i28, $i29, $i30, $i31, $i32, $i33, $i34, $i35, $i36, $i37, $i38, $i39, $Aenderungsdatum, $Name);
$query->finish;
print "Location: ../name/details.pl?id\=$ID\n\n";
$dbh->disconnect; # Datenbankverbindung trennen
exit;
als Antwort auf: [#64448]