Re: Doppelte Einträge!? - mich interessiert das auch!! - Nachtrag - 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 Oliver (172 Beiträge) am Sonntag, 3.Juni.2001, 23:58.
    Re: Doppelte Einträge!? - mich interessiert das auch!! - Nachtrag

      Hallo Stefan,

      das geht jetzt in die Tiefen von Perl. Ist mir jetzt schon zu spät. Werde ich mir morgen mal genauer ansehen. Wahrscheinlich habe ich dann noch mal n'paar Fragen ;-)

      Oliver ;-)


    Ihre Antwort:

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

    Neuer Eintrag


 Alle Einträge zum Thema: Zur Liste 
    Beitrag von HenHen (1 Beitrag) am Freitag, 1.Juni.2001, 08:44.
    Doppelte Einträge!?

      Hi.
      Ich habe eine Datenbank mit nur einem Eingabefeld, wie kann ich verhindern, das man den gleichen Begriffe mehrfach in die Datanbank eintragen kann?

      HenHen

     Antworten

    Beitrag von Christian Wapenhans (13 Beiträge) am Freitag, 1.Juni.2001, 11:59. WWW: www.lag-tanz.de
    Re: Doppelte Einträge!?

      Ich kann es zur Zeit hier nicht ausprobieren, würde aber den Weg gehen, daß vor der Eintragung die Abfrage nach dem Begriff erfolgt und wenn kein Eintrag vorhanden, dann kann erst die Eintragung erfolgen.

      Gruß,
        Christian
      

     Antworten

    Beitrag von Oliver (172 Beiträge) am Freitag, 1.Juni.2001, 12:45.
    Re: Doppelte Einträge!? - mich interessiert das auch!!

      Dieses Problem hat Stefan Skalla bei seiner Community gelöst http://baseportal.de/cgi-bin/baseportal.pl?htx=/baseportal/forum&wcheck=1&Pos=2229 . Ich weiß nur nicht, wie er das gemacht hat. Und bisher hat er es mir nicht verraten :-(

      Ich suche dabei die Lösung zu zwei Problemen, die aber eigentlich ähnlich sein dürften.

      1. Will ich bei meiner Community vor der Registrierung eine Nicknamen-Abfrage starten. Wenn der Nickname bereits vergeben ist, soll eine entsprechende Meldung ausgegeben werden. Sollte er noch frei sein, soll dieser in ein Eingabeformular übernommen werden. Stefan hat es glöst, aber - wie gesagt - noch nicht verraten.

      2. Wie kann ich aus einer Userliste einen User durch anklicken auswählen und in ein Formular übernehmen?

      Die Probleme sind eigentlich ähnlich. Vielleicht gibt es ja eine Musterlösung.

      Oliver ;-)

     Antworten

    Beitrag von Stefan Skalla (86 Beiträge) am Freitag, 1.Juni.2001, 13:21. WWW: www.WhatsOnMyMind.net
    Re: Doppelte Einträge!? - mich interessiert das auch!!

      Ja, ja, ich mach ja schon... Bin doch nur ein Freizeit-BPler. Jetzt hab ich aber gerade mal Mittagspause.
      Also die doppelten Einträge: Das läuft alles über Perl-Abfragen. Zunächst macht macht der User in einem Formular einen Eintrag, also z.B. den gewünschten Nicknamen für eine Userdatenbank. Das Template prüft dann erst, ob der Nickname schon vorhanden ist:
      get "nickname==$wunschname", "user";
      if ($_amount>0) ##also der Nickname existiert schon
      {
      out "Sorry. Geht nicht.";
      ##Hier kann man jetzt z.B gleich wieder das Formular ausgeben.
      }
      else
      {
      put ["nickname",$wunschname], "users";
      ##...und was man noch alles anstellen will.
      }
      

      Das war's eigentlich schon.
      Gruß,
      Stefan

     Antworten

    Beitrag von Stefan Skalla (86 Beiträge) am Freitag, 1.Juni.2001, 13:30.
    Re: Doppelte Einträge!? - mich interessiert das auch!! - Nachtrag

      Uups, der letzte Eintrag ist voller Schreibfehler. Sorry. Und dann steht da einmal "user" und einmal "users". Der Name muss natürlich bei beiden der gleiche sein. Ja, und die Übernahme in ein weiteres Formular (hier der "else"-Zweig) ist dann auch problemlos möglich. Er steht ja weiterhin in $wunschname zur Verfügung, kann damit beliebig of ausgegeben werden oder in andere Formularfelder voreingetragen werden:
      out <<EOF;
      <form ....>
      Hallo, $wunschname,
      <input type=hidden name="wunschname=" value="$wunschname">
      
      ...
      <form>
      und was man noch alles machen möchte.

     Antworten

    Beitrag von Oliver (172 Beiträge) am Freitag, 1.Juni.2001, 20:35.
    Re: Doppelte Einträge!? - mich interessiert das auch!! - Nachtrag

      Sorry, ich krieg's einfach nicht hin :-(

      Wo hast du denn dein Suchformular stehen und wo ist das weitere Erfassungsformular?

      Ich will dabei noch keinen Eintrag in die Datenbank vornehmen. Kann ich mal dein Template mit Suchfunktion und Weitergabe sehen?

      Oliver ;-)

     Antworten

    Beitrag von Stefan Skalla (86 Beiträge) am Samstag, 2.Juni.2001, 12:50. WWW: www.WhatsOnMyMind.net
    Re: Doppelte Einträge!? - mich interessiert das auch!! - Nachtrag

      Hi Oliver,
      es bringt nichts, wenn ich alle Templates ins Forum reinstelle. Ich habe ca. 25 verschiedene Dateien mit etlichen Subroutinen angelegt, die alle irgendwie miteinander zusammenwirken. Du kannst Dir ja mal eine Testdatenbank mit den Feldern "nickname", "passwort", "email" anlegen. Dann kannst Du das folgende Template ausprobieren und an Deine Aufgaben anpassen:
      --------------------------------------

      <html>
      <body bgcolor="#FFFFFF">
      <perl>
      sub AnzeigeFormular1
      {
       out <<EOF;
       <form action="http://baseportal.de/cgi-bin/baseportal.pl?htx=/DeinPfad" method=post enctype="multipart/form-data">
       <input type=hidden name="htx=" value="/DeinPfad">
       <input type=hidden name="aktion=" value="NamenChecken">
       Gib Deinen gewünschten Namen ein:
       <br><input type=text name="nickname=" size=20>
       <br><input type=submit value="Prüfen">
       </form>
      EOF
      }
      sub NamenChecken
      {
       $fehlermeldung="";
       get "nickname==$_[0]","UserDB";
       $fehlermeldung="Der Nickname ist bereits vergeben." if ($_amount>0);
       return $fehlermeldung;
      }
      sub AnzeigeFormular2
      {
       out <<EOF;
       <form action="http://baseportal.de/cgi-bin/baseportal.pl?htx=/DeinPfad" method=post enctype="multipart/form-data">
       <input type=hidden name="htx=" value="/DeinPfad">
       <input type=hidden name="nickname=" value="$_[0]">
       <input type=hidden name="aktion=" value="Registrieren">
       Hallo, $_[0]. Der Nickname ist noch frei.
       <br>Wähle dein Passwort:
       <br><input type=password name="passwort=";
       <br>Passwort bestätigen:
       <br><input type=password name="passwort2=";
       <br>Deine E-Mail-Adresse:
       <br><input type=password name="email=";
       <br><input type=submit value="Registrieren">
       </form>
      EOF
      }
      sub WeitereDatenChecken
      {
       $fehlermeldung="";
       $fehlermeldung="Passwort fehlt.<br>" if ($_[0] eq "");
       $fehlermeldung="Passwort bestätigen!<br>" if ($_[1] eq "");
       $fehlermeldung="Passwortbestätigung fehlgeschlagen.<br>" if (($_[0] ne "") && ($_[1] ne "") && ($_[0] ne $_[1]));
       $fehlermeldung="E-Mail fehlt.<br>" if ($_[2] eq "");
       return $fehlermeldung;
      }
      sub UserSpeichern
      {
       put ["nickname", $_[0], "passwort", $_[1], "email", $_[2]],"UserDB";
      }
      ######### Hauptprogramm
      if ($_get{aktion} eq "NamenChecken")
      {
       if (&NamenChecken($_get{nickname}) eq "")
       {
        #wenn das Ergebnis der Pruefroutine leer ist, also kein Fehler, dann Formular 2 anzeigen
        &AnzeigeFormular2($_get{nickname});
       }
       else
       {
        #wenn Nickname schon vergeben, Fehlermeldung anzeigen und Formular 1 nochmals ausgeben
        out $fehlermeldung;
        &AnzeigeFormular1;
       }
      }
      elsif ($_get{aktion} eq "Registrieren")
      {
       if (&WeitereDatenChecken($_get{passwort},$_get{passwort2},$_get{email}) eq "")
       {
        #wenn kein Fehler aufgetreten ist, User speichern
        &UserSpeichern($_get{nickname},$_get{passwort},$_get{email});
       }
       else
       {
        #sonst Fehlermeldung anzeigen und Formular 2 nochmals ausgeben
        out $fehlermeldung;
        &AnzeigeFormular2($_get{nickname});
       }
      }
      else
      {
       &AnzeigeFormular1;
      }
      </perl>
      </body>
      </html>
      

      --------------------------------------
      Ich hoffe, ich hab keine Syntaxfehler gemacht.
      Gruß,
      Stefan

     Antworten

    Beitrag von Oliver (172 Beiträge) am Sonntag, 3.Juni.2001, 00:05.
    Re: Doppelte Einträge!? - mich interessiert das auch!! - Nachtrag

      Super, danke. Es klappt... :-))

      Ich habe einen kleinen Fehler oder bug zufällig entdeckt:

      Wenn der User nach Erfassung von Passwort und Email die "Zurück"-Schaltfläche des Browsers betätigt, kann er wieder Passwort und Email erfassen. Dadurch ist er aber doppelt in der Datenbank eingetragen!

      Ansonsten klappt es super. Jetzt muss ich nur noch sehen, wie ich es auf meine Anmeldemaske anpassen kann.
      Danke
      Oliver ;-)

     Antworten

    Beitrag von Oliver (172 Beiträge) am Sonntag, 3.Juni.2001, 14:11.
    Re: Doppelte Einträge!? - mich interessiert das auch!! - Nachtrag

      Beim Anpassen auf meine Anmeldemaske sind mir noch ein paar Fragen aufgekommen.

      Bei der Ausgabe der Fehlermeldungen beziehst du dich auf die Variablen $_[0], $_[1] usw. Wie erfolgt denn da die Verknüpfung zu dem Eingabefeldern?

      Den Nicknamen ziehst du auch aus der Variablen $_[0]. Bei mir wird der Nickname nach einer Fehlermeldung rausgeschmissen (wobei ich allerdings den ausgegebenen Fehler nicht lokalisieren kann). Hängt wahrscheinlich mit meiner ersten Frage zusammen.

      Kannst du mir vielleicht noch sagen, wie ich nach einer erfolgreichen Formularprüfung auf ein anderes Template springen kann. Normaler Weise wechsel ich über "form action". Geht aber hier nicht, da ich sonst die Formularprüfung umgehe.

      Fragen über Fragen...

      Oliver ;-)

     Antworten

    Beitrag von Stefan Skalla (86 Beiträge) am Sonntag, 3.Juni.2001, 20:50. WWW: www.WhatsOnMyMind.net
    Re: Doppelte Einträge!? - mich interessiert das auch!! - Nachtrag

      Hi Oliver,

      zum 1. Problem: Stimmt, an die Sache mit dem Zurück-Button hatte ich nicht gedacht. Das lässt sich lösen, indem man im Hauptprogramm die Bedingung if (&WeitereDatenChecken($_get{passwort},$_get{passwort2},$_get{email}) eq "") ergänzt und auch hier nochmal den gleichen Test macht wie nach dem Ausfüllen des ersten Formulars. Die if-Abfrage lautet dann

      if ((&NamenChecken($_get{nickname} eq "") && (&WeitereDatenChecken($_get{passwort},$_get{passwort2},$_get{email}) eq ""))
      

      Zu den Variablen $_[0], $_[1] etc. und deren Verknüpfung zu den Eingabefeldern: Das ist eine spezielle Perl-Notation. Wenn man in Perl eine Subroutine aufruft und dieser Subroutine einen oder mehrere Parameter übergibt, können diese Parameter in der Subroutine über diese Variablen abgefragt werden. Wenn man z.B. eine Subroutine mit dem Befehl &unterprogramm($x,$y,$z) aufruft, steht in der Subroutine der Wert von $x in der Variablen $_[0], der Wert von $y in $_[1], der Wert von $z in $_[2]. Wenn noch mehr Parameter übergeben werden, wird entsprechend weitergezählt. Entscheidend für die Zuordnung ist die Reihenfolge der Parameter, wie sie in dem Aufruf des Unterprogramms aufgelistet sind.

      Gruß,
      Stefan

     Antworten

    Beitrag von Oliver (172 Beiträge) am Sonntag, 3.Juni.2001, 23:58.
    Re: Doppelte Einträge!? - mich interessiert das auch!! - Nachtrag

      Hallo Stefan,

      das geht jetzt in die Tiefen von Perl. Ist mir jetzt schon zu spät. Werde ich mir morgen mal genauer ansehen. Wahrscheinlich habe ich dann noch mal n'paar Fragen ;-)

      Oliver ;-)

     Antworten


     
 Liste der Einträge von 61500 bis 61650: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.08s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!