Vergelijing tussen 2 tabellen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Martin Meijer

Martin Meijer

08/07/2006 09:23:00
Quote Anchor link
Ik ben bezig voor een promotie site scripts in te bouwen.

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.
 
PHP hulp

PHP hulp

22/12/2024 17:14:58
 
Niek Berckmans

Niek Berckmans

08/07/2006 10:06:00
Quote Anchor link
Post het script maar even...
 
Martin Meijer

Martin Meijer

08/07/2006 10:11:00
Quote Anchor link
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
<?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>";
    }
}


?>


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 ;
 
Martin Meijer

Martin Meijer

08/07/2006 12:37:00
Quote Anchor link
Toch bedankt... ik heb de oplossing al... dit gaat idd... met een LEFT JOIN
 



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.