Sebastian: Mehrere Bilder aus der DB aufeinmal löschen? (perl/mysql)

Beitrag lesen

hi Jan,

ich glaube, das Proplem ist weniger deine mysql-Anweisung, sondern die Zeichenübergabe an dein CGI-Script. Überleg Dir mal was das mit deinen übergebenen Daten macht.

Es definiert ein Hash namens %FM und speichert nach obigem Schema deine ganzen übergegbenen Daten in $FM{'fmname'} = fmwert.
Jetzt benutzt du beim Übergeben der einzelnen Bildernamen jeweils loeschen=bildername, aber beide Male mit 'loeschen' als 'fmname'. Dadurch wird in deinem Hash der erste Eintrag, in deinem Beispiel 'Feb18_11.JPG', durch den zweiten Wert, 'IM003003.JPG', ersetzt. Also kennt dein CGI-Script den ersten garnicht mehr.
Eine Lösung für dieses Problem wäre, du fragst in der foreach-Schleife nach, ob gerade 'loeschen' übergeben wird und definierst den ein neues eigenes Hash, z.B. %DELETE.

Meiner Meinung nach am besten so:

my $i = 0;

foreach $new_daten (@all) {

($para, $value) =split (/=/, $new_daten);

$value =~ tr/+/ /;
   $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
   $value =~ s///g;
   $value =~ s/<([^>]|\n)*>//g;

if($para == "loeschen") {
   $DELETE{'$i'} = $value; $i++;
  }
  else {
   $FM{$para} = $value;
  }
}

Nun hast du deine ganzen Bildernamen in einem eigenen Hash, von welchem du später die Anzahl der Einträge abfragen und über die Zahlen die einzelnen Einträge auslesen kannst.

Viel Spass sonst noch beim Perl-Programmieren...

Sebastian