Hallihallo!
Ich bin absoluter Anfänger und stehe leider momentan ziemlich aufm Schlauch.
Undzwar geht es um ein Skript, das den Pfad eines zufällig ausgewählten Bildes ausgeben soll. Der Pfad und die Gewichtung des jeweiligen Bildes sind in einer Datenbank gespeichert. Bisher habe ich die Bannerrotation so gelöst:
Nun ist es aber so, dass ich nach Möglichkeit keine Wiederholungen bei der zufälligen Auswahl haben möchte. Ich hatte mir deshalb überlegt, die zufällig ausgegebenen Pfade in einer Session zu speichern. Anschließend sollen dann bei der nächsten Abfrage nur noch die Einträge angezeigt werden, die ungleich der bisherigen sind. Die Ausgabe soll sich also sukzessiv verkleinern, bis gar nichts mehr zur Auswahl steht.
Ich habe versucht das mit einer "WHERE NOT" Abfrage zu realisieren, also ungefähr so:
Aber das geht wohl nicht, weil $_SESSION ein array ist. Aber irgendwie bräuchte ich halt eine "WHERE NOT" Abfrage die für alle Elemente des Arrays durchgeführt wird. Das Problem ist aber auch, dass in das Array immer zusätzliche Einträge kommen, undzwar immer der zuletzt ausgegebene Pfad.
Sorry, wenn ich mich grad ein bisschen kompliziert ausdrücke. Falls das zu unverständlich sein sollte, kann ich probieren das Problem noch mal besser zu umschreiben.
Ich bin absoluter Anfänger und stehe leider momentan ziemlich aufm Schlauch.
Undzwar geht es um ein Skript, das den Pfad eines zufällig ausgewählten Bildes ausgeben soll. Der Pfad und die Gewichtung des jeweiligen Bildes sind in einer Datenbank gespeichert. Bisher habe ich die Bannerrotation so gelöst:
PHP-Code:
$max_gewicht = "";
$ergebnis_max_gewicht = mysql_query("SELECT gewicht, MAX(gewicht) FROM bannerrotation");
while($result = mysql_fetch_array($ergebnis_max_gewicht))
{
$max_gewicht = $result[1];
// Bestimmung des maximalen Gewichts
}
$rand = rand(1, $max_gewicht);
$ergebnis = mysql_query("SELECT gewicht, pfad FROM bannerrotaion WHERE gewicht >= $rand ORDER BY RAND () LIMIT 1");
while($result = mysql_fetch_array($ergebnis))
{
echo $result['url'];
array_unshift($_SESSION['pfad'], $result['pfad']);
// Ich hatte mir überlegt, die bisher zufällig ausgewählten Pfade in einer Session zu speichern
}
Ich habe versucht das mit einer "WHERE NOT" Abfrage zu realisieren, also ungefähr so:
PHP-Code:
mysql_query("SELECT gewicht, MAX(gewicht) FROM weiterleitung WHERE pfad NOT $_SESSION['pfad'] ")
Sorry, wenn ich mich grad ein bisschen kompliziert ausdrücke. Falls das zu unverständlich sein sollte, kann ich probieren das Problem noch mal besser zu umschreiben.
Kommentar