Hallo,
ich habe ein Gallerie-Script bei dem jeden Tag die im Index gezeigten Gallerien aktualisiert werden. Dabei wird sowohl nach allgemeiner Autoren-beliebtheit als auch den Hits bewertet. Eine hälfte der gezeigten Gallerien sind die mit dem höchsten rank, die anderen werden per Zufall aus den restlichen ausgewählt. Das Script kann sowohl für einzelne Tage als auch mehrere Tage im voraus die Gallerien bestimmen und da kommt das Problem ins Spiel.
Ab dem zweiten Tag nimmt die Anzahl der ausgewählten Gallerien kumulativ um die Hälfte der anzuzeigenden Gallerien zu. Und ich weiss nicht wie das zustande kommt.
Hier der Code:
Nach dem ersten durchlauf der Schleife werden 10 Gallerien in den Array gepackt, nach dem zweiten durchlauf 15 Gallerien und nach dem dritten durchlauf 20 Gallerien. Es sollten aber jeweils immer nur 10 sein.
//Was ich noch vergessen habe, in manchen Gallerie-arrays ( $half_day ) tauchen Gallerien auf die vorher definitv durch das unset der foreach-Schleife hätten gelöscht werden müssen, da sie schon in einem der vorangegangen Arrays enthalten war.
Vielleicht sehe ich den Wald vor lauter Bäumen nicht, aber ich habe gerade keinen blassen Schimmer woran das liegen könnte.
MfG
Spliffster
ich habe ein Gallerie-Script bei dem jeden Tag die im Index gezeigten Gallerien aktualisiert werden. Dabei wird sowohl nach allgemeiner Autoren-beliebtheit als auch den Hits bewertet. Eine hälfte der gezeigten Gallerien sind die mit dem höchsten rank, die anderen werden per Zufall aus den restlichen ausgewählt. Das Script kann sowohl für einzelne Tage als auch mehrere Tage im voraus die Gallerien bestimmen und da kommt das Problem ins Spiel.
Ab dem zweiten Tag nimmt die Anzahl der ausgewählten Gallerien kumulativ um die Hälfte der anzuzeigenden Gallerien zu. Und ich weiss nicht wie das zustande kommt.
Hier der Code:
PHP-Code:
$this->gallery_count=10; // Gallerien pro Tag
$this->day_count=3; // anzahl Tage
private function sort_n_select() {
$gals=$this->db->select("SELECT `id` FROM `galleries`
WHERE `active`!=1 ORDER BY `gal_rank` DESC");
$sliced_gals=array_slice($gals, (($this->gallery_count/2)*$this->day_count));
for($q=1; $q<=$this->day_count; $q++) {
$half_day=array();
$almost_other_half=array();
$slice_from=($this->gallery_count/2)*($q-1)+1;
$slice_to=($this->gallery_count/2)*$q;
$half_day=array_slice($gals, $slice_from, $slice_to);
$almost_other_half=array_rand($sliced_gals, ($this->gallery_count/2));
foreach($almost_other_half as $key) {
$half_day[]=$sliced_gals[$key];
unset($sliced_gals[$key]);
}
shuffle($half_day);
$update[$q]=$half_day;
}
$this->g_merged=$update;
}
//Was ich noch vergessen habe, in manchen Gallerie-arrays ( $half_day ) tauchen Gallerien auf die vorher definitv durch das unset der foreach-Schleife hätten gelöscht werden müssen, da sie schon in einem der vorangegangen Arrays enthalten war.
Vielleicht sehe ich den Wald vor lauter Bäumen nicht, aber ich habe gerade keinen blassen Schimmer woran das liegen könnte.
MfG
Spliffster
Kommentar