Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]System losowego wyswietlania reklam
Forum PHP.pl > Forum > Przedszkole
darney
Witam. Piszę system losowego wyświetlania reklam i mam problem.
Chcę umieścić w nim 3 jednostki adsense graficzne i 2 jednostki linkowe. (3 rodzaje takich samych reklam oraz 2 rodzaje innych takich samych reklam)

Pętla wyświetla pozycje numerowane i każda ma swój numer który mam zmierzony.

zmienna $gtesto wyswietla maksymalna liczbę pozycji pod którymi chciał bym umieścić reklame. Więc wpadłem na pomysł że napiszę skrypt który będzie losowe wyświetlał w zakresie $gtesto pozycje.

$gtest to numer pozycji pod którą ma być wyświetlana reklama cos na zasadzie


$reklama1 = rand(1,$gtesto);
$reklama2 = rand(1,$gtesto);
$reklama3 = rand(1,$gtesto);
$reklama4 = rand(1,$gtesto);
$reklama5 = rand(1,$gtesto);
//echo $gtest;
if (($gtest == $reklama1) or ($gtest == $reklama2) or ($gtest == $reklama3)){

echo "reklama graficzna";

}

else

if (($gtest == $reklama4) or ($gtest == $reklama5)) {

echo "reklama linkowa";

}

Jeszcze mi się nie zdarzyło, ale wydaje mi się że jeśli padnie 2 razy ta sama liczba z rand dla $reklama1 oraz reklama2 to zostaną wyświetlone obok siebie dwie takie same jednostki a tego bym nie chciał.
Jak skonstruować warunek, by w przypadku powtórki umieścił tą reklamę w miejsce $gtest które jest wolne od innej reklamy.?
Grzyw
Nie do końca zrozumiałem Twoją ideę, ale odpowiem Ci na pytanie, co zrobić, żeby przyporządkowanie nie powtarzało numerów.
Przede wszystkim to:
  1. $reklama1 = rand(1,$gtesto);
  2. $reklama2 = rand(1,$gtesto);
  3. $reklama3 = rand(1,$gtesto);
  4. $reklama4 = rand(1,$gtesto);
  5. $reklama5 = rand(1,$gtesto);
wygląda bardzo brzydko. Skorzystaj z tablicy $reklama o indeksach od 1 do 5.

Liczby przyporządkowałbym tak:
  1. $gtesto = 100; #strzeliłem
  2. $reklama = array();
  3. $i = 1;
  4. do {
  5. $wylosowanaLiczba = rand(1,$gtesto);
  6. if (in_array($wylosowanaLiczba,$reklama)) {
  7. continue;
  8. }
  9. $reklama[$i] = $wylosowanaLiczba;
  10. $i++;
  11. }
  12. while ($i<6);
darney
możesz jeszcze opisać mi jak to działa dokładnie ?

nie bardzo rozumiem
while ($i<6);
nekomata
while($i<6) czyli gdy $i jest większe od 6 skrypt jest kontynuowany , zauważ że wcześniej nie ma ilości reklam do wygenerowania , właśnie to while określa ilość , daj sobie print_r na $reklama , zaraz po while a wszystko zrozumieć powinieneś .
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.