Claudia Schroder: PERL Datenbank PROBELM

Hallo !

Ich habe ein Problem mit meiner Perl-Datenbank-Abfrage.
Mittels eines Formulars sollen Daten aus einer Datenbank gelöscht werden. Der Benutzer hat die Möglichkeit mittels checkBoxen
die entsprechenden Daten auszuwählen (hier "KundenNummern". Diese werden mittels Formular übermittelt und sollen dann in SQL +Perl
verarbeitet werden. Das Problem ist, daß immer nur die erste
Kundenummer gelöscht wird ! Hab Ihr eine Idee was falsch sein könnten ?

$KundenNummern = "";  
$KundenNummern = $fdat{KundenNummern};  

@KundenNummer = split(/\t/, $KundenNummern);  

$SQL = "DELETE FROM kundensg";  

$Kunde = shift(@KundenNummer);  
$SQL .= " WHERE kundennummer\_id  = \'$Kunde\'";  

while( $Kunde = shift(@KundeNummer) ) {  

$SQL .= " OR kundennummer_id  = '$Kunde'";
}

-]  

Danke in Vorraus
                Claudia

  1. Hallo Claudia,

    [...]

    verarbeitet werden. Das Problem ist, daß immer nur die erste
    Kundenummer gelöscht wird ! Hab Ihr eine Idee was falsch sein könnten ?

    »»  $KundenNummern = "";
    »»  $KundenNummern = $fdat{KundenNummern};

    »»  @KundenNummer = split(/\t/, $KundenNummern);

    »»  $SQL = "DELETE FROM kundensg";

    »»  $Kunde = shift(@KundenNummer);
    »»  $SQL .= " WHERE kundennummer_id  = '$Kunde'";

    »»  while( $Kunde = shift(@KundeNummer) ) {

    $SQL .= " OR kundennummer_id  = '$Kunde'";

    »»  }

    »»  -]
    [...]

    Ich habe zwar von Perl keine Ahnung, aber evtl. hilft
    Dir es weiter, dass Du in der Zeile:

    while( $Kunde = shift(@KundeNummer) ) {

    KundeNummer und nicht KundenNummer geschrieben hast.

    Du kannst Das SQL-Statement aber auch verkürzen, indem Du
    anstatt einer OR-Verknüpfung die KundenNummern mit IN
    verknüpfst.

    SQL-Statement sieht in etwa so aus:
    DELETE FROM kundensg WHERE kundennummer_id IN (1,2,3,4,5,6,...)
    einfach die Kundennummern mit einem Komma getrennt hintereinander
    schreiben.

    Tschau, Stefan

    1. DANKE !
      DANKE !
      DANKE !
      DANKE !
      DANKE !
      DANKE !
      DANKE !
      DANKE !
      DANKE !
      DANKE !
      DANKE !
      DANKE !
      DANKE !
      DANKE !

  2. Ich habe ein Problem mit meiner Perl-Datenbank-Abfrage.
    Mittels eines Formulars sollen Daten aus einer Datenbank gelöscht werden. Der Benutzer hat die Möglichkeit mittels checkBoxen
    die entsprechenden Daten auszuwählen (hier "KundenNummern". Diese werden mittels Formular übermittelt und sollen dann in SQL +Perl
    verarbeitet werden. Das Problem ist, daß immer nur die erste
    Kundenummer gelöscht wird ! Hab Ihr eine Idee was falsch sein könnten ?

    »»  @KundenNummer = split(/\t/, $KundenNummern);
    »»  while( $Kunde = shift(@KundeNummer) ) {
                                       ^^
    Hier fehlt wohl ein n, deshalb den -w switch benutzen und
    use strict;

    Peter