[PHP] Advertentie rand()

Pagina: 1
Acties:
  • 34 views sinds 30-01-2008

  • wilcodl
  • Registratie: September 2004
  • Laatst online: 30-03 22:55
Hallo tweakers,
ik ben een advertentiesysteempje aan het bouwen met behulp van de mt_rand() functie van PHP. Maar nu wil ik dat elke advertentie maar 1 keer wordt weergegeven, dit lukt niet mer onderstaand script. Ik heb al wat met if en for geprobeerd maar het is me nog niet gelukt. Dit is een gedeelte van de functie:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//advertentietype
$type = "tekst";
// aantal advertenties dat weergegeven moet worden
$ads = 3;

// 1 van de advertenties
$ad["tekst"][1] = "<a href=\"www.test.nl\" target=\"_blank\">
advertentie</a>";

$count = count($ad[$type]);

for ($i=1; $i<=$ads; $i++){
$rand = mt_rand(1,$count);
$a[$i] = $rand;

if ($i > 1 && $type == "tekst"){
echo " :: ";
}
echo $ad[$type][$rand];
}

  • orf
  • Registratie: Augustus 2005
  • Laatst online: 23:32

orf

array_shuffle gebruiken en daarna gewoon de eerste 3 ($ads) weergeven.

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 07-04 22:27

Bosmonster

*zucht*

array_shuffle? :P

Daar zul je zelf een quicksort routinetje voor moeten schrijven.

Ik zie trouwens wel een array_rand, die 1 of meerdere random waarden uit een array kan halen. Lijkt me toch aardig wat je zoekt :)

Ah, waarschijnlijk bedoelde je deze, shuffle. Lang leve de PHP naamgeving :P Maar goed, niet echt nodig met array_rand lijkt me.

[ Voor 84% gewijzigd door Bosmonster op 10-03-2006 15:28 ]


  • Jurgle
  • Registratie: Februari 2003
  • Laatst online: 25-03 00:07

Jurgle

100% Compatible

Je bedoelt dat je unieke pics uit een array wilt maken denk ik.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function pickRandom($copy)
{
   $picks = array();
   $nr_ads = 3;
   
   for($i = 0; $i < $nr_ads; $i++)
   {
      $pick = mt_rand(0, count($copy) - 1);
      $picks[] = $copy[$pick];
      $tmp = array();
      for($j = 0; $j < count($copy); $j++)
         if($j != $pick)
            $tmp[] = $copy[$j];
      $copy = $tmp;
   }

   return $picks;
}

$chosen_ads = pickRandom($all_ads);


Niet heel schone code, maar volgens mij moet je er wel wat mee kunnen.

My opinions may have changed but not the fact that I am right ― Ashleigh Brilliant


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 11-03 14:33

NMe

Quia Ego Sic Dico.

Zelfs zonder standaardfuncties had je hier prima zelf een oplossing voor kunnen verzinnen. Even simpel een array bijhouden met de indexen die al geweest zijn is toch geen moeite? :? Volgende keer dus iets meer moeite doen voor je een topic opent. Sowieso ontbreekt er aan je topicstart nogal wat info. Zie ook Programming FAQ - De "quickstart". :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Dit topic is gesloten.