SQL Datensatz hochzählen?

Belee

Lt. Commander
Registriert
Dez. 2006
Beiträge
1.518
Hallo Leute

Ich habe eine Tabelle mit 7 Spalten...

artist | song | version | year | plays | value | id

Ich rufe jede Minute einen externen Streamserver auf und schreibe die Songs in die Tabelle. Ist der Song schon vorhanden wird derzeit nichts weiter gemacht, jetzt aber habe ich folgendes vor ...


Wie bekomme ich es hin das die Spalte plays immer hochgezählt wird wenn ein Song kommt welcher schon in der Tabelle vorhanden ist? aber !!!! zwischen den Hochzälungen muss immer min. 10 Minuten vergehen wenn es sich um den selben Song handelt....


Deutlicher...

Es kommt Song A diesen kennt die DB und addiert +1 zu plays für diesen Song...eine Minute später kommt erneut Song A, jetzt soll aber nicht hochgezählt werden sondern es müssen immer min. 10 Minuten vergehen.

Das hier: AUTO_INCREMENT kenn ich, doch das zählt dann einen Song nonstop hoch also jede Minute da jede Minute ein Query stattfindet und das wäre doof, denn ein 60 Minuten Mix hätte dann angeblich in den 60 Minuten 60 plays :==|
 
Du musst speichern, wann die letzte Inkrement stattgefunden hat, z.B. in einer zusätzlichen Spalte.
Dann kannst du die Abfrage so gestalten, dass nur ein Inkrement stattfindet, wenn der letzte länger als 10 Minuten her ist.

Mal angenommen, dass du MySQL verwendest könnte das so aussehen:
Code:
ALTER TABLE songs ADD lastIncrement INT(11) UNSIGNED NOT NULL;
UPDATE songs SET plays=plays+1,lastIncrement=UNIX_TIMESTAMP() WHERE id=XYZ AND (UNIX_TIMESTAMP()-lastIncrement) > 10*60;
 
Ja danke, habe ich verstanden soweit, nur wie komme ich an die richtige ID? muss bestimmt erst Daten die kommen mit denen in der DB vergleichen und dann die richtige ID rausziehen? oder? irgendwie ist das schon zu spät, kann das sein? :)

Boah doooof: mysql_fetch_assoc

Funktioniert leider nicht, in der Spalte steht dann nur eine 0 doch sollte da doch eine Zeit stehen oder irre ich mich?
Ergänzung ()

Also das trägt mir jetzt den TimeStamp richtig ein, Problem, keine Reaktion auf die Zeit, gilt denn überhaupt die UnixTime aufm Linux Server?
PHP:
mysql_query("UPDATE tabelle SET plays=plays+1,timestamp=UNIX_TIMESTAMP() WHERE id='".$satz["id"]."' AND (UNIX_TIMESTAMP()-timestamp)") > 10*60;

Fehler gefunden, hat sich erlediegt...danke.
 
Zuletzt bearbeitet:
Coole Arbeitszeiten ;)
 
Zurück
Oben