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, 12:09. WWW: baseportal.de/cgi-bin/baseportal.pl?htx=/wigeo_halle/
    Doubletten verhindern - Template generiert doppelte Einträge

      Hallo,
      habe mit dem Dubletten-Template ein Problem: Statt doppelte Einträge zu verhindern, wird bei mir der jeweils vorgenommene Eintrag gleich zweimal aufgenommen.
      Unglücklicherweise bin ich ein absoluter Perl-Laie und habe daher das Template einfach von der baseportal-Homepage genommen und meiner erstellten Seite (unter "Aussehen bearbeiten") angefügt (steht es hier vielleicht an einer falschen Stelle?). Natürlich habe ich auch die entsprechenden Anpassungen der Feld- und Datenbanknamen etc. vorgenommen.

      Zum Hintergrund der Abfrage: Gepräft werden soll lediglich, ob ein "Radio-Button"-Feld bereits mit dem angeclickten Wert bereits in der Datenbank vorhanden ist. Sofern dies zutrifft, sollen die eingegebenen Daten nicht gespeichert werden.

      Über Hilfe würde ich mich sehr freuen!
      CZ


    Ihre Antwort:

    Name: EMail: EMail bei Antwort? WWW:
    Titel:
    Text:

    Neuer Eintrag


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

      Hallo,
      habe mit dem Dubletten-Template ein Problem: Statt doppelte Einträge zu verhindern, wird bei mir der jeweils vorgenommene Eintrag gleich zweimal aufgenommen.
      Unglücklicherweise bin ich ein absoluter Perl-Laie und habe daher das Template einfach von der baseportal-Homepage genommen und meiner erstellten Seite (unter "Aussehen bearbeiten") angefügt (steht es hier vielleicht an einer falschen Stelle?). Natürlich habe ich auch die entsprechenden Anpassungen der Feld- und Datenbanknamen etc. vorgenommen.

      Zum Hintergrund der Abfrage: Gepräft werden soll lediglich, ob ein "Radio-Button"-Feld bereits mit dem angeclickten Wert bereits in der Datenbank vorhanden ist. Sofern dies zutrifft, sollen die eingegebenen Daten nicht gespeichert werden.

      Über Hilfe würde ich mich sehr freuen!
      CZ

     Antworten

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

      Hallo Christian,

      <Bitte bei Problemen einen Link auf die entsprechende Seite und den Teil des betreffenden Quellcodes (das Eingabefeld beim "Aussehen" der Seite) angeben, sowie eine konkrete Beschreibung was erreicht werden soll und was dabei nicht funktioniert. Das erleichtert die Hilfe sehr ;-)> 
      

      Quelltext fehlt, Link funktioniert nicht, wie soll man da helfen;-)

      Ein bißchen mehr Info darf es schon sein;-))

      Gruß

      Claus

     Antworten

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

      Hallo,

      sorry wegen der lückenhaften Informationen meinerseits. Anbei nun der Quelltext. Konkret geht es um eine Anmeldung für ein Seminar, wobei jeder Teilnehmer einen Themenwunsch für seinen Vortrag angeben können soll. Insgesamt sollte jeder Themenwunsch (variable Bevorzugtes Thema) aber nur einmal vergeben werden können.

      Über erneute Hilfe würde ich mich sehr freuen!
      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 bevorzugte Thema 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")</perl><BR><BR>
      <do Thema action=all localparams=+ db=/wigeo_halle/main range^=0,20 sort=Name searchfields=Name listfields=Datum,Bevorzugtes\ Thema,Name allfields=Name,Vorname,E-Mail-Adresse,Strasse,PLZ,Wohnort,Studiengang,Telefonnummer,Imma-Nr.,Bevorzugtes\ Thema,Datum formfields=Name,Vorname,E-Mail-Adresse,Studiengang,Imma-Nr.,Strasse,PLZ,Wohnort,Telefonnummer,Bevorzugtes\ Thema showamount=no selectbrowse=top buttonbrowse=top pagebrowse=top indexbrowse=top convert_br=Bevorzugtes\ 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>
      

      <perl>
      #################################################################
      # 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 = "Bevorzugtes 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 = "Bevorzugtes 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 forach - 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 #
      # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #
      </perl>
      

     Antworten

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

      Hallo Christian,

      vermute mal, daß das an dem Feldnamen liegt.

      $suchfeld = "Bevorzugtes Thema";
      

      Versuch mal, das Feld umzubennen z.B.Themenschwerpunkt oder so, sprich ein "Wort".

      Gruß

      Claus

     Antworten

    Beitrag von Christian Zäuner (18 Beiträge) am Freitag, 8.Juli.2005, 14:09.
    Re: Doubletten verhindern - Template generiert doppelte Einträge

      Lieber Claus,

      danke für Deine Mühen. Leider konnte aber auch dieser Vorschlag nicht weiterhelfen.

      Hast Du sonst noch Ideen? (ich lasse Dir ggf. auch gerne die Zugangsdaten zukommen).

      Viele Grüße
      Christian

     Antworten

    Beitrag von Sander (8133 Beiträge) am Freitag, 8.Juli.2005, 14:09.
    Re: Doubletten verhindern - Template generiert doppelte Einträge

      das hauptsächliche Problem besteht darin, das der perlcode vor dem <do action=all....> stehen muß um zu wirken. ansonsten speichert <do action...> ab un danach wird geprüft ob der DS schon da ist.

     Antworten

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

     Antworten


     
 Liste der ersten 150 Einträge:Einklappen Zur Eingabe 
 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.09s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!