banner systeem
Ik heb de posts al nagekeken hierover en kon er helaas niks vinden over het probleem wat ik heb gevonden met dit script
Het script:
http://www.phphulp.nl/php/scripts/7/76/
De posts:
http://www.phphulp.nl/forum/showtopic.php?id=9338&cat=1&replies=0
Ik heb het volgende probleem met dit script gevonden. Als ik een aantal banners heb toegevoegd bv. 10 stuks en ik verwijder banner 4 dan krijg je alleen banner 1, 2 en 3 te zien en dan een wit vlak en dan begint hij weer opnieuw 1, 2, 3.
Dit is het deel waar het fout gaat:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?
$btable = "ban_468";
$btable2 = "ban_468_rotation";
$rsql = "SELECT bid FROM $btable2 WHERE id = 1";
$rres = mysql_query($rsql);
$row = mysql_fetch_array($rres);
if (mysql_num_rows($rres) >= 1)
$bid = $row[bid];
else
$bid = 1;
$sql = "SELECT * FROM $btable WHERE bid = '$bid'";
$res = mysql_query($sql);
if (mysql_num_rows($res) >= 1)
{
$total = mysql_num_rows($res);
$row = mysql_fetch_array($res);
?>
$btable = "ban_468";
$btable2 = "ban_468_rotation";
$rsql = "SELECT bid FROM $btable2 WHERE id = 1";
$rres = mysql_query($rsql);
$row = mysql_fetch_array($rres);
if (mysql_num_rows($rres) >= 1)
$bid = $row[bid];
else
$bid = 1;
$sql = "SELECT * FROM $btable WHERE bid = '$bid'";
$res = mysql_query($sql);
if (mysql_num_rows($res) >= 1)
{
$total = mysql_num_rows($res);
$row = mysql_fetch_array($res);
?>
Ik heb al verschillende dingen geprobeert, maar ik kan het niet opvangen zodat als je in de reeks 1 bid nummer mist hij dan 1 erbij optelt.
Dit is wat ik geprobleerd heb:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?
$btable = "ban_468";
$btable2 = "ban_468_rotation";
$rsql = "SELECT bid FROM $btable2 WHERE id = 1";
$rres = mysql_query($rsql);
$row = mysql_fetch_array($rres);
if (mysql_num_rows($rres) >= 1)
$bid = $row['bid'];
else
$bid = 1;
$sql = "SELECT * FROM $btable WHERE bid = '$bid'";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
if (empty($row['bid'])) {
$bid = $row['bid']+1;
$sql = "SELECT * FROM $btable WHERE bid = '$bid'";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
}
if (mysql_num_rows($res) >= 1)
{
?>
$btable = "ban_468";
$btable2 = "ban_468_rotation";
$rsql = "SELECT bid FROM $btable2 WHERE id = 1";
$rres = mysql_query($rsql);
$row = mysql_fetch_array($rres);
if (mysql_num_rows($rres) >= 1)
$bid = $row['bid'];
else
$bid = 1;
$sql = "SELECT * FROM $btable WHERE bid = '$bid'";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
if (empty($row['bid'])) {
$bid = $row['bid']+1;
$sql = "SELECT * FROM $btable WHERE bid = '$bid'";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
}
if (mysql_num_rows($res) >= 1)
{
?>
De bedoeling is dat hij als hij 1 bid mist in de reeks hij toch de volgende laat zien.
Dus 1, 2, 4, 5, 8, 10
Nu stopt hij bij 2 en telt door naar 3 en geeft een wit vlak weer en begint dan weer bij 1.
Misschien heb ik ergens overheen gekeken. Ik hoop dat jullie me kunnen helpen en dat ik het duidelijk heb uit kunnen leggen.
Alvast bedankt voor jullie tijd.
Gewijzigd op 31/03/2006 14:49:00 door Rico
Niemand een idee hierover??
waarom niet gewoon een ID toevoegen in de database en die meegeven als waarde waarop hij een banner oproept. je maakt het jezelf nu niet gemakkelijk
BID is dat apparte ID wat je bedoelt. :)
Ik hoop echt dat iemand mij kan helpen, anders kan ik waarschijnlijk het script de vuilnisbak ingooien.. :/
kan je hiermee verder of moet ik ff iets bters maken?
Deze kan ik helaas niet gebruiken. Want als ik een reeks bid heb met 1, 2, 4, 5, 6, 9, 10, 13, 17, 20 dan zal hij waarschijnlijk de weg kwijtraken.
Want de bedoeling is dat hij dan netjes die bidnummers laat zien en niet witte vlakken op de plekken waar geen bidnummer zit zoals 3, 7, 8, 11, 12, 14, 15, 16, 18, 19.
Het zou zeker heel fijn zijn als je me zou helpen. :)
Gewijzigd op 31/03/2006 19:59:00 door Rico
Code (php)
zoiets mischien?
kweet ook niet precies voor hoeveel mensen dit gebruikt zal worden maar ik zou het zo iets doen:)
Ik kan het script al sprongen van 1 a 2 laten maken, maar bij 3 (1, 4) verschil dan laat hij een wit vlak zien.
Ik hoop dat ik het duidelijk kan uitleggen.. :)
Ik heb ook msn als dat makkelijker is. :)
Ik heb ook ff op http://82.169.139.106/test/banner_468.php een voorbeeldje staan met de bidnummers erlangs.
Gewijzigd op 31/03/2006 20:04:00 door Rico
maar als je wilt kan je me toevoegen me email staat in me profile
zelf ben ik ook nog niet de beste in php maar wet wel al wat:)
genoeg om een leuke dynamische site te maken:)
GR. mebus!
o ja zal nuzelf ook wel ff iets uitvogelen voor je:)
In dit geval wil ik de gehele site onderhouden met weinig moeite, vandaar de veel moeite om hem te maken.. :)
Ik ben benieuwd wat je gaat uitvogelen voor me. :)
maar maak het zo dat je het wel makkelijk kan uitbreiden:)
GR. mebus!
voeg me anders maar ff toe op msn:)
Ja lijkt me wel verstandig want er hangt nog een hele hoop aan... :) Die rotatie is maar een klein gedeelte... :)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
//vul deze gegevens goed in!\/
$info = array('localhost','database','username','password');
//vul deze gegevens goed in!/\
list($host,$database,$user,$pass) = $info;
@mysql_connect($host,$user,$pass)or die(mysql_error());
@mysql_select_db($database)or die(mysql_error());
$getal1 = mysql_query("SELECT * FROM banners ORDER BY RAND() LIMIT 1");
$wie1 = mysql_fetch_array($getal1);
echo "<a href='".$wie1['site']."'>".$wie1['naam']."</a>";
?>
//vul deze gegevens goed in!\/
$info = array('localhost','database','username','password');
//vul deze gegevens goed in!/\
list($host,$database,$user,$pass) = $info;
@mysql_connect($host,$user,$pass)or die(mysql_error());
@mysql_select_db($database)or die(mysql_error());
$getal1 = mysql_query("SELECT * FROM banners ORDER BY RAND() LIMIT 1");
$wie1 = mysql_fetch_array($getal1);
echo "<a href='".$wie1['site']."'>".$wie1['naam']."</a>";
?>
en de db:
CREATE TABLE banners (
id int(11) NOT NULL auto_increment,
site varchar(128) NOT NULL,
naam varchar(16) NOT NULL,
PRIMARY KEY(id)
);
simpeler dan dit kan denk niet:)
GR. mebus!
Om dus het resultaat te krijgen wat ik wilde krijgen moet je het woordje if in while veranderen. :)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?
if (mysql_num_rows($rres) >= 1)
$bid = $row['bid'];
else
$bid = 1;
$sql = "SELECT * FROM $btable WHERE bid = '$bid'";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
-> if <- (empty($row['bid'])) {
$bid = $row['bid']+1;
$sql = "SELECT * FROM $btable WHERE bid = '$bid'";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
}
?>
if (mysql_num_rows($rres) >= 1)
$bid = $row['bid'];
else
$bid = 1;
$sql = "SELECT * FROM $btable WHERE bid = '$bid'";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
-> if <- (empty($row['bid'])) {
$bid = $row['bid']+1;
$sql = "SELECT * FROM $btable WHERE bid = '$bid'";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
}
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?
if (mysql_num_rows($rres) >= 1)
$bid = $row['bid'];
else
$bid = 1;
$sql = "SELECT * FROM $btable WHERE bid = '$bid'";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
-> while <-(empty($row['bid'])) {
$bid = $row['bid']+1;
$sql = "SELECT * FROM $btable WHERE bid = '$bid'";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
}
?>
if (mysql_num_rows($rres) >= 1)
$bid = $row['bid'];
else
$bid = 1;
$sql = "SELECT * FROM $btable WHERE bid = '$bid'";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
-> while <-(empty($row['bid'])) {
$bid = $row['bid']+1;
$sql = "SELECT * FROM $btable WHERE bid = '$bid'";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
}
?>
Nu werkt ie perfect.
Toch bedankt dat jullie hebben meegeholpen.
Suc6 gewenst.
GR. mebus!
Lissy misschien kan jij dit ook gebruiken voor jou versie die je gebruikt :)