Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 15 odgovora
  • 5.897 pregleda

Najnovija ↓

Baner Menager - Kako 27.02.2005. u 21:02 · pre 264 meseca #1
Hocu da napravim jednu skriptu koja ce prilkazivati banere na stranici. Koristio bi php i mysql. Zanema me kako da napravim da se prikazuje uvijek drugi baner. Jedino sto mi pada na pamet je random opcija.
Potpis
May the force be with you...
Re: Baner Menager - Kako 27.02.2005. u 21:18 · pre 264 meseca #2
Pa u pravu si :)
Evo objasnicu ti prostim rechima jer me mrzi da ti sada pishem.
Napravi bazu sa poljima idBannera, url ka banneru, alt tekst, (mozesh dodati i polje koje bi sluzilo kao brojach klikova na banner ali ti sada nije neophodan).

Random funkcijom birash neki broj koji ce ujedno predstavljati idBannera prema kome cesh i dobiti url i alt. Zatim to prikazi na stranici.
Mozda ti ovo izgleda komplikovano ako nikada nisi nishta radio u PHPu ali veruj da se brzo savladati.

Evo ti kako cesh dobijati random broj:

Code:

MT_RAND()
Ova f-ja vraca random broj. Potrebno je definisati min i max vrednosti.
int mt_rand ([int min [,int max ]])
Tako, ako zelimo dobiti random broj izmedju 1 i 100 radimo sledece:

mt_srand((double)microtime()*
1000000);
$number =mt_rand(1,100);
echo $number;

Gde ce nam $number biti sluchajna vrednost.


Ako ti bash nije jasno :) javni se na PM pa cemo da odradimo to :)
Potpis
Sajt sa dnevnim vestima vezanim za fotografiju, foto aparate i obradu slika
[url]http://www.dphotonews.com[/url]
Re: Baner Menager - Kako 27.02.2005. u 22:18 · pre 264 meseca #3
Nebi li bilo jednostavnije:
$banner = mysql_query("SELECT * FROM baneri ORDER BY RAND() LIMIT 1");

Ja sam mislio na ovo. Problem je u tome sto nece ici po redu vec ce se desiti da neki baner prikaze 2 a neki ni jedanput.
Potpis
May the force be with you...
Re: Baner Menager - Kako 28.02.2005. u 00:44 · pre 264 meseca #4
Moguce je doraditi prilozeni SQL da se u obzir uzme i broj prikaza, tako da se dobije prilicno ravnomerna raspodela.
Potpis
Owl
Re: Baner Menager - Kako 28.02.2005. u 02:52 · pre 264 meseca #5
E pa u tom slucaju ti treba otezani random. Znaci uradis recimo listanje po broju prikazivanja, pa iz prve trecine izvuces random ili tako nesto. Moze to mnogo vise da se komplikuje - u tome se i razlikuju razliciti sistemi.
Potpis
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
Re: Baner Menager - Kako 28.02.2005. u 16:34 · pre 264 meseca #7
Da ali ce onda baneri uvek ici redom jedan za drugim. Uvek je mnogo efektnije imati random efekat, da cesti posetilac ne zna vec napamet koja reklama ce "iskociti"
Potpis
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
Re: Baner Menager - Kako 28.02.2005. u 18:08 · pre 264 meseca #8
Pa mislim da to nije ni malo bitno. Bitno je da se svi izmjenjaju, a ne moze posjetilac ni znat koji ce bit sledeci, jer ako neko u medjuvremenu posjeti taj sajt onda ce se tome prikazat sledeci baner. Tako ako neko plati da mu se svaki npr 15-ti put prikaze baner to ce i dobit sigurno
Potpis
www.digital.cg.yu
www.eestec.cg.yu
Re: Baner Menager - Kako 01.03.2005. u 14:49 · pre 264 meseca #9
Rece poredu? Onda trebas imati mjesto gdje ces pamtiti koji je zadnji banner ili koji je sledeci. Mozes pamtiti unekom file-u to.

banner.txt -> "2"

Code:

<?php

// konektovanje na bazu

// file gdje je sledeci banner
$filename = 'banner.txt';

// ucitavanje broja
$handle = fopen($filename, "r");
$banner_id = fread($handle, filesize($filename));
fclose($handle);

// nadjemo banner
$sql = "SELECT path FROM banner WHERE id = $banner_id;";
mysql_query($sql);
$path = mysql_result($sql, 0, "path");

// ispis
echo "<img src=$path>";

// priprema za sledeci banner
$banner_id++;

// da ne bi izaslo van :)
if ($banner_id == 16)
{
      $banner_id = 1;
}

$handle = fopen($filename, 'w')
fwrite($handle, $banner_id);
fclose($handle);

?>


Dodaj jos kod koji provjerava da li je 1 ili 0, da ne bude korisnicima Error-a...

P.S. Ja mislim da se jos ovo moze skratiti jer imam duplo otvaranje file-a (fopen).
Re: Baner Menager - Kako 19.10.2006. u 18:44 · pre 244 meseca #10
Kasnim puno na ovu temu ali evo moje vidjenje na ovaj problem koji je uvijek aktuelan!
Ne koristeci funkciju random() evo mali doprinos

<?php
/*
Recimo da je tabela banneres i da ima polja `id` i `impressions`
Prvi clan je id a drugi clan je impressions
*/
$array = array(1=>122,2=>122,3=>142,67=>123);
$check = 0;
foreach($array as $k=>$v){
if ($check == 0) {
$min = $array[$k];
$index = $k;
$check++;
}
if ($min > $array[$k]){
$min = $array[$k];
$index = $k;
}
}
/*
Kad se ovo odradi onda ce da prikaze na glavnoj stranici banner koji
je favorizovan tj. banner koji se najmanje prikazivao ... i onda mu impression poveca za 1;
U ovom slucaju on drzi uvijek bannere uredno i nikad ne pusta da se jedan prikaze
vise od jednog puta u odnosu na druge!!!
*/
echo $index." ".$min."<br />";

?>


Ako neko misli da ovo nije ok neka mi proslijedi mail ili komentar!
Bio bih Vam zahvalan!
Potpis
Vedran Martinovic
www.besplatnioglasi.rs
Re: Baner Menager - Kako 20.10.2006. u 09:32 · pre 244 meseca #11
Nesto jednostavno

SELECT * FROM baneri ORDER BY broj_prikaza ASC, RAND() LIMIT 1

a potom UPDATE baneri SET broj_prikaza=broj_prikaza+1

znaci: prikazuje se oni koji imaju najmanji broj prikazivanja.

Naravno ovo ne resava problem kada se pojavi novi baner, a ostali imaju vec po 1000... prikaza

Onda bi osnovni upit trebalo da koristi i neki index - recimo broj_prikaza/max_broj_prikaza
Potpis
Moj Veb Sajt HostCentar Blog
Aleksinac Južna Srbija TimeOut
Re: Baner Menager - Kako 25.10.2006. u 11:54 · pre 244 meseca #12
Pa 'ajde da onda razradimo strategiju da se dodavanjem novog banera favorizuje isti.

Svidja mi se ovaj upit, mada mislim da je svakako potrebno izracunavanje, pa sam i zato napisao funkciju.

To sa index-om bas i ne razumijem dobro ... ali kao sto vec rekoh ... tu smo i da ucimo ;)
Potpis
Vedran Martinovic
www.besplatnioglasi.rs
Re: Baner Menager - Kako 25.10.2006. u 19:50 · pre 244 meseca #13
Najbolje bi bilo da se vodi evidencija kada je baner zadnji put prikazan, pa sprema tome bi svi baneri bez razlike na broj prikazivanja bili ravnopravni. Baneri koji nisu prikazini najduze vreme bi imali prioritet.
Ovako:
$result = mysql_query("select * from baneri order by vreme_prikaza asc limit 5");
// limit 5 je da ne bi se proizveo neki sablon nego da u igri budu 5 banera koji nisu prikazani duze vreme.

while ($row = mysql_fetch_array($result)){
$baneri[] = $row['vreme_prikaza']; // ili logicnije ID banera
}
$broj_banera = count($baneri);
$random_baner = rand() % $broj_banera;
$prikazi_baner = $baneri[$random_baner];

i onda
UPDATE baneri SET broj_prikaza=broj_prikaza+1, vreme_prikaza = time()


Re: Baner Menager - Kako 25.10.2006. u 22:50 · pre 244 meseca #14
Ja mislim da to sto je napisano opet radi sablon jer se iz baze izdvajaju baneri koji nisu prikazivani neko odredjeno vrijeme i onda se izmedju tih 5 banera bira jedan... Sve je to ok ali moj predlog da razmotrimo sta se desava kad se dodaje novi baner i onda njega treba favorizovati do izjednacavanja broja prikaza svih banera ...
Ako sam u pravu tu treba malo da se razmislja o matematici kako da se, kao sto rece Gvozden, uvede neki index koji bi davao znacaj tj. prioritet nekom baneru ...
ja evo pisem algoritam pa cu postovati ako bude povoljan rezultat :)


POZDRAV!
Potpis
Vedran Martinovic
www.besplatnioglasi.rs
Re: Baner Menager - Kako 25.10.2006. u 23:05 · pre 244 meseca #15
Citat:
shketuljko:
Sve je to ok ali moj predlog da razmotrimo sta se desava kad se dodaje novi baner i onda njega treba favorizovati do izjednacavanja broja prikaza svih banera ...

Moze i tako ali malo mi logika nije jasna.
Nemozes izjednacavati neki baner koji se prikazuje 5 godina i neki koji si postavio juce.
Za mene je bitnije da svi baneri budu ravnopravni u sadasnje vreme i eto da bi se izbegao neki sablon prikazivanja.
Re: Baner Menager - Kako 26.10.2006. u 12:17 · pre 244 meseca #16
E tu si stvarno u pravu!

Ne mozemo izjednacavati, ali mozemo favorizovati da se prikazuje vise puta u odnosu na druge ...
Svidja mi se rjesenje sa vremenom prikaza!
To je veoma dobro onda!

Potpis
Vedran Martinovic
www.besplatnioglasi.rs
Tema je zaključana, nove poruke nisu moguće.

Premeštanje teme