doppelte einträge bei browseraktualisierung

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

  • doppelte einträge bei browseraktualisierung

    guten tag!
    ich habe bereits über die suche ein paar tipps bekommen wie ich folgendes problem lösen kann:

    ich habe ein instantmessenger geschrieben .. wenn nun jemand eine message schickt und dann den browser aktualisiert bzw. f5 drückt, werden die datensätze doppelt in die datenbank geschrieben.

    ich habe gelesen das es per uniqid() funktionieren soll .. aber ich weiss nicht wie ich das anwenden kann !? auch bei php.net habe ich leider nicht die informationen bekommen, die mir helfen könnten.

    klar - vor dem speichern dem speichern erstell ich also diese uniqid .. aber was mache ich dann vor dem speichern ? also ne abfrage die erkennen muss ob diese uniqid schon vorhanden ist !?

    versteh das nicht so ganz

    danke euch
    patrick

  • #2
    1. mach eine zwischenseite wo die daten eingetragen werden ( da dann nch 0 sec eine automatische weiterleitung zur ausgabe)

    2.checke vor dem insert ob die daten schon drin sind (-> mysql_num_rows)
    thx Mukraker

    Kommentar


    • #3
      $var = md5(uniqid(rand()));

      in der tab hängst du eine spalte an, zb "uid", die definierst du als unique.
      letzteres bedeutet, dass der eingetragene wert NUR 1mal in der tabelle vorkommen darf ... f5 führt dann nicht mehr zu einem (doppel)eintrag.
      Kissolino.com

      Kommentar


      • #4
        bei F5 würde dann doch auch ein neuer random wert erzeugt oder nicht ?
        thx Mukraker

        Kommentar


        • #5
          nicht, wenn du ihn schon beim aufruf des formulars erzeugst und in ein hidden field packst
          Kissolino.com

          Kommentar


          • #6
            danke erstmal .. und ich muss dann vor dem eintragen auch nicht fragen ob die uniqid schon vorhanden ist ? sprich wenn die da ist, wird der INSERT nicht durchgeführt ?

            pat°

            Kommentar


            • #7
              jepp
              Kissolino.com

              Kommentar


              • #8
                goil, das teste ich

                ach .. ich habe sowieso ein feld was da heisst "id" - ist halt ein "auto_increment" .. kann ich dem feld auch noch die attribute "unique" geben ?

                Kommentar


                • #9
                  PHP-Code:
                  if ( mysql_num_row($sql) > 0)

                  //schon drin
                  }
                  else
                  {
                  //dein insert

                  funzt aber z.B. bei einem Poll nicht
                  thx Mukraker

                  Kommentar


                  • #10
                    wenn ich ein feld anlegen will mit unique bekomme ich immer diese meldung hier:

                    SQL-Befehl :

                    ALTER TABLE `megaprofil_guest` ADD UNIQUE (

                    `unique_id`
                    )

                    MySQL meldet:


                    Duplicate entry '0' for key 2



                    was mach ich dem falsch ?

                    Kommentar


                    • #11
                      ah ..-problem ist das ich in den bestehenden beiträgen keine unique_id habe .. da schreibt er immer "0" rein .. das natürlich dann blöd .. was tun ?
                      gibts ein sql-befehl der ich per phpmyadmin loslasse, der mir dann alle unique_id felder mit jeweils einer neuen füllt ?

                      Kommentar


                      • #12
                        ... "unique" nachträglich einzurichten ist gemein.

                        versuchs mal so:
                        - leg die spalte an (varschar 32)
                        - lass einmal eine schleife drüberlaufen mit einem update
                        PHP-Code:
                        while(anzehl_der_einträge_in_der_tab)
                        {
                          
                        $var md5(uniqid(rand()));
                          
                        mysql_query("update .... set spalte='".$var."' where id='aktuelle_id'");

                        - danach legst du erst "unique" auf
                        Kissolino.com

                        Kommentar


                        • #13
                          ei prima junge .. das geht

                          aber nun habe ich noch eine letzte frage .. wenn der user nun versehentlich doch auf f5 drückt .. kommt dann diese meldung :

                          PHP-Code:
                          Database error in DrummerforumInvalid SQLINSERT into megaprofil_guest (id,absender_userid,empfaenger_userid,datetime,text,gelesen,unique_idVALUES ('','2','2','08.09.2003 - 15:11:46','hjghjgkhkvhk','n','eca8f3bd42426b2b37838fe9a1694f97'
                          mysql errorDuplicate entry 'eca8f3bd42426b2b37838fe9a1694f97' for key 2 
                          mysql error number
                          1062 
                          Date
                          08.09.2003 15:11 
                          Script
                          : /forum/megaprofile.php?userid=2&sid=2e9b26f0c540f1e91291e55893d7c614&show=guest 
                          Referer
                          : [url]http://www.drummerforum.de/forum/megaprofile.php?show=guest&userid=2&sid=2e9b26f0c540f1e91291e55893d7c614[/url] 
                          wie kann ich das umgehen ? muss ich da jetzt immer vorher einen select machen ob die unique_id schon angelegt ist oder geht das auch anders ?

                          danke vielmals!

                          pat°

                          Kommentar


                          • #14
                            du fängst die mysql fehlernummer 1062 ab und gibst nix aus.
                            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                            Kommentar


                            • #15
                              ui .. würde es dir was ausmachen mir kurz zu sagen wie das geht ?
                              das wäre unheimlich nett von dir

                              Kommentar

                              Lädt...
                              X