Zahl in Datenbank +1

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

  • Zahl in Datenbank +1

    Hallo,

    ich habe eine Bildergalerie, bei der ich zähle, wieviele Klicks ein Bild bekommen hat. Es können immer wieder Bilder hinzukommen, also muß das ganze mehr oder weniger dynamisch funktionieren.

    Der relevante Teil der Table sieht so aus:

    id | bildnummer | event | klicks
    0 | 324 | 12122007 | 5
    ...


    Im Groben mache ich es derzeit so:

    -Ein Bild wird angeklickt
    -Es wird in der Datenbank nachgeschaut, ob das bild schon vorhanden ist, in dem ich Bildnummer und Event mit WHERE abfrage
    -Wenn Bild schon vorhanden, dann
    - Klicks + 1
    - UPDATE

    Wenn nicht, dann ein INSERT mit klicks=1


    Meine Frage jetzt, kann man das auch per SQL eleganter lösen?
    So daß er einen Datensatz, bei dem bildnummer und event übereinstimmen klicks+1 macht und ansonsten den Datensatz neu hinzufügt?

    Oder ist es besser, ich lasse es so über PHP?
    Letztere Möglichkeit wäre eben nur einmal die Datenbank aufgemacht, beim ersteren muß ich ja erst die klicks in Erfahrung bringen, bevor ich sie +1 machen kann.

    Wenn Ihr aber sagt, daß meine vorhandene Lösung die Übliche ist, dann laß ich es so!

    Danke schonmal,

    Coni
    Gruß, Coni
    ~~ codito ergo sum - ich code, also bin ich! ~~

  • #2
    Dann nehme ich mal an, dass Bildnummer ein eindeutiger Schlüssel ist? Falls ja dann etwas in der Richtung probieren
    Code:
    INSERT INTO tabelle ... ON DUPLICATE KEY UPDATE tabelle SET klicks=klicks+1
    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Nein, Bildnummer ist kein eindeutiger Schlüssel.
      Die Bildnummern können auch doppelt vorkommen und sind nur in Verbindung mit event eindeutig.

      ID ist primary key und auto increment (nur noch zur Info)

      bildnummer ist INT und event ist VARCHAR.

      Mit Deinem Tipp experimentiere ich aber mal, zusammen mit Event müßte das auch gehen, oder?
      Gruß, Coni
      ~~ codito ergo sum - ich code, also bin ich! ~~

      Kommentar


      • #4
        Hm, nee, geht anscheinend nur, wenn eine Spalte unique ist...

        Müßte eher was sein, das so ähnlich funktioniert:

        ....INSERT ... ON DUPLICATE (bildnummer, event)
        Gruß, Coni
        ~~ codito ergo sum - ich code, also bin ich! ~~

        Kommentar


        • #5
          Mach einfach einen Uniqueindex über die beiden Spalten.
          ich glaube

          Kommentar


          • #6
            Über beide??
            Wie gesagt, Bildnummer kann mehrmals vorkommen,
            event auch - nur die Kombination aus beidem gibt es immer nur einmal!

            Also

            Id bnr event klicks
            1 | 21 | 12032007 | 5
            2 | 22 | 12032007 | 3
            3 | 22 | 21052007 | 7

            usw.
            Gruß, Coni
            ~~ codito ergo sum - ich code, also bin ich! ~~

            Kommentar


            • #7
              Ja, einen über beide

              PHP-Code:
              ALTER TABLE tabelle ADD UNIQUE (
              bildnummer ,
              event
              ich glaube

              Kommentar


              • #8
                Uii, wow... da hat mich wohl der Sinn des Begriffs "Unique" verwirrt... danke!
                Gruß, Coni
                ~~ codito ergo sum - ich code, also bin ich! ~~

                Kommentar

                Lädt...
                X