Random plaatje OM HET UUR
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)
1
2
3
4
5
6
7
8
9
10
11
12
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";
}
}
?>
$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
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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';
}
}
?>
$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
daar had ik niet eens aan ged8 , ben niet zo een mysql king ;) bedankt kerel ;)
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 :)