[GastForen Archiv Perl und CGI

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste

Adressenscript für Intern-Bereich

Hanü
Beiträge gesamt: 219

30. Jan 2004, 04:40
Bewertung:

gelesen: 7869

Beitrag als Lesezeichen
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;

(Dieser Beitrag wurde von Hanü am 2. Feb 2004, 13:34 geändert)
Dieser Beitrag wurde nicht geändert.