Vergelijing tussen 2 tabellen
Waaronder ik een bannerklik systeem moet maken.
Er kunnen banners opgegeven worden en deze worden opgeslagen in de tabel `banners` met een `bid` als auto_increment.
Deze moeten allemaal geshowd worden aan de ingelogde leden op het moment dat ze er nog niet op geklikt hebben.(dit gaat nog)
Volgende is dat er in de database een tabel staat `banner_out` dit is ook met een `bid` als auto_increment. Hier komen dus alle `id`'s van de leden in te staan met de `bid` van de banner waarop ze geklikt hebben.
Nu is het de bedoeling dat die lijst die ik gemaakt heb om alle banners te laten zien, dat die niet nog een keer de banners laat zien waar op geklikt is.
Dus was ik eerst begonnen met een while() toen een while() in een while(), kwam erachter dat dit niet het gewenste resultaat gaf.
Toen ben ik begonnen aan een joins... daar was ook geen succes en ben ik bezig geweest met croos table ofzo(weet niet meer precies hoe het heette) maar ook geen succes.
Wie kan mij uit de brand helpen... misschien dat het wel simpel is... maar dan zie ik het compleet ove het hoofd...
zeg even als je meer info nodig hebt dan post ik eventueel script en database compleet even.
Post het script maar even...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?PHP
$query2 = mysql_query("SELECT `id` FROM `banner_out` WHERE `idu`='".$id."'");
if(mysql_num_rows($query2) == 0) {
$sql_004 = mysql_query("SELECT * FROM `banners` WHERE `credits` > '".$k_credits."'") OR die("Fout met laden van een banner, neem contact op met de webmaster.");
$banner = mysql_fetch_assoc($sql_004);
print "<a href=\"bakliks.php?doen=out&bbid=".base64_encode($banner['bid'])."\" target=\"_blanck\"><img src=\"".urldecode($banner['banner_url'])."\" border=\"0\" width=\"200\" height=\"80\" alt=\"\"/><br>";
}
if(mysql_num_rows($query2) > 0) {
// Dit is een join querie ik heb de ID van de tabel banners op bid gezet zodat deze gelijk is aan de bid in banner_out
$query1 = mysql_query("SELECT b.*,bo.* FROM banners b, LEFT JOIN banner_out bo ON (b.bid=bo.bid)") OR die("Wij kunnen niet bepalen welke sites al geaccepteerd zijn, neem contact op met $semail.");
while($banner = mysql_fetch_assoc($query1)) {
print "<a href=\"bakliks.php?doen=out&bbid=".base64_encode($banner['bid'])."\" target=\"_blanck\"><img src=\"".urldecode($banner['banner_url'])."\" border=\"0\" width=\"200\" height=\"80\" alt=\"\"/><br>";
}
}
?>
$query2 = mysql_query("SELECT `id` FROM `banner_out` WHERE `idu`='".$id."'");
if(mysql_num_rows($query2) == 0) {
$sql_004 = mysql_query("SELECT * FROM `banners` WHERE `credits` > '".$k_credits."'") OR die("Fout met laden van een banner, neem contact op met de webmaster.");
$banner = mysql_fetch_assoc($sql_004);
print "<a href=\"bakliks.php?doen=out&bbid=".base64_encode($banner['bid'])."\" target=\"_blanck\"><img src=\"".urldecode($banner['banner_url'])."\" border=\"0\" width=\"200\" height=\"80\" alt=\"\"/><br>";
}
if(mysql_num_rows($query2) > 0) {
// Dit is een join querie ik heb de ID van de tabel banners op bid gezet zodat deze gelijk is aan de bid in banner_out
$query1 = mysql_query("SELECT b.*,bo.* FROM banners b, LEFT JOIN banner_out bo ON (b.bid=bo.bid)") OR die("Wij kunnen niet bepalen welke sites al geaccepteerd zijn, neem contact op met $semail.");
while($banner = mysql_fetch_assoc($query1)) {
print "<a href=\"bakliks.php?doen=out&bbid=".base64_encode($banner['bid'])."\" target=\"_blanck\"><img src=\"".urldecode($banner['banner_url'])."\" border=\"0\" width=\"200\" height=\"80\" alt=\"\"/><br>";
}
}
?>
Hierboven zie je het gedeelte wat ervoor zorgt als je nog niet geklikt hebt ddat je 1 banner ziet, en eronder als je al geklikt hebt dat je alle banners krjgt te zien, maar niet de banners die je al hebt geklikt.
Dan hieronder even de datbaase structuur :
CREATE TABLE `banners` (
`bid` int(150) NOT NULL auto_increment, //banner id
`banner_url` varchar(250) default NULL,
`site_url` varchar(250) default NULL,
`idu` int(150) default NULL, // User id
`credits` float default NULL,
`hits` int(150) default NULL,
`gekeurd` tinyint(10) NOT NULL default '0',
PRIMARY KEY (`bid`)
) TYPE=MyISAM AUTO_INCREMENT=17 ;
Als er op een banner geklikt is :
CREATE TABLE `banner_out` (
`id` int(150) NOT NULL auto_increment,
`idu` int(150) default NULL, // user id
`bid` int(150) default NULL, // banner id
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=17 ;
Toch bedankt... ik heb de oplossing al... dit gaat idd... met een LEFT JOIN