Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]System losowego wyswietlania reklam
darney
post
Post #1





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 21.08.2010
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


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.?
Go to the top of the page
+Quote Post
Grzyw
post
Post #2





Grupa: Zarejestrowani
Postów: 561
Pomógł: 75
Dołączył: 19.08.2004
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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);
Go to the top of the page
+Quote Post
darney
post
Post #3





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 21.08.2010
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


możesz jeszcze opisać mi jak to działa dokładnie ?

nie bardzo rozumiem
while ($i<6);
Go to the top of the page
+Quote Post
nekomata
post
Post #4





Grupa: Zarejestrowani
Postów: 314
Pomógł: 44
Dołączył: 12.11.2010
Skąd: UK

Ostrzeżenie: (0%)
-----


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ś .
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.08.2025 - 05:35