Zufälliger inhalt aus datenbank für einen tag anzeigen

XeN

Mitglied
Hallo,

auf meiner seite wollte ich an der seite einen "tipp des tages" machen. Habe die Bilder links die ich anzeigen und verlinken möchte in einer mysql datenbank stehen. Wie stelle ich das am besten an Random scripts die mir dateiinhalte ausgeben find ich wie sand am Meer, aber nicht mir Datenbank und dann auch nicht das es halt 24 stunden angezeigt werden soll.

Hoffe ihr könnt mir helfen, danke schon einmal.


mfg XeN
 
hi,

also grundsätzlich kannst du Datensätze zufällig so ausgeben:
SELECT spalte FROM tabelle ORDER BY RAND() LIMIT 1

Du möchtest, diesen Datensatz aber nur 1 x pro Tag ändern und nicht jedesmal ändern lassen. Möglich wäre es, eine kleine Tabelle dafür anzulegen, wo das Datum und die aktuelle Datensatz ID steht aus der Bilddatenbank. Dann kannst du es immer vergleichen, hmm, vielleicht nicht die performaceschonendste Art.

Am beeten wäre es, würde Dein Webserver Cronjobs könne, so würde ein Script immer 1 x am Tag ausgeführt und in die Tagesbild Tabelle reingeschreiben werden, weil dadruch unnötige Abfragen entfallen.

ciao tydu
 
Also da ich Root rechte auf dem webserver habe sollte das mit den Cronjobs nicht das problem sein, aber wie verwende ich die

mfg XeN
 
@tydu:
Warum denn bitte Cronjobs?
Die einfachste Art, das Ganze zu verwirklichen hast du doch schon erwähnt: Bei Aufruf des Scripts (durch einen Besucher oder wen auch immer) wird in der Datenbank überprüft, ob der aktuelle Eintrag für das Zufallsbild von heute ist.
Falls ja, dann wird das Bild einfach ausgegeben und nichts weiter gemacht.
Wenn nicht, dann wird erstmal ein neues Zufallsbild für den aktuellen Tag generiert und mit dem Datum gespeichert.
 
Wie wärs wenn du die Nummer des Bildes, das den ganzen Tag über angezeigt werden soll in eine Textdatei speicherst.. Dann noch das Datum dazu. Wenn jetzt jemand deine Seite besucht überprüfst du ob das Datum in der Textdatei dem heutigen Tag entspricht. Wenn ja zeigst du das Bild an, wenn nein speicherst du ein neues Bild+Datum in der Datei.

Nur so als Denkanstoss
 
Ja das klingt logisch. Ich steh mir nur im moment total auf dem schlauch, kannst du mir vielleicht ein kleines Beispiel geben

Und ich habe da noch bei einem Anderen script ein Problem. In der DB werden die Votes mit angabe des Timestamp gespeichert. Nun möchte ich den ältesten vote für eine woche laufen lassen.

Habs im moment so

PHP:
$grenze = time() - 604800;
echo $grenze;
$result = sql_query("SELECT pollID FROM ".$prefix."_poll_desc WHERE timeStamp < ".$grenze." ORDER BY timeStamp ASC LIMIT 1", $dbi);

aber er zeigt mir jetzt zwar den ältesten an, aber nicht für eine woche.

ARGH hab im moment voll die Blockade, vielleicht sollte ich einfach mal ne pause machen.

mfg XeN
 
Warum Textdatei, wenn du doch schon eine Datenbank zur Verfügung hast?!

Beispiel:
Eine Tabelle mit den Bildern (bild_id, bild etc.) und eine für das aktuelle Tagesbild (bild, timestamp) (es gäbe auch eine Möglichkeit, das Ganze in einer Tabelle zu verwirklichen).

PHP:
$sql = mysql_query("SELECT * FROM zufallsbild");
$row = mysql_fetch_array($sql);
if (date('d.m.Y', $row['timestamp']) != date('d.m.Y')) {
    $sql = mysql_query("SELECT bild FROM bilder ORDER BY RAND() LIMIT 1");
    $row = mysql_fetch_array($sql);
    $sql = mysql_query("UPDATE zufallsbild SET bild = '".$row['bild']."', timestamp = '".time()."'");
}
// in $row['bild'] ist jetzt der Dateiname des Bildes gespeichert und kann anschließend ausgegeben werden.
 
Das hört sich schon mal gut an, werds gleich mal ausprobieren.

WIe könnte man das denn machen nur mit einer tabelle.

Ich liste mal die Felder in meiner tabelle auf .

Tabellen name = bars_diskos

id int(3)
firma text <-- Name der Location
ansprechpartner varchar(35) <-- Ansprechpartner
email varchar(35)
strasse varchar(35)
plz int(5)
ort varchar(35)
homepage varchar(255)
kategorie varchar(35)
unterkategorie varchar(35)
inhalt text <-- HTML code für die persönliche info seite
bild varchar(255) <-- link zu dem Bild
freigabe int(1)
tel varchar(35)


Also ich habe ein script wo der user sich halt seine Location raussuchen kann, und dann kommt er auf eine seite wo er infos zu der jeweiligen location findet.

Und jeden tag will ich halt eine zufällige location in form eines banners an der seite vorstellen indem ich ein Bild (das bild von der DB) da per img src verlinke.

das ist so das was ich vorhabe.


PS: der code nicht. Hab eine neue tabelle eingefügt mit dem namen nuke_bars_diskos_tipp mit den feldern id, bild und timestamp und habe den code folgendermaßen editiert.

PHP:
$sql = mysql_query("SELECT * FROM nuke_bars_diskos_tipp");
$row = mysql_fetch_array($sql);
if (date('d.m.Y', $row['timestamp']) != date('d.m.Y')) {
    $sql = sql_query("SELECT bild FROM nuke_bars_diskos ORDER BY RAND() LIMIT 1", $dbi);
    $row = mysql_fetch_array($sql);
    $sql = sql_query("UPDATE nuke_bars_diskos_tipp SET bild = '".$row['bild']."', timestamp = '".time()."'", $dbi);
}
// in $row['bild'] ist jetzt der Dateiname des Bildes gespeichert und kann anschließend ausgegeben werden.

$content = "<img src=".$row[bild].">";
 
Zuletzt bearbeitet:
Bekommst du eine Fehlermeldung oder wird nur kein INhalt angezeigt?
Wenn du mal irgendwo ein echo mysql_error(); einfügen würdest, dann erscheint vielleicht uach ein aussagekräftiger Fehler.

Achja, du solltest deine letzte Zeile besser so schreiben:
PHP:
$content = '<img src="'.$row['bild'].'">';
 
Zurück