Doppelte Einträge in DB verhindern

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Doppelte Einträge in DB verhindern

    Hi Leute!

    Ich hab in meiner DB diese Spalten:
    ----------------------------------------------
    bid (int auto_increment PrimaryKey)
    user (varchar UNIQUE)
    winner (varchar)
    gewettet (varchar)
    matchid (int)


    Bin grad an nem Wettsystem bei welchem der User angeben kann welches Team gewinnen wird und wieviel Geld er auf dieses Team setzt.
    Ich möchte jetzt aber ausschliessen, dass ein Benutzer 2 mal wetten geht, damit er garantiert was gewinnt / resp. er kein Geld verliert!

    Darum hab ich den User auf Unique gsetzt. Wenn ich jedoch eben das 2. mal wetten gehe, kommt diese Meldung:

    Duplicate entry 'luci' for key 2
    Wie kann ich das unterbinden? Dass der User auf ne Seite weitergeleitet wird wenn der Fall eines zweit-Eintrages eintritt ODER dass diese Wette für diesen User einfach gesperrt ist?

    Ich denke dass mein Code hier nicht relevant ist, da ich prinzipiell kein Problem mit dem Code hab. Mehr oder weniger :S

    Wäre nett wenn Ihr mir helfen könntet. Vielen Dank und mit freundlichen Grüssen

    Luca Peter

  • #2
    frag doch einfach erst ab, ob der user schon exisitiert. wo ist das problem?

    gruß
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Original geschrieben von Kropff
      frag doch einfach erst ab, ob der user schon exisitiert. wo ist das problem?
      Das ist unfug. eine unnütze abfrage mehr.

      Wenn ich jedoch eben das 2. mal wetten gehe, kommt diese Meldung:
      quoteuplicate entry 'luci' for key 2
      Wie kann ich das unterbinden?
      Wie wäre es, wenn du die fehlermeldung nicht explizit ausgibst?
      Dass der User auf ne Seite weitergeleitet wird wenn der Fall eines zweit-Eintrages eintritt ODER dass diese Wette für diesen User einfach gesperrt ist?
      Na du kennst if(), damit kannst du mysql_errno abfragen.

      Kommentar


      • #4
        Also, ich habs nun so:
        PHP-Code:
        if(!mysql_query("INSERT INTO bets VALUES('','".$user."',
         '"
        .$winner."', '".$gewettet."', '".$matchid."')"$verbindung)) {
        echo 
        mysql_errno($verbindung) . ": " mysql_error($verbindung). "\n";
        }
        else {
        echo    
        "<span class='help'><b>uuuuuh i hope u will lose all yoor money! xD</span></b><br><br>";

        Aber funktionieren tut es net :S

        mfg

        Luca Peter

        Kommentar


        • #5
          1. ist das Keine Fehler/Problembeschreibung
          2. hast du nicht annähernd das umgesetzt, was ich dir gesagt habe. also was erwartest du?

          Kommentar


          • #6
            1. Ich hab keine Ahnung was ich mit mysql_errno anstellen soll. Ich seh da net durch.
            2. Hab ich mit dem was ich "verstanden" habe probiert was zu machen - was net funktioniert hat
            3. Hab ich den "Fehler" - mehr das Problem - beschrieben.

            Könntest du mir net einfach sagen was denn bitte falsch dra ist was ich grad gemacht hab?

            mfg Luca Peter

            Kommentar


            • #7
              Aber funktionieren tut es net
              Ah so, das ist die Problembeschreibung?

              Könntest du mir net einfach sagen was denn bitte falsch dra ist was ich grad gemacht hab?
              Klar, ich könnte dir auch schnell dein Programm zuende programmieren...

              Kommentar


              • #8
                So jetzt liest du das hier nocheinmal:
                Wie kann ich das unterbinden? Dass der User auf ne Seite weitergeleitet wird wenn der Fall eines zweit-Eintrages eintritt ODER dass diese Wette für diesen User einfach gesperrt ist?
                Dann noch das hier dazudenken: Es kommt die Meldung:
                Duplicate entry 'luci' for key 2
                Ich möchte, dass wenn bei der Spalte USER ein Duplikat vorkommt, dass nicht diese Meldung angezeigt wird, sondern eine andere, oder dass einfach auf ne andere Seite weitergeleitet wird.

                Und NEIN, ich möchte nicht dass du mir ein Programm fertigschreibst, sondern dass du mir sagst was ich mit mysql_errno falsch gemacht hab!

                Es besteht keine Pflicht dass du mir helfen musst, schon nur wenn ich sehe dass du meine Posts nicht genau liest.

                Ich habe eine "Fehlerbeschreibung" gemacht - nun, kannst du mir helfen oder nicht?

                Vielen Dank

                mfg

                Luca

                Kommentar


                • #9
                  Original geschrieben von wkd-
                  So jetzt liest du das hier nocheinmal:
                  Ganz ruhig, Burschi.
                  Wir haben dich und deine Frage schon verstanden - aber umgekehrt du die Antworten noch nicht.
                  Wenn also jemand aufmerksamer Lesen und mehr Mitdenken muss, dann bist du das.
                  Es gibt also keinen Grund, von deiner Seite aus in so einem Tonfall zu kommen, OK?
                  Dann noch das hier dazudenken: Es kommt die Meldung:
                  Duplicate entry 'luci' for key 2
                  Schön, das ist die Meldung, die mysql_error() ausspuckt.

                  Jetzt lässt du an der gleichen Stelle auch noch mal den Wert von mysql_errno() ausgeben, und testest dann noch mal das Einfügen eines solchen doppelten Eintrages.
                  Zuletzt geändert von wahsaga; 24.04.2006, 13:11.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    ich hab alles gelesen und bin darauf eingegangen. siehe zitate: wenn du das nicht umsetzen kannst, ist das die eine sache. pampig zu werden, die andere. aus diesem grunde spreche ich hier eine verwarnung aus.

                    bin leider von oben dazu angehalten nicht auf solche postings zu antworten und werde daher nur noch darauf achten, dass hier den ton gewahrt wird.

                    Kommentar


                    • #11
                      Und NEIN, ich möchte nicht dass du mir ein Programm fertigschreibst, sondern dass du mir sagst was ich mit mysql_errno falsch gemacht hab!

                      Es besteht keine Pflicht dass du mir helfen musst, schon nur wenn ich sehe dass du meine Posts nicht genau liest.
                      Wenn Ihr mir schon helfen wollt, dann könnt ihr mir eben - wie oben in meinem quote erwähnt - sagen was ich mit dem mysql_errno falsch gemacht hab.

                      Was sollen diese Tipps bringen, wenn es nicht verstanden wird? Dann probiert man es ihm zu erklären. Nicht den Code zu schreiben, nur zuerklären.

                      Ich wollte nicht so aggressiv schreiben, tut mir Leid, aber wisst ihr jetzt, was ich meine?

                      mfg

                      Luca Peter

                      EDIT:

                      PHP-Code:
                      if(!empty($user) AND !empty($winner) AND 
                      !empty(
                      $gewettet) AND !empty($matchid)) {
                      include(
                      "includes/var.inc.php");
                      $sql "INSERT INTO bets VALUES('','".$user."', '".$winner."', '".$gewettet."', '".$matchid."')";
                      $result mysql_query($sql) OR die(mysql_error());
                      echo    
                      "<span class='help'><b>uuuuuh i hope u will lose all yoor money! xD</span></b><br><br>";

                      Das wäre noch ma der Code.

                      Kommentar


                      • #12
                        dann guck dir mal bitte die ausgabe/rückgabe von mysql_errno() an, wenn ein doppelter eintrag vorliegt. du erhältst eine fehlernummern. die kannst du auch abfragen.

                        BTW: das Thema wird nicht zum ersten mal behandelt.

                        Kommentar


                        • #13
                          Wenn ich statt mysql_ERROR - mysql_ERRNO nehme in meinem Code, gibt es mir gar nix zurück.

                          Bei dieser Fehlermeldung seitens Mysql wäre es die Errornummer 1062

                          Und abfragen kann ich sie wie? :S

                          habs so probiert:
                          PHP-Code:
                          if(mysql_errno(1062)) {
                          echo 
                          "bla";
                          }
                          else{
                          echo 
                          "gut";

                          ???

                          Gruss

                          Kommentar


                          • #14
                            na komm, was ist daran
                            dann guck dir mal bitte die ausgabe/rückgabe von mysql_errno() an,
                            so schwer zu verstehen???

                            so sollst nicht immer gleich los"programmieren" sonder erstmal verstehen.

                            Kommentar


                            • #15
                              Ich hab keine Ahnung wo ich das mysql_errno hinsetzen soll.

                              beim $result zuhinterst gibts nix.

                              allgemein ein echo mysql_errno(); gibt immernoch das gleiche: Duplicate entry 'luci' in key 2..

                              Ich hab keine Ahnung wie ich das umgehen kann ;(

                              Kommentar

                              Lädt...
                              X