Seite 1 von 1

php: bestimmtes bild aus pool auswaehlen?

Verfasst: 29.10.2009, 07:51
von nerd
die ueberschrift ist nicht optimal, weiss aber nicht wie ich es anders beschreiben koennte. also folgendes problem:

ich habe ein cms mit vielen (100+) seiten, und einen ordner mit einer handvoll bildern (3-5 oder so). jetzt soll auf jeder seite irgend ein bild aus dem bilder-ordner angezeigt werden. welches ist dabei egal, aber es muss "statisch" fuer diese seite sein - soll heissen wenn ich seite_id 50 aufrufe soll auf dieser seite immer das selbe bild erscheinen.
gibts da irgend eine einfache funktion die aus meiner seite_id eine zahl auswuerfelt, nachdem man die obergrenze bestimmt (in diesem fall anzahl dateien im bilder-ordner)?
ich will mir dafuer nicht extra ne zuornungstabelle in die datenbank setzen, zumal sich anzahl seiten und anzahl bilder jederzeit aendern koennten. es ist auch nicht wichtig ob diese bilder ueberall gleichmaessig verteilt sind oder nicht.

Verfasst:
von
SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Verfasst: 29.10.2009, 09:01
von Synonym
Interessante Frage, so was in der Art hatte ich auch mal vor und es dann doch verworfen.

Prinzipiell könntest Du anhand der ID schon eine Zufallszahl berechnen lassen die zufällig ein Bild abruft und dann immer das gleiche. Formel ist gleich, ID ist gleich, also kommt immer das gleiche Bild.

Kommt nun aber ein weiteres Bild hinzu, dann wird es schon kompliziert. Nun müsste das Script ja wissen für welche Seite es Bilder 1-5 wählen darf und für welche dann Bild 1-6. Sonst könnte sich ja doch ein Bild nachträglich ändern. Und genau da hörte ich mit meinen Versuch dann auch auf.
ich will mir dafuer nicht extra ne zuornungstabelle in die datenbank setzen, zumal sich anzahl seiten und anzahl bilder jederzeit aendern koennten.
Aber genau das wäre die Lösung. Anzahl der Bilder kann sich dabei auch ändern. Es dürfen mehr werden, aber nicht weniger, da er sonst evtl. auf ein Bild zugreift das nicht mehr da ist (oder die Zuordnung entsprechend anpassen). Seiten ist ganz egal. Mehr oder weniger funktioniert.

Nachtrag:
Das Problem ist ja an sich der dynamische Wertebereich, der aber die "alte" Seiten nicht beeinflussen darf. Theoretisch, nur mal so gesponnen, könntest Du das mit Dateinamen der Bilder abdecken.
Du bist jetzt bei max seite_ID 100. Alle Seiten dürfen aus den Bilder 1-5 wählen. Dann kommen seite_ID 100 bis 150, auch die dürfen aus Bilder 1-5 wählen. Dann kommt ein neues Bild hinzu. Das darf dann aber nur von Seiten ID > 150 gewählt werden zzgl. den 1-5.
Also könnte es theoretisch gehen, dass das verantwortliche Script einfach nur Bilder abfragt die einen Dateinamen (Datei-ID) haben die kleiner/gleich ist als die eigene Seiten_ID. Bist Du also bei Seite_ID 150 und legst ein neues Bild bild_151.jpg an, dann würde das nicht verwendet werden, erst beim nächsten Artikel und den folgenden.

Also quasi aus dem Verzeichnis nicht alle Bilder holen und davon eines per Zufall, sondern aus allen einen gewissen Bereich und aus dem Bereich eines per Zufall. Aber wie gesagt, nur so auf die Schnelle zusammengesponnen ;-)

Verfasst: 29.10.2009, 09:40
von Lord Lommel
https://de.php.net/manual/de/function.rand.php

Das dürfte das sein, was du suchst.

Verfasst: 29.10.2009, 09:55
von nachfrag
Lord Lommel hat geschrieben:https://de.php.net/manual/de/function.rand.php

Das dürfte das sein, was du suchst.
Damit immer das gleiche kommt, müsste dann aber irgendwo gespeichert werden, welches Bild welcher Seite zugeordnet ist.
Ich würde entweder die Tabelle des CMS, in der Seiten geführt werden, um eine Spalte für das Bild erweitern, oder eine Tabelle in der Datenbank einrichten mit einer Spalte für die URL/ID der Seite und einer für das Bild. Dann kannst du beim Aufruf einer Seite abfragen, ob es schon ein Bild gibt für die Seite, wenn nicht, aus dem Pool eines rausfischen mit rand() und das dann speichern in der Datenbank ...

Verfasst: 29.10.2009, 10:04
von Lord Lommel
Achso. Hat das Ding keinen Cache ? Stell ihn auf 24h ein. Dann kommt jeden Tag was anderes. Oder nimm den URL-String und mach nen Hash draus, den du in eine Zahl überführst, die du dann mod Bildanzahl rechnest. Raus kommt die Bildnummer.

Verfasst: 29.10.2009, 10:30
von SebaF
sofern keine neuen Bilder dazu kommen, könntest Du mit modulo arbeiten.


site_id % 5 = x

Verfasst: 29.10.2009, 10:54
von Synonym
Er sagte aber, dass Bilder dazu kommen können und sich die bisherigen auf den Seiten nicht ändern dürfen.

Verfasst: 29.10.2009, 11:11
von Lord Lommel
Dann entweder speichern oder mit der Seiten-ID arbeiten. Da kann man ja auch ein Switch einbauen.