Re: @Claus Doubletten verhindern - Template generiert doppelte Einträge - baseportal Forum - Web-Anwendungen einfach, schnell, leistungsfähig!
baseportal
English - Deutsch "Es gibt keine dummen Fragen - jeder hat einmal angefangen"

 baseportal-ForumDie aktuellsten 10, 30, 50, 100 Einträge anzeigen.  

 
 Ausgewählter Eintrag: Zur Liste 
    Beitrag von Christian Zäuner (18 Beiträge) am Freitag, 8.Juli.2005, 17:38. WWW: baseportal.de/cgi-bin/baseportal.pl?htx=/wigeo_halle/
    Re: @Claus Doubletten verhindern - Template generiert doppelte Einträge

      Hallo Claus,
      nochmals danke, aber die Fehlermeldung bleibt unglücklicherweise dieselbe.
      Ich hefte hier sicherheitshalber den jetzt cerwendeten Code an.

      Beste Grüße
      Christian




      <html><head><title></title>
      <style>
      body { font-family:Arial,Helvetica,sans-serif; background-color:#B00000; font-size:14px; color:#D06000; margin:0;background-image:-; }
      .Titel { font-size:32px; color:#FFFFFF; }
      .Text { font-family:Arial,Helvetica,sans-serif; font-size:14px; font-style:normal; color:#FFFFFF; }
      .Einleitung { font-family:Arial,Helvetica,sans-serif; font-size:14px; font-style:normal; color:#D06000; }
      .headback { background-color:#D00000; }
      .databack { background-color:#900000; }
      .textback { background-color:#700000; }
      a:link { text-decoration:none; color:#B0B0B0; }
      a:visited { text-decoration:none; color:#B0B0B0; }
      a:active { text-decoration:none; color:#FFFFFF; }
      a:hover { text-decoration:none; color:#FFFFFF; }
      </style>
      </head>
      <body><BR><BR>
      <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
      <TR>
      <TD class=headback width="100%" colSpan=5 height=20></TD></TR>
      <TR>
      <TD class=databack width=40></TD>
      <TD class=databack width="80%" colSpan=3 height=50></TD>
      <TD class=databack width=40></TD></TR>
      <TR>
      <TD class=textback width=40></TD>
      <TD class=textback vAlign=top width="40%">
      <P><BR><BR><SPAN class=Titel></SPAN><U>Hinweis:</U> Prüfen Sie, ob das von Ihnen bevorzugteThema bereits vergeben ist (vorhandener Eintrag unter 'Alles'). <STRONG>Bei doppelt eingetragenen Themen wird nur der zeitlich frühere Eintrag berücksichtigt.</STRONG> </P>
      <P>Alle Angaben werden vertraulich behandelt.<BR><BR></P>
      <perl>out datum("jetzt", "Tag.Monatname.Jahr");
      out "<br><br>";
      #################################################################
      # Hier die Felnamen eintragen, durch Komma getrennt auf die #
      # geprüft werden soll, es können theoretisch beliebig viele #
      # Felder eingetragen werden, bedenken sollte man aber, dass #
      # bei vielen Feldern und vielen Datensätzen, die ggf. auf Dou- #
      # bletten durchsucht werden sollen u.U. die Scriptlaufzeit #
      # sich rheblich erhöht - ggf. üerprüfen #
      #. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .#
      $pruefliste = "Thema";
      #################################################################
      # hier das Feld eintragen, auf das als erstes Kriterium die #
      # entsprechenden Datensätze durchsucht werden sollen #
      # ACHTUNG! Dieses Feld MUSS auf SORTIERUNG stehen! #
      #. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .#
      $suchfeld = "Thema";
      #. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .#
      # Datenbankname anpassen, ggf. geht es auch mit dem Parameter #
      # $db - besser/sicherer ist den Datenbanknamen feste anzugeben #
      #. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .#
      $db_work = main;
      # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
      # Hier beginnt die Funktion zur Doublettensuche #
      # kann normalerweise so bleiben - muss nix weiter angepasst #
      # werden #
      #. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .#
      # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #
      if (%_put && $_get{cmd} ne ""){ # wenn was gespeichert oder geändert werden soll
      @l_chk_doppelt = split /\,/, $pruefliste;
      my $ds_krit = $_put{$suchfeld}; # hier
      get "$suchfeld==$ds_krit", $db_work, "doublettensuche";
      while(get_next("doublettensuche")){
      $cnt_doublettencheck++;
      $cnt_doppelt = 0;
      foreach $vergl(@l_chk_doppelt){
      # für jedes Feld nachschaun, ob Wert doppelt ist, wenn ja, Zähler erhöhen
      my $neu_wert = $_put{$vergl};
      $cnt_doppelt++ if $neu_wert eq ${$vergl};
      # foreach-Schleife verlassen, wenn ein doppelter DS gefunden wurde
      # (wäre ja sinnlos, dann noch weiter zu suchen...)
      # doppelter Datensatz liegt vor, wenn alle Felder/Werte aus der
      # pruefliste doppelte Werte enthalten (wird einfach nur gezählt,
      # wenn der neue und der vorh. Wert übereinstimmt) - wenn der Zähler
      # gleich der Anzahl der Elemente der Prüfliste ist, dann liegt ein
      # doppelter Datensatz vor
      last if $cnt_doppelt == $#l_chk_doppelt +1 ;
      }# E foreach - check doppelte DS
      # while_get_next-Schleife verlassen, wenn ein doppelter DS gefunden wurde
      # (wäre ja sinnlos, dann noch weitere Datensätze zu durchsuchen...)
      last if $cnt_doppelt == $#l_chk_doppelt +1;
      } # E while_get_next
      # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #
      if ($cnt_doppelt == $#l_chk_doppelt +1){
      $a_dsdoppelt = "Doppelter Datensatz!";
      ($a_ort,$a_ot,$a_plz) = split /:/,$l_ort_ot_plz;
      $a_action = $cmd eq "add" ? "anlegen" : $cmd eq "mod" ? "ändern" : "";
      $a_actiontext =<<EOF;
      <p>Konnte Datensatz nicht $a_action!<br>
      Daten bereits im Datenbestand</p>
      <p>[ <a href="javascript:history.back(1)">Zurück</a> ] zur vorherigen Seite</p>
      EOF
      undef %_put; $_get{cmd}="";
      } else {
      if($cmd eq "add"){
      $a_actiontext = "<p>Datensatz gespeichert...</p>";
      put; undef %_put; $_get{cmd}="";
      } elsif($cmd eq "mod"){
      $a_actiontext = "<p>Datensatz geändert...</p>";
      chg; undef %_put; $_get{cmd}="";
      } # E if/else DS neu/ändern
      } # E if/else DS doppelt oder nicht, Aktion auf DS
      # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #
      } # E if put+cmd
      out "$a_actiontext";
      # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #
      # Ende des Script-Teile zur Doublettensuche #
      # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #
      <do action=all localparams=+ db=/wigeo_halle/main range^=0,20 sort=Name searchfields=Name listfields=Datum,Thema,Name allfields=Name,Vorname,E-Mail-Adresse,Strasse,PLZ,Wohnort,Studiengang,Telefonnummer,Imma-Nr.,Thema,Datum formfields=Name,Vorname,E-Mail-Adresse,Studiengang,Imma-Nr.,Strasse,PLZ,Wohnort,Telefonnummer,Thema showamount=no selectbrowse=top buttonbrowse=top pagebrowse=top indexbrowse=top convert_br=Thema gridcolor=900000 datasize=2 datacolor=FFFFFF databack=700000 databack2=900000 headcolor=FFFFFF headback=D00000 textcolor=D06000 listtype=list language=de detail=no search=no input=link maxlistlength=60><BR><BR></TD>
      <TD class=textback width=40></TD></TR>
      <TR>
      <TD class=databack width=40></TD>
      <TD class=databack width="80%" colSpan=3 height=50><SPAN class=Einleitung></SPAN></TD>
      <TD class=databack width=40></TD></TR>
      <TR>
      <TD class=headback width="100%" colSpan=5 height=20></TD></TR></TABLE>
      <P align=center><SPAN class=Text name="EMail"></SPAN>
      <CENTER></CENTER></body>
      </perl>
      </html>
      


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von Christian Zäuner (18 Beiträge) am Freitag, 8.Juli.2005, 16:38. WWW: baseportal.de/cgi-bin/baseportal.pl?htx=/wigeo_halle/
    @Claus Doubletten verhindern - Template generiert doppelte Einträge

      Lieber Claus,

      zunächst einmal einen ganz herzlichen Dank für Deine Hilfe! Leider nur führte die Implementation Deines Vorschlags zu folgender Fehlermeldung:

      [ Fehler: Fehlerhafter Perl Code in :
      Excessively long <> operator at (eval 23) line 78. ]

      Ich meine, dass es sich bei der Zeile 78 um folgenden Befehl handelt:
      } # E forach - check doppelte DS
      

      Was kann ich daran verbessern?

     Antworten

    Beitrag von Christian Zäuner (18 Beiträge) am Freitag, 8.Juli.2005, 16:51. WWW: baseportal.de/cgi-bin/baseportal.pl?htx=/wigeo_halle/
    Re: @Claus Doubletten verhindern - Template generiert doppelte Einträge

      Ich habe den Befehl jetzt umgewandet zu einem "foreach", aber selbst das hat nichts geholfen und die Fehlermeldung unverändert gelassen.

     Antworten

    Beitrag von Claus (4645 Beiträge) am Freitag, 8.Juli.2005, 17:02.
    Re: @Claus Doubletten verhindern - Template generiert doppelte Einträge

      Hallo Christian,

      ändere mal diesen Teil

      <P>Alle Angaben werden vertraulich behandelt.<BR><BR></P>
      <perl>out datum("jetzt", "Tag.Monatname.Jahr")<BR><BR>
      

      in:

      <P>Alle Angaben werden vertraulich behandelt.<BR><BR></P>
      <perl>out datum("jetzt", "Tag.Monatname.Jahr");
      out "<br><br>";
      

      Denke mal, dann klappt es;-))

      Gruß

      Claus

     Antworten

    Beitrag von Christian Zäuner (18 Beiträge) am Freitag, 8.Juli.2005, 17:38. WWW: baseportal.de/cgi-bin/baseportal.pl?htx=/wigeo_halle/
    Re: @Claus Doubletten verhindern - Template generiert doppelte Einträge

      Hallo Claus,
      nochmals danke, aber die Fehlermeldung bleibt unglücklicherweise dieselbe.
      Ich hefte hier sicherheitshalber den jetzt cerwendeten Code an.

      Beste Grüße
      Christian




      <html><head><title></title>
      <style>
      body { font-family:Arial,Helvetica,sans-serif; background-color:#B00000; font-size:14px; color:#D06000; margin:0;background-image:-; }
      .Titel { font-size:32px; color:#FFFFFF; }
      .Text { font-family:Arial,Helvetica,sans-serif; font-size:14px; font-style:normal; color:#FFFFFF; }
      .Einleitung { font-family:Arial,Helvetica,sans-serif; font-size:14px; font-style:normal; color:#D06000; }
      .headback { background-color:#D00000; }
      .databack { background-color:#900000; }
      .textback { background-color:#700000; }
      a:link { text-decoration:none; color:#B0B0B0; }
      a:visited { text-decoration:none; color:#B0B0B0; }
      a:active { text-decoration:none; color:#FFFFFF; }
      a:hover { text-decoration:none; color:#FFFFFF; }
      </style>
      </head>
      <body><BR><BR>
      <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
      <TR>
      <TD class=headback width="100%" colSpan=5 height=20></TD></TR>
      <TR>
      <TD class=databack width=40></TD>
      <TD class=databack width="80%" colSpan=3 height=50></TD>
      <TD class=databack width=40></TD></TR>
      <TR>
      <TD class=textback width=40></TD>
      <TD class=textback vAlign=top width="40%">
      <P><BR><BR><SPAN class=Titel></SPAN><U>Hinweis:</U> Prüfen Sie, ob das von Ihnen bevorzugteThema bereits vergeben ist (vorhandener Eintrag unter 'Alles'). <STRONG>Bei doppelt eingetragenen Themen wird nur der zeitlich frühere Eintrag berücksichtigt.</STRONG> </P>
      <P>Alle Angaben werden vertraulich behandelt.<BR><BR></P>
      <perl>out datum("jetzt", "Tag.Monatname.Jahr");
      out "<br><br>";
      #################################################################
      # Hier die Felnamen eintragen, durch Komma getrennt auf die #
      # geprüft werden soll, es können theoretisch beliebig viele #
      # Felder eingetragen werden, bedenken sollte man aber, dass #
      # bei vielen Feldern und vielen Datensätzen, die ggf. auf Dou- #
      # bletten durchsucht werden sollen u.U. die Scriptlaufzeit #
      # sich rheblich erhöht - ggf. üerprüfen #
      #. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .#
      $pruefliste = "Thema";
      #################################################################
      # hier das Feld eintragen, auf das als erstes Kriterium die #
      # entsprechenden Datensätze durchsucht werden sollen #
      # ACHTUNG! Dieses Feld MUSS auf SORTIERUNG stehen! #
      #. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .#
      $suchfeld = "Thema";
      #. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .#
      # Datenbankname anpassen, ggf. geht es auch mit dem Parameter #
      # $db - besser/sicherer ist den Datenbanknamen feste anzugeben #
      #. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .#
      $db_work = main;
      # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
      # Hier beginnt die Funktion zur Doublettensuche #
      # kann normalerweise so bleiben - muss nix weiter angepasst #
      # werden #
      #. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .#
      # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #
      if (%_put && $_get{cmd} ne ""){ # wenn was gespeichert oder geändert werden soll
      @l_chk_doppelt = split /\,/, $pruefliste;
      my $ds_krit = $_put{$suchfeld}; # hier
      get "$suchfeld==$ds_krit", $db_work, "doublettensuche";
      while(get_next("doublettensuche")){
      $cnt_doublettencheck++;
      $cnt_doppelt = 0;
      foreach $vergl(@l_chk_doppelt){
      # für jedes Feld nachschaun, ob Wert doppelt ist, wenn ja, Zähler erhöhen
      my $neu_wert = $_put{$vergl};
      $cnt_doppelt++ if $neu_wert eq ${$vergl};
      # foreach-Schleife verlassen, wenn ein doppelter DS gefunden wurde
      # (wäre ja sinnlos, dann noch weiter zu suchen...)
      # doppelter Datensatz liegt vor, wenn alle Felder/Werte aus der
      # pruefliste doppelte Werte enthalten (wird einfach nur gezählt,
      # wenn der neue und der vorh. Wert übereinstimmt) - wenn der Zähler
      # gleich der Anzahl der Elemente der Prüfliste ist, dann liegt ein
      # doppelter Datensatz vor
      last if $cnt_doppelt == $#l_chk_doppelt +1 ;
      }# E foreach - check doppelte DS
      # while_get_next-Schleife verlassen, wenn ein doppelter DS gefunden wurde
      # (wäre ja sinnlos, dann noch weitere Datensätze zu durchsuchen...)
      last if $cnt_doppelt == $#l_chk_doppelt +1;
      } # E while_get_next
      # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #
      if ($cnt_doppelt == $#l_chk_doppelt +1){
      $a_dsdoppelt = "Doppelter Datensatz!";
      ($a_ort,$a_ot,$a_plz) = split /:/,$l_ort_ot_plz;
      $a_action = $cmd eq "add" ? "anlegen" : $cmd eq "mod" ? "ändern" : "";
      $a_actiontext =<<EOF;
      <p>Konnte Datensatz nicht $a_action!<br>
      Daten bereits im Datenbestand</p>
      <p>[ <a href="javascript:history.back(1)">Zurück</a> ] zur vorherigen Seite</p>
      EOF
      undef %_put; $_get{cmd}="";
      } else {
      if($cmd eq "add"){
      $a_actiontext = "<p>Datensatz gespeichert...</p>";
      put; undef %_put; $_get{cmd}="";
      } elsif($cmd eq "mod"){
      $a_actiontext = "<p>Datensatz geändert...</p>";
      chg; undef %_put; $_get{cmd}="";
      } # E if/else DS neu/ändern
      } # E if/else DS doppelt oder nicht, Aktion auf DS
      # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #
      } # E if put+cmd
      out "$a_actiontext";
      # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #
      # Ende des Script-Teile zur Doublettensuche #
      # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #
      <do action=all localparams=+ db=/wigeo_halle/main range^=0,20 sort=Name searchfields=Name listfields=Datum,Thema,Name allfields=Name,Vorname,E-Mail-Adresse,Strasse,PLZ,Wohnort,Studiengang,Telefonnummer,Imma-Nr.,Thema,Datum formfields=Name,Vorname,E-Mail-Adresse,Studiengang,Imma-Nr.,Strasse,PLZ,Wohnort,Telefonnummer,Thema showamount=no selectbrowse=top buttonbrowse=top pagebrowse=top indexbrowse=top convert_br=Thema gridcolor=900000 datasize=2 datacolor=FFFFFF databack=700000 databack2=900000 headcolor=FFFFFF headback=D00000 textcolor=D06000 listtype=list language=de detail=no search=no input=link maxlistlength=60><BR><BR></TD>
      <TD class=textback width=40></TD></TR>
      <TR>
      <TD class=databack width=40></TD>
      <TD class=databack width="80%" colSpan=3 height=50><SPAN class=Einleitung></SPAN></TD>
      <TD class=databack width=40></TD></TR>
      <TR>
      <TD class=headback width="100%" colSpan=5 height=20></TD></TR></TABLE>
      <P align=center><SPAN class=Text name="EMail"></SPAN>
      <CENTER></CENTER></body>
      </perl>
      </html>
      

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Freitag, 8.Juli.2005, 17:43.
    Re: @Claus Doubletten verhindern - Template generiert doppelte Einträge

      tststs - das kommt davon, wenn man abschreibt und dann nicht weiss, was soll es bedeuten ... ;-)
      Perl-Blöcke müssen natürlich auch wieder geschlossen werden, sonst geht das in die Hose...und da helfen auch keine BRs...
      Nach der Raute-Pluszeichenzeile ein schließendes </perl> rein und es müsste laufen....

     Antworten

    Beitrag von Claus (4645 Beiträge) am Freitag, 8.Juli.2005, 18:07.
    Re: @Claus Doubletten verhindern - Template generiert doppelte Einträge

      Hallo Ruben,

      diese Woche kaum geschlafen und do action=all benutze ich nicht;-) im do_all kannste das ganze innerhalb von perl laufen lassen.

      kriege momentan wahrscheinlich nicht mal mehr die einfachsten Dinge auf die Reihe und bin immer noch am Rätseln, wie ich diese "ominöse" TAN eingebaut kriege. Sehe mal wieder den Wald vor lauter Bäumen nicht;-))

      Wird Zeit, den überfälligen Urlaub anzutreten.

      Gruß

      Claus

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Freitag, 8.Juli.2005, 19:09.
    Re: @Claus Doubletten verhindern - Template generiert doppelte Einträge

      ja - kenn ich, hatte auch eben mal etwas Druck - ne recht komplexe Datenauswertung zu bauen. Aber läuft - Test unter www.solarbruecke.de und dann Menü "Sich informieren" - Unterpunkt "Auswertung Solarbrückenliga".
      Die Daten werden über "Aktiv werden" - "Solarbrueckenliga" eingegeben, wobei u.a. alle Optionfelder dynamisch aus den Werten von DBs generiert werden.

      Und manchmal ist man tatsächlich einfach "Betriebsblind" - da kann so ein Überseher schon mal vorkommen...

     Antworten

    Beitrag von Christian Zäuner (18 Beiträge) am Freitag, 8.Juli.2005, 18:18. WWW: baseportal.de/cgi-bin/baseportal.pl?htx=/wigeo_halle/
    Re: @Claus Doubletten verhindern - Template generiert doppelte Einträge

      Hallo Claus,
      nochmals danke, aber die Fehlermeldung bleibt unglücklicherweise dieselbe.
      Ich hefte hier sicherheitshalber den jetzt cerwendeten Code an.

      Beste Grüße
      Christian




      <html><head><title></title>
      <style>
      body { font-family:Arial,Helvetica,sans-serif; background-color:#B00000; font-size:14px; color:#D06000; margin:0;background-image:-; }
      .Titel { font-size:32px; color:#FFFFFF; }
      .Text { font-family:Arial,Helvetica,sans-serif; font-size:14px; font-style:normal; color:#FFFFFF; }
      .Einleitung { font-family:Arial,Helvetica,sans-serif; font-size:14px; font-style:normal; color:#D06000; }
      .headback { background-color:#D00000; }
      .databack { background-color:#900000; }
      .textback { background-color:#700000; }
      a:link { text-decoration:none; color:#B0B0B0; }
      a:visited { text-decoration:none; color:#B0B0B0; }
      a:active { text-decoration:none; color:#FFFFFF; }
      a:hover { text-decoration:none; color:#FFFFFF; }
      </style>
      </head>
      <body><BR><BR>
      <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
      <TR>
      <TD class=headback width="100%" colSpan=5 height=20></TD></TR>
      <TR>
      <TD class=databack width=40></TD>
      <TD class=databack width="80%" colSpan=3 height=50></TD>
      <TD class=databack width=40></TD></TR>
      <TR>
      <TD class=textback width=40></TD>
      <TD class=textback vAlign=top width="40%">
      <P><BR><BR><SPAN class=Titel></SPAN><U>Hinweis:</U> Prüfen Sie, ob das von Ihnen bevorzugteThema bereits vergeben ist (vorhandener Eintrag unter 'Alles'). <STRONG>Bei doppelt eingetragenen Themen wird nur der zeitlich frühere Eintrag berücksichtigt.</STRONG> </P>
      <P>Alle Angaben werden vertraulich behandelt.<BR><BR></P>
      <perl>out datum("jetzt", "Tag.Monatname.Jahr");
      out "<br><br>";
      #################################################################
      # Hier die Felnamen eintragen, durch Komma getrennt auf die #
      # geprüft werden soll, es können theoretisch beliebig viele #
      # Felder eingetragen werden, bedenken sollte man aber, dass #
      # bei vielen Feldern und vielen Datensätzen, die ggf. auf Dou- #
      # bletten durchsucht werden sollen u.U. die Scriptlaufzeit #
      # sich rheblich erhöht - ggf. üerprüfen #
      #. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .#
      $pruefliste = "Thema";
      #################################################################
      # hier das Feld eintragen, auf das als erstes Kriterium die #
      # entsprechenden Datensätze durchsucht werden sollen #
      # ACHTUNG! Dieses Feld MUSS auf SORTIERUNG stehen! #
      #. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .#
      $suchfeld = "Thema";
      #. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .#
      # Datenbankname anpassen, ggf. geht es auch mit dem Parameter #
      # $db - besser/sicherer ist den Datenbanknamen feste anzugeben #
      #. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .#
      $db_work = main;
      # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
      # Hier beginnt die Funktion zur Doublettensuche #
      # kann normalerweise so bleiben - muss nix weiter angepasst #
      # werden #
      #. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .#
      # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #
      if (%_put && $_get{cmd} ne ""){ # wenn was gespeichert oder geändert werden soll
      @l_chk_doppelt = split /\,/, $pruefliste;
      my $ds_krit = $_put{$suchfeld}; # hier
      get "$suchfeld==$ds_krit", $db_work, "doublettensuche";
      while(get_next("doublettensuche")){
      $cnt_doublettencheck++;
      $cnt_doppelt = 0;
      foreach $vergl(@l_chk_doppelt){
      # für jedes Feld nachschaun, ob Wert doppelt ist, wenn ja, Zähler erhöhen
      my $neu_wert = $_put{$vergl};
      $cnt_doppelt++ if $neu_wert eq ${$vergl};
      # foreach-Schleife verlassen, wenn ein doppelter DS gefunden wurde
      # (wäre ja sinnlos, dann noch weiter zu suchen...)
      # doppelter Datensatz liegt vor, wenn alle Felder/Werte aus der
      # pruefliste doppelte Werte enthalten (wird einfach nur gezählt,
      # wenn der neue und der vorh. Wert übereinstimmt) - wenn der Zähler
      # gleich der Anzahl der Elemente der Prüfliste ist, dann liegt ein
      # doppelter Datensatz vor
      last if $cnt_doppelt == $#l_chk_doppelt +1 ;
      }# E foreach - check doppelte DS
      # while_get_next-Schleife verlassen, wenn ein doppelter DS gefunden wurde
      # (wäre ja sinnlos, dann noch weitere Datensätze zu durchsuchen...)
      last if $cnt_doppelt == $#l_chk_doppelt +1;
      } # E while_get_next
      # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #
      if ($cnt_doppelt == $#l_chk_doppelt +1){
      $a_dsdoppelt = "Doppelter Datensatz!";
      ($a_ort,$a_ot,$a_plz) = split /:/,$l_ort_ot_plz;
      $a_action = $cmd eq "add" ? "anlegen" : $cmd eq "mod" ? "ändern" : "";
      $a_actiontext =<<EOF;
      <p>Konnte Datensatz nicht $a_action!<br>
      Daten bereits im Datenbestand</p>
      <p>[ <a href="javascript:history.back(1)">Zurück</a> ] zur vorherigen Seite</p>
      EOF
      undef %_put; $_get{cmd}="";
      } else {
      if($cmd eq "add"){
      $a_actiontext = "<p>Datensatz gespeichert...</p>";
      put; undef %_put; $_get{cmd}="";
      } elsif($cmd eq "mod"){
      $a_actiontext = "<p>Datensatz geändert...</p>";
      chg; undef %_put; $_get{cmd}="";
      } # E if/else DS neu/ändern
      } # E if/else DS doppelt oder nicht, Aktion auf DS
      # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #
      } # E if put+cmd
      out "$a_actiontext";
      # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #
      # Ende des Script-Teile zur Doublettensuche #
      # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #
      <do action=all localparams=+ db=/wigeo_halle/main range^=0,20 sort=Name searchfields=Name listfields=Datum,Thema,Name allfields=Name,Vorname,E-Mail-Adresse,Strasse,PLZ,Wohnort,Studiengang,Telefonnummer,Imma-Nr.,Thema,Datum formfields=Name,Vorname,E-Mail-Adresse,Studiengang,Imma-Nr.,Strasse,PLZ,Wohnort,Telefonnummer,Thema showamount=no selectbrowse=top buttonbrowse=top pagebrowse=top indexbrowse=top convert_br=Thema gridcolor=900000 datasize=2 datacolor=FFFFFF databack=700000 databack2=900000 headcolor=FFFFFF headback=D00000 textcolor=D06000 listtype=list language=de detail=no search=no input=link maxlistlength=60><BR><BR></TD>
      <TD class=textback width=40></TD></TR>
      <TR>
      <TD class=databack width=40></TD>
      <TD class=databack width="80%" colSpan=3 height=50><SPAN class=Einleitung></SPAN></TD>
      <TD class=databack width=40></TD></TR>
      <TR>
      <TD class=headback width="100%" colSpan=5 height=20></TD></TR></TABLE>
      <P align=center><SPAN class=Text name="EMail"></SPAN>
      <CENTER></CENTER></body>
      </perl>
      </html>
      

     Antworten

    Beitrag von Claus (4645 Beiträge) am Freitag, 8.Juli.2005, 18:34.
    Re: @Claus Doubletten verhindern - Template generiert doppelte Einträge

      Hallo Christian,


      auf ein neues, hatte nicht berücksichtigt, daß das im do action=all läuft;-)

      alt:



      } # E if/else DS neu/ändern
      } # E if/else DS doppelt oder nicht, Aktion auf DS
      # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #
      } # E if put+cmd
      out "$a_actiontext";
      # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #
      # Ende des Script-Teile zur Doublettensuche #
      # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #
      <do action=all localparams=+ db=/wigeo_halle/main range^=0,20 sort=Name searchfields=Name listfields=Datum,Thema,Name allfields=Name,Vorname,E-Mail-Adresse,Strasse,PLZ,Wohnort,Studiengang,Telefonnummer,Imma-Nr.,Thema,Datum formfields=Name,Vorname,E-Mail-Adresse,Studiengang,Imma-Nr.,Strasse,PLZ,Wohnort,Telefonnummer,Thema showamount=no selectbrowse=top buttonbrowse=top pagebrowse=top indexbrowse=top convert_br=Thema gridcolor=900000 datasize=2 datacolor=FFFFFF databack=700000 databack2=900000 headcolor=FFFFFF headback=D00000 textcolor=D06000 listtype=list language=de detail=no search=no input=link maxlistlength=60><BR><BR></TD>
      <TD class=textback width=40></TD></TR>
      <TR>
      <TD class=databack width=40></TD>
      <TD class=databack width="80%" colSpan=3 height=50><SPAN class=Einleitung></SPAN></TD>
      <TD class=databack width=40></TD></TR>
      <TR>
      <TD class=headback width="100%" colSpan=5 height=20></TD></TR></TABLE>
      <P align=center><SPAN class=Text name="EMail"></SPAN>
      <CENTER></CENTER></body>
      </perl>
      </html>  
      



      ändern in:


      } # E if/else DS neu/ändern
      } # E if/else DS doppelt oder nicht, Aktion auf DS
      # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #
      } # E if put+cmd
      out "$a_actiontext";
      # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #
      # Ende des Script-Teile zur Doublettensuche #
      # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #
      

      </perl>
      <do action=all localparams=+ db=/wigeo_halle/main range^=0,20 sort=Name searchfields=Name listfields=Datum,Thema,Name allfields=Name,Vorname,E-Mail-Adresse,Strasse,PLZ,Wohnort,Studiengang,Telefonnummer,Imma-Nr.,Thema,Datum formfields=Name,Vorname,E-Mail-Adresse,Studiengang,Imma-Nr.,Strasse,PLZ,Wohnort,Telefonnummer,Thema showamount=no selectbrowse=top buttonbrowse=top pagebrowse=top indexbrowse=top convert_br=Thema gridcolor=900000 datasize=2 datacolor=FFFFFF databack=700000 databack2=900000 headcolor=FFFFFF headback=D00000 textcolor=D06000 listtype=list language=de detail=no search=no input=link maxlistlength=60><BR><BR></TD>
      <TD class=textback width=40></TD></TR>
      <TR>
      <TD class=databack width=40></TD>
      <TD class=databack width="80%" colSpan=3 height=50><SPAN class=Einleitung></SPAN></TD>
      <TD class=databack width=40></TD></TR>
      <TR>
      <TD class=headback width="100%" colSpan=5 height=20></TD></TR></TABLE>
      <P align=center><SPAN class=Text name="EMail"></SPAN>
      <CENTER></CENTER></body>
      </html>
      

     Antworten


     
 Liste der Einträge von 23401 bis 23551:Einklappen Zur Eingabe 
Neueste Einträge << 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | Neuere Einträge < Zur Eingabe  > Ältere Einträge | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >> Älteste Einträge


Zurück zur Homepage

© baseportal.de. Alle Rechte vorbehalten. Nutzungsbedingungen



powered in 0.06s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!