Katja: MySQL-Befehl, Bild der Woche

Hallo,

habe folgende Abfrage gefunden, mit der ich mir ein Bild des Tages aus meiner MySQL-Datenbank ausgeben kann:

SELECT *,UNIX_TIMESTAMP(geb) as geb_unix from fotos WHERE file != '' AND status = 1 ORDER BY RAND(TO_DAYS(NOW())) LIMIT 1

Kann mir jemand sagen wie ich das modifizieren muss, damit das Foto nicht täglich wechselt, sonder wöchentlicht?

Danke, dass wäre super nett von Euch,

EURE KATJA

  1. Hi,

    SELECT *,UNIX_TIMESTAMP(geb) as geb_unix from fotos WHERE file != '' AND status = 1 ORDER BY RAND(TO_DAYS(NOW())) LIMIT 1
    Kann mir jemand sagen wie ich das modifizieren muss, damit das Foto nicht täglich wechselt, sonder wöchentlicht?

    ähm, das wechselt nicht täglich, sondern pro Ausführung. "RAND" steht für "random", also "Zufall".

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi,

      ähm, das wechselt nicht täglich, sondern pro Ausführung. "RAND" steht für "random", also "Zufall".

      Ja und nein! Es wird abhingäg von TO_DAYS(NOW()) jeden Tag ein neues zufälliges Bild aus der Datenbank ausgegeben - jetzt soll das Ganze nur so sein, dass jede Woche zufällig eine anderes Bild aus der Datenbank ausgegeben wird!

      LG, Katja

      1. Hi,
        gib doch den bildern IDs, entsprechend der kalenderwoche in der sie nagezeigt werden sollen.

        MfG

    2. hi,

      ORDER BY RAND(TO_DAYS(NOW()))

      ähm, das wechselt nicht täglich, sondern pro Ausführung. "RAND" steht für "random", also "Zufall".

      und da dieser "zufall" mit einem nur einmal pro tag wechselnden "seed"-argument initialisiert wird, liefert er auch den ganzen tag lang das gleiche "zufällige" ergebnis.

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Hi,

    habe folgende Abfrage gefunden, mit der ich mir ein Bild des Tages aus meiner MySQL-Datenbank ausgeben kann:

    SELECT *,UNIX_TIMESTAMP(geb) as geb_unix from fotos WHERE file != '' AND status = 1 ORDER BY RAND(TO_DAYS(NOW())) LIMIT 1

    was bezweckst Du mit der Abfrage "*,UNIX_TIMESTAMP(geb)" ?
    In "*" sollte "geb" schon drin sein, d.h. das ist doppelt.

    Kann mir jemand sagen wie ich das modifizieren muss, damit das Foto nicht täglich wechselt, sonder wöchentlicht?

    Was macht denn "RAND(TO_DAYS(NOW()))"?
    Das ist ja _jedesmal_ zufällig,oder?
    Ich sehe darin keinen direkten Sinn.
    Vielleicht läßt Du das nur einmal die Woche per Cronjob ausliefern, was den Seitenaufbau sowieso beschleunigt oder Du merkst Dir in einem Feld, wann Du das letzte Mal die Abfrage gemacht hast (mit wechselndem Bild).

    Gruß
    Reiner

    1. hi,

      was bezweckst Du mit der Abfrage "*,UNIX_TIMESTAMP(geb)" ?
      In "*" sollte "geb" schon drin sein,

      ja eben, geb - aber nicht UNIX_TIMESTAMP(geb).

      d.h. das ist doppelt.

      nein, ist es nicht.
      aber wenn man nur die als unix timestamp formatierte version dieses spaltenwertes braucht, sollte man geb alleine natürlich nicht mit auswählen - Warum soll ich nicht SELECT * schreiben?

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
  3. Hallo

    Indem du als Seed-Wert (Initialisierungswert) der RAND-Funktion nicht den Wochentag nimmst, sondern die Kalenderwoche.

    SELECT *,UNIX_TIMESTAMP(geb) as geb_unix from fotos WHERE file != '' AND status = 1 ORDER BY RAND(WEEK(NOW(),1)) LIMIT 1

    Also statt TO_DAYS(NOW()) schreibst du WEEK(NOW(),1)

    wobei die 1 bewirkt, dass am Montag die neue Woche beginnt, und mit 0 ist der Sonntag der erste Tag der Woche.