Random plaatje OM HET UUR

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

26/06/2005 17:10:00
Quote Anchor link
hey mensen ik zit met een probleem,
random palatje om het uur is geen probleem, alleen nu:
hoe krijg ik het voor elkaar om dit te doen met een database waar je banners kunt toevoegen,
nergens kan ik het vinden , niemand weet het
en als ik zelf iets maak is het echt super groot om het werkend te hebben , hier moet toch een manier voor zijn om t kleiner te maken,
mijn opzet was je maakt een tabel:
id | url | groep | online
en die groep krijgt bij elk plaatje wat je toevoegt van een oplopend tot twaalf en dan weer over nieuw van een tot 12 in t oneindige, hiervoor had ik al dit idee:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$q
= "SELECT * FROM banners LIMIT 1 DESC";
while($db=mysql_fetch_object){
$groep = $db->groep;
$newgroep = $groep + 1;
if($newgroep=<12){
$newint = $newgroep;
}
else{
$groep = "1";
}
}

?>

ff snel bevat waarschijnlijk fouten
dus dat werkt al , daarna als het uur bijv 01 is (ik gebruik dan date('h');
dan doet ie SELECT * FROM banners WHERE groep = 'die 01 dan'

en dan pakt ie van die allemaal ,
random 1tje dus:

$aantal = mysql_num_rows($query);
rand(1,$aantal);

en die die die pakt , wauw <-- die die die :D:P

die zet hij online dus UPDATE banners SET online = '1' WHERE blabla

maar .. wat als er nou maar 1 banner is .. etc
daar moet je dus zoveel if's voor maken dat ik d8 dat er een andere manier zou moeten zijn,
Is hier iemand die zo goed is dat hij een idee hiervoor heeft :P ik hoef geen script alleen een idee :D bedankt alvast
 
PHP hulp

PHP hulp

14/01/2025 13:32:18
 
Dutchcamel

dutchcamel

26/06/2005 19:21:00
Quote Anchor link
Ik zou het zo oplossen:

CREATE TABLE `banners` (
`id` int(11) NOT NULL auto_increment,
`url` varchar(128) NOT NULL default '',
`online` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$result
= mysql_query("SELECT url FROM banners WHERE online > DATE_SUB(NOW(), INTERVAL 3600 SECOND) ORDER BY RAND() LIMIT 0, 1");
if (mysql_num_rows($result) == 1) {
    $row = mysql_fetch_object($result);
    echo $row->url;
}

else {
    $result = mysql_query("SELECT id, url FROM banners ORDER BY RAND() LIMIT 0, 1");
    if (mysql_num_rows($result) == 1) {
        $row = mysql_fetch_object($result);
        mysql_query("UPDATE banners SET online = NOW() WHERE id = ".$row->id);
        echo $row->url;
    }

    else {
        echo 'Geen banners aanwezig';
    }
}

?>


-edit-
Toelichting ook al zal het script wel logisch zijn:
Er wordt gekeken of er in de database een record gevonden kan worden waarbij de waarde van 'online' minder dan 3600 seconden (1 uur) geleden is, online > DATE_SUB(NOW(), INTERVAL 3600 SECOND).
Als dat zo is worden die op willekeurige volgorde gezet en de eerste wordt eruit gehaald, ORDER BY RAND() LIMIT 0, 1.
Als er geen records met de waarde van 'online' binnen het afgelopen uur gevonden kunnen worden wordt er een willekeurig record opgehaald. Van dat record wordt de waarde van 'online' op de huidige tijd gezet.
Het komende uur zal die waarde dus binnen de afgelopen 3600 seconden vallen en dat record telkens gebruikt worden. Na 1 uur wordt opnieuw een willekeurig record gekozen.
Gewijzigd op 26/06/2005 19:27:00 door dutchcamel
 

26/06/2005 21:21:00
Quote Anchor link
daar had ik niet eens aan ged8 , ben niet zo een mysql king ;) bedankt kerel ;)
 
DaeDaluz

DaeDaluz

27/06/2005 10:23:00
Quote Anchor link
Als je de mogelijkheid hebt om Cronjobs te draaien, kan je die ook gebruiken. Je maakt een script dat een url kiest uit de database, en dan dat plaatje bv opslaat als random_pic.jpg ofsow. dan kan je in al je pagina's gewoon dat plaatje oproepen, en dmv van de cronjob wordt dat plaatje elk uur veranderd.

Scheelt wat mysql load, want (no offence ;) maar met het script van dutchcamel moet je wel telkens die URL uit de database halen..

Succes ermee iig :)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.