EDIT: database struktuur toegevoegd
EDIT2:ik kreeg reacties van mensen dat de inhoud pas onder de banners begon. Ik heb alles dus weer in een tabel gezet. En dus de code hieronder is gewijzigd.

Ik heb een soort startpagina gemaakt. Ik wil graag achter iedere link laten zien hoe vaak er op geklikt is en dan bv 1 keer per jaar alles op nul zetten.

Dit is de code die ik heb met al een stukje van Jan Koehoorn erin verwerkt. Hopelijk wil hij me verder helpen.

<?php
if (isset ($_GET['cat_id']) )
{
    // eerst de teller updaten
    $sql = "
        UPDATE winkel_linken
        SET kliks = kliks + 1
        WHERE l.cat_id = " . $_GET['cat_id'];
    if (mysql_query ($sql)) {
        trigger_error (mysql_error ());
    }
?>


Testpagina


<?php
<?php
error_reporting (E_ALL & ~E_NOTICE);
include("diversen.inc"); 
include("statistieken.php"); 
//maak verbinding met de database
$connection = mysql_connect ($hostname,$user,$password) or die ( "Sorry maar ik kan geen contact maken met de database, probeer het later opnieuw of ververs uw browser.");
$db = mysql_select_db ($database, $connection) or die ("Sorry, maar ik kan de database niet openen.");
?>
<html>
<head>
<title>*De winkel top 10* de beste online winkels</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="shortcut icon" href="http://www.winkeltop10.nl/chart.ico">
<meta name="title" content="Winkel top 10" />
<meta name="description" content="In de winkel top 10 staan de beste online winkels vermeldt. " />
<meta name="keywords" content="online,winkels,online winkels,winkelen,shoppen,webwinkels" />
<meta name="URL" content="http://www.winkeltop10.nl" />
<meta name="language" content="Nederlands" />
<meta name="author" content="E.Visser" />
<meta name="copyright" content="© www.winkeltop10.nl" />
<meta name="robots" content="INDEX, FOLLOW" />
<meta name="revisit-after" content="3 days" />
<meta name="reply-to" content="infoATwinkeltop10.nl" />
<meta name="document-class" content="Living Document" />
<meta name="document-classification" content="Consumer" />
<meta name="document-rights" content="Copyrighted Work" />
<meta name="document-type" content="Public" />
<meta name="document-rating" content="General" />
<meta name="document-distribution" content="Global" />
<meta name="document-state" content="Dynamic" />
<meta name="cache-control" content="Public" />
<link href="/style.css" rel="stylesheet" type="text/css">
</head>
<body>
<table width="100%"  border="0" cellspacing="0" cellpadding="0">
	<tr>
		<td colspan="3" id="header"><!-- SiteSearch Google -->
        <form method="get" action="http://www.google.nl/custom" target="google_window">
        	<div class="zoeken" id="zoeken">
        		<table border="0">
        			<tr>
        				<td nowrap="nowrap" valign="top" align="left" height="32"> </td>
        				<td nowrap="nowrap">
        					<input type="hidden" name="domains" value="www.winkeltop10.nl">
        					<input name="q" type="text" class="zoekvenster" value="" size="20" maxlength="255">
        					<input name="sa" type="submit" class="zoekknop" value="Doorzoek deze site">
       					</td>
       				</tr>
        			<tr>
        				<td>&nbsp;</td>
        				<td nowrap="nowrap">
        					<table>
        						<tr>
        							<td>
        								<input type="radio" name="sitesearch" value="" checked="checked">
        								<font size="-1" color="#ffffff">Web</font> </td>
        							<td>
        								<input type="radio" name="sitesearch" value="www.winkeltop10.nl">
        								<font size="-1" color="#ffffff">www.winkeltop10.nl</font> </td>
       							</tr>
       						</table>
        					<input type="hidden" name="client" value="pub-0817825055293462">
        					<input type="hidden" name="forid" value="1">
        					<input type="hidden" name="channel" value="1420807200">
        					<input type="hidden" name="ie" value="ISO-8859-1">
        					<input type="hidden" name="oe" value="ISO-8859-1">
        					<input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1">
        					<input type="hidden" name="hl" value="nl">
       					</td>
       				</tr>
       			</table>
       		</div><!--einde div zoeken-->
       	</form>
        <!-- Einde SiteSearch Google --></td>
	</tr>
	<tr>
		<td height="3" colspan="3" id="streepje"></td>
	</tr>
	<tr>
		<td valign="top" id="menulinks"><script language="javascript" type="text/javascript" src="http://views.m4n.nl/_v?AffiliateID=2895&zoneid=185950"></script>
<script language="javascript" type="text/javascript" src="http://ti.tradetracker.nl/-1/1239/6171/js"></script></td>
		<td align="center" valign="top" id="inhoud"><?php

//Maak de top10

echo '<div align="center"><table class="tabelborder10" cellspacing="0" align="center" width="750"><tr>';
echo '<td class="kopje10" colspan="4">Welkom op de Winkel Top 10<br>Hier onder staan de beste 10 winkels van deze week.</td></tr>';
echo '<tr><td class="link10" rowspan="10">';
?>
<!-- tabel voor statistieken -->
<table border="0" cellspacing="0" cellpadding="0">
	<tr>
    	<td class="tekstkoptellers"><img src="/plaatjes/bezoeker.gif" alt="Nu online:" width="32" height="32" border="0" align="left">&nbsp;</td>
    	<td align="left" valign="middle" class="tekstkoptellers"><!--Begin van het who's online script van Icstats-->
        		<script language='JavaScript' src='http://www.icstats.nl/asp/extra/whoson.asp?siteID=259645' type="text/javascript" ></script>
        		<!--Einde van who's online script--></td>
	</tr>
	<tr>
		<td class="stats" align="right"><?php echo $laatZienTeller1['teller1']; ?>&nbsp;</td>
		<td align="left" class="tekstkoptellers">Linken</td>
	</tr>
	<tr>
		<td class="stats" align="right"><?php echo $laatZienTeller3['teller3']; ?>&nbsp;</td>
		<td align="left" class="tekstkoptellers">Categorieën</td>
	</tr>
	<tr>
    	<td class="stats" align="right"><?php echo $laatZienTeller4['teller4']; ?>&nbsp;</td>
    	<td align="left" class="tekstkoptellers">Linkpartners</td>
	</tr>
</table>
<!-- einde tabel voor statistieken -->
<?php
echo '</td>';

echo '<td class="link10">1.&nbsp;';
?>
<a href="http://www.speelgoedpostorder.nl/?campaignID=426&materialID=4412&affiliateID=6171" target="_blank">Speelgoedpostorder.nl</a>
<?php 
echo '</td>';
echo '<td class="link10">6.&nbsp;';
?>
<a href="http://www.rpholidays.nl/tradetracker/?campaignID=283&materialID=2518&affiliateID=6171" target="_blank">RP Holidays</a>
<?php 
echo '</td>';
echo '<td rowspan="5" class="link10">';
?>
<script language="javascript" type="text/javascript" src="http://ti.tradetracker.nl/19/71/6171/js"></script>
<?php
echo '</td>';
echo '</tr><tr>';
echo '<td class="link10">2.&nbsp;';
?>
<a href="http://www.dokteronline.com/viagra_bestellen.php?campaignID=333&materialID=2864&affiliateID=6171" target="_blank">Online apotheek en arts</a>
<?php
echo '</td>';
echo '<td class="link10">7.&nbsp;';
?>
<a href="http://ds1.nl/c/?wi=36953&ws=&si=173&li=8815" title="Adverteren op www.winkeltop10.nl" onmouseover="window.status='Adverteren op www.winkeltop10.nl';return true;" onmouseout="window.status=' ';" target="_blank">Vakantiehuisje.tv</a>
<?php
echo '</td>';
echo '';
echo '</tr><tr>';
echo '<td class="link10">3.&nbsp;';
?>
<a href="http://www.yourhosting.nl/goto.php?afid=22226759" target="_blank">YourHosting.nl</a>
<?php
echo '</td>';
echo '<td class="link10">8.&nbsp;';
?>
<a href="http://ds1.nl/c/?wi=36953&ws=&si=129&li=13765" title="Adverteren op www.winkeltop10.nl" onmouseover="window.status='Adverteren op www.winkeltop10.nl';return true;" onmouseout="window.status=' ';" target="_blank">123tijdschrift.nl</a>
<?php
echo '</td>';
echo '';
echo '</tr><tr>';
echo '<td class="link10">4.&nbsp;';
?>
<a href="http://www.gadgethouse.nl/tradetracker/?campaignID=107&materialID=733&affiliateID=6171" target="_blank">Gadgethouse.nl</a>
<?php
echo '</td>';
echo '<td class="link10">9.&nbsp;';
?>
<a href="http://www.nonplusultra.nl/tradetracker/?campaignID=119&materialID=1008&affiliateID=6171" target="_blank">Nonplusultra.nl</a>
<?php
echo '</td>';
echo '';
echo '</tr><tr>';
echo '<td class="link10">5.&nbsp;';
?>
<a href="http://www.coolmove.nl/ttcm/?campaignID=355&materialID=3334&affiliateID=6171" target="_blank">Coolmove.nl</a>
<?php
echo '</td>';
echo '<td class="link10">10.&nbsp;';
?>
<a href="http://www.gift4one.nl/cadeaus/?campaignID=407&materialID=4094&affiliateID=6171" target="_blank">Gift4one.nl</a>
<?php
echo '</td>';
echo '';

echo '</tr></table></div>';
//einde top 10




//als er op de link geklikt word om meer linken uit die categorie te bekijken laat dan de vervolg pagina zien.
if (isset ($_GET['cat_id']) )
{
    // eerst de teller updaten
    $sql = "
        UPDATE winkel_linken
        SET kliks = kliks + 1
        WHERE l.cat_id = " . $_GET['cat_id'];
    if (mysql_query ($sql)) {
        trigger_error (mysql_error ());
    }
    
    //Laat de categorie naam zien boven in de tabel
    $sql = "
        SELECT c.cat_id, c.cat_naam, l.link_naam, l.url, l.java, l.link_tekst
        FROM winkel_categorie AS c, winkel_linken AS l
        WHERE c.cat_id = " . $_GET['cat_id'] . "
        AND c.cat_id = l.cat_id
        ORDER BY l.link_naam ASC
        ";
    $res = mysql_query($sql) or die ("Sorry maar ik kan de naam van de categorie niet weergeven, probeer het later opnieuw.");
    $teller = 0;
    $list_completed = false;
    while ($row = mysql_fetch_assoc ($res)) {
        
        if ($teller % 10 == 0) {
            echo '<ul>';
            echo '<li class="kopje">' . $row['cat_naam'] . '</li>' .PHP_EOL ;
        }
switch(true)//haal de juiste link soort uit de database
{
case ($row['java']):
		echo '<li class="link">-<script language="javascript" type="text/javascript" src="' . $row['java'] . '"></script></a></li>' . PHP_EOL;
		break;

default:
		echo '<li class="link">-<a href="' . $row['url'] .'" target="_blank">'. $row['link_tekst'].'</a></li>' . PHP_EOL;
		break;
}

        $list_completed = false;
        if ($teller % 10 == 9) {
            echo '<li class="leesmeer"><a href="http://www.winkeltop10.nl" target="_parent">Terug</a></li>' . PHP_EOL;
            echo '</ul>';
            $list_completed = true;
        }
     $teller++;
    }
    if (!$list_completed) {
        echo '<li class="leesmeer"><a href="http://www.winkeltop10.nl" target="_parent">Terug</a></li>' . PHP_EOL;
        echo '</ul>';
    }
}
else
{

echo '<table align="center"><tr>';
$kolommen = 4;

//Laat de categorie naam zien boven in de tabel
$queryNaam = 'SELECT * FROM winkel_categorie ORDER BY cat_naam';
$resultNaam = mysql_query($queryNaam) or die ("Sorry maar ik kan de naam van de categorie niet weergeven, probeer het later opnieuw.");
while ($rowNaam = mysql_fetch_object($resultNaam))
{
//Laat zien hoeveel linken er in die categorie zitten:
$teller = 'SELECT COUNT(link_id) AS teller FROM winkel_linken  WHERE cat_id = '. $rowNaam->cat_id .'';
$resultaatTeller = mysql_query($teller) or die ("Sorry maar kan de teller niet weergeven.");
$laatZienTeller = mysql_fetch_assoc($resultaatTeller);
echo '<td valign="top"><table width="175" align="left" class="tabelborder" cellspacing="0" cellpadding="0">';
echo '<tr>';
echo '<td class="kopje">'.$rowNaam->cat_naam.'&nbsp;<div class="teller"> ' . $laatZienTeller['teller'].'</div>' ;
echo '</td>';
echo '<tr>';
echo '<td class="tekst">'.$rowNaam->categorie_tekst.'</div>' ;
echo '</td>';
echo '</tr>'.PHP_EOL;
//Laat de linken zien
$queryLink = 'SELECT * FROM winkel_linken WHERE cat_id = '. $rowNaam->cat_id .' ORDER BY RAND()  LIMIT 0,5';
$resultLink = mysql_query($queryLink) or die ("Sorry maar ik kan de linken van de categorie niet weergeven, probeer het later opnieuw.");
$j = 0;
while ($rowLink = mysql_fetch_object($resultLink))
{
    $j++;
switch(true)//haal de juiste link soort uit de database
{
case ($rowLink->java):
    echo '<tr>';
    echo '<td class="link">-<script language="javascript" type="text/javascript" src="' . $rowLink->java . '"></script></a>';
    echo '</td>';
    echo '</tr>'.PHP_EOL;
break;

default:

    echo '<tr>';
    echo '<td class="link">-<a href="'. $rowLink->url.'" target="_blank">'.$rowLink->link_tekst.'</a>';
    echo '</td>';
    echo '</tr>'.PHP_EOL;
break;
}


    if($j == 5){        
        echo '<tr>';
        echo '<td class="meer">';
        echo '<a href="index.php?cat_id='.$rowNaam->cat_id.'"><font class="meer">Meer in de categorie '.$rowNaam->cat_naam.'&nbsp;-></font></a>';
        echo '</td>';
        echo '</tr>';
        }
    
}
        
        

        echo '</table>'.PHP_EOL;
    
$counter++;
    if($counter==$kolommen)
    {
        echo '</td></tr></table><table align="center"><tr>';
        $counter = 0;
    }
}

echo '</td></tr></table>'.PHP_EOL;
}

?>
</td>
		<td valign="top" id="menurechts"><script type="text/javascript"><!--
google_ad_client = "pub-0817825055293462";
google_ad_width = 120;
google_ad_height = 600;
google_ad_format = "120x600_as";
google_ad_type = "text_image";
google_ad_channel ="8662621847";
google_color_border = "4261B6";
google_color_bg = "4261B6";
google_color_link = "FFFFFF";
google_color_text = "FFFFFF";
google_color_url = "000000";
//--></script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></td>
	</tr>
	<tr>
		<td colspan="3" id="footer"><?php
    $querysubmenu = "SELECT sub_id FROM winkel_submenu ";
    $resultsubmenu = mysql_query($querysubmenu) or die ("Sorry maar ik kan het submenu niet weergeven");
	while ($rowsubmenu = mysql_fetch_object($resultsubmenu))
{
switch(true)
	{
case (($rowsubmenu->sub_id) == 1):
		echo '<a class="home" href="http://www.winkeltop10.nl" class="home" target="_parent">Home</a>&nbsp;|';
		break;

case (($rowsubmenu->sub_id) == 2):
		echo '<a class="home" href="disclaimer.php" class="home" target="_blank">&nbsp;Disclaimer</a>&nbsp;|';
		break;

case (($rowsubmenu->sub_id) == 3):
		echo '<a class="home" href="linktoevoegen.php" class="home" target="_blank">&nbsp;Link Toevoegen</a>&nbsp;|';
		break;

case (($rowsubmenu->sub_id) == 4):
		echo '<a class="home" href="contact.php" class="home" target="_blank">&nbsp;Contact</a>&nbsp;|';
		break;

case (($rowsubmenu->sub_id) == 5):
		echo '<a class="home" href="http://www.winkeltop10.nl/icstats/clickout.php?siteId=259645&url=www.deluxewebhosting.nl/deluxe/index.php" class="home" target="_blank">&nbsp;Hosting: DeLuxeWebhosting</a>&nbsp;|';
		break;

default:
		echo '';
		break;
	}
}
?>
&copy;<?php
$d = date("Y"); // Huidig jaar
$o = 2006; // Jaar van oprichten

if ($d <= $o) {
   echo $o;
}
else {
   echo $o."-".$d;
}
?> Winkeltop10.nl</td>
	</tr>
</table>

<?php
//Begin script van ICStatistieken
//Als de bezoeker op de pagina komt is het id -> 1
if (!isset ($_GET['cat_id']) )
{
?>
<!--ICStats statistieken start-->
<script type='text/javascript' src='http://www.icstats.nl/javascript/icstats.js'></script>
<script type='text/javascript'>
<!--
   icstats('http://www.icstats.nl/asp/icstats.asp?siteID=259645&p=id1');
-->
</script>
<noscript>
   <p><img id='ICStats' width='1' height='1' style='border:none;' alt='' src='http://www.icstats.nl/asp/icstats.asp?siteID=259645&amp;p=id1' /></p>
</noscript>
<!--ICStats statistieken einde-->
<?php
}
//Als de bezoeker op een categorie klikt  dan wordt alleen het pagina cat_id weergegeven
else
{
?>
<!--ICStats statistieken start-->
<script type='text/javascript' src='http://www.icstats.nl/javascript/icstats.js'></script>
<script type='text/javascript'>
<!--
   icstats('http://www.icstats.nl/asp/icstats.asp?siteID=259645&p=top<?php echo ($_GET['cat_id']); ?>');
-->
</script>
<noscript>
   <p><img id='ICStats' width='1' height='1' style='border:none;' alt='' src='http://www.icstats.nl/asp/icstats.asp?siteID=259645&amp;p=top<?php echo ($_GET['cat_id']); ?>' /></p>
</noscript>
<!--ICStats statistieken einde-->
<?php
}

//Einde script ICStatistieken
?>

</body>
</html>



winkel_categorie
Tabel opmerkingen: Categorie namen

Veld 	Type 	Null 	Standaardwaarde
cat_id  	int(5) 	Ja  	NULL 
cat_naam  	varchar(255) 	Ja  	 


 Indexen:
Sleutel naam 	Type 	Kardinaliteit 	Veld
PRIMARY 	PRIMARY 	52  	cat_id



winkel_linken
Veld 	Type 	Null 	Standaardwaarde
link_id  	int(5) 	Ja  	NULL 
link_winkel  	varchar(255) 	Ja  	 
link_naam  	varchar(255) 	Ja  	 
url  	text 	Ja  	 
java  	varchar(255) 	Ja  	 
link_tekst  	varchar(255) 	Ja  	 
kliks  	int(11) 	Ja  	0 
cat_id  	int(5) 	Ja  	0 


 Indexen:
Sleutel naam 	Type 	Kardinaliteit 	Veld
PRIMARY 	PRIMARY 	215  	link_id


Ik heb een nieuwe database van MyAdmin en ik kan alleen een printversie krijgen van de tabelstruktuur. Daarom ziet dit er niet zo netjes uit.
Robert schreef op 03.10.2006 22:33
Ik bedenk me net dat dat wat te kort door de bocht is, (mooi dat het wel werkt met de links nu trouwens) als je van 1 januari uitgaat, dan blijft die de hele tabel gedurende de hele dag 1 januari elke keer resetten. Ik zal nog eens rustig nadenken over dit probleem, en ga er hierbij vanuit dat je elk jaar op 1-1 de data weer wilt resetten. (dit kan je handmatig doen, of door cronjobs te maken, maar volgens mij kan het ook in je script ingebouwd worden. Misschien heeft Jan hier weer een schitterende oplossing voor)


Uh, Robert....

Misschien is het beter om alle kliks te resetten per maand, anders krijg je wel een erg groot getal erachter te staan. (hoop ik tenminste) En dan is de top 10 ook leuker.

En ik heb even gekeken maar het is mogelijk om cronjobs te maken maar dit is nieuw voor mij.

Robert schreef op 03.10.2006 22:37
En over de top 10:

<?php
echo '<table><tr>';
$kolommen = 2;
//Laat de 10 best bezochte linken zien
$queryKlik = "SELECT link_naam, url FROM winkel_linken ORDER BY kliks DESC LIMIT 0,10";
$resultKlik = mysql_query($queryKlik) or die ("Sorry maar ik kan de beste 10 winkels niet weergeven, probeer het later opnieuw.");

//geeft de top 10 aan van 1 tot 10
$teller=1;
while ($rowKlik = mysql_fetch_object($resultKlik))
{
echo '<td align="left" class="link10" >';

echo ''. $teller.'.<a href="'. $rowKlik->url.'" target="_blank">'.$rowKlik->link_naam.'</a></td>' ;

$teller++;

}
echo '</tr></table>'.PHP_EOL;
?>


Jee, weer zo simpel, ik zit daar weer een uur in mijn boek te zoeken en moeilijk te doen.....bedankt.
Nog twee tips, Elsy:

1) mysql_fetch_assoc is ongeveer een factor twee sneller dan mysql_fetch_object
2) doe aan code formatting. Daardoor wordt het zoveel beter leesbaar:
<?php
echo '<table><tr>';
$kolommen = 2;
//Laat de 10 best bezochte linken zien
$queryKlik = "
SELECT link_naam, url
FROM winkel_linken
ORDER BY kliks
DESC LIMIT 0,10";
$resultKlik = mysql_query($queryKlik) or die ("Sorry maar ik kan de beste 10 winkels niet weergeven, probeer het later opnieuw.");
//geeft de top 10 aan van 1 tot 10
$teller=1;
while ($rowKlik = mysql_fetch_assoc ($resultKlik)) {
echo '<td align="left" class="link10" >';
echo $teller . '.<a href="'. $rowKlik->url.'" target="_blank">'.$rowKlik['link_naam'] . '</a></td>' ;
$teller++;
}
echo '</tr></table>' . PHP_EOL;
?>
Elsy schreef op 04.10.2006 09:32

Uh, Robert....

Misschien is het beter om alle kliks te resetten per maand, anders krijg je wel een erg groot getal erachter te staan. (hoop ik tenminste) En dan is de top 10 ook leuker.

En ik heb even gekeken maar het is mogelijk om cronjobs te maken maar dit is nieuw voor mij.

In het scherm van de cronjobs kan je een periode aangeven waarin elke keer een script aan wordt geroepen.
In jouw geval:

<?php
include('diversen.inc');
$sql="UPDATE tabel SET clicks=0";
$query=mysql_query($sql);
?>

Dit scriptje roep je aan, en je zet een 1 in het veld voor maand. Dan wordt 1 keer in de maand het scriptje aangeroepen, en de clicks gereset.
@Jan

Bedankt voor de tips.
Code formatting moet je waarschijnlijk zelf doen maar als ik de regels niet echt ken weet ik ook niet hoe het hoort. Of heb je daar iets voor dat alles netjes neer wordt gezet.
@robert

Ik heb nu dit gedaan maar waar zet ik dat script neer?
In mijn pagina of op een nieuwe pagina.

By day of month zet je een 1 neer (dan voert die hem elke 1e van de maand 1malig uit.

By command zet je het pad naar je script neer.

Elsy schreef op 04.10.2006 09:53
@Jan

Bedankt voor de tips.
Code formatting moet je waarschijnlijk zelf doen maar als ik de regels niet echt ken weet ik ook niet hoe het hoort. Of heb je daar iets voor dat alles netjes neer wordt gezet.


Codeformatting zou je inderdaad zelf moeten doen, Jan heeft daar al een voorzetje voor gegeven in de query in de code, zoals hij hem liet zien.
Ook een beetje mij fout, want ik werk normaal gesproken wel met code formatting, omdat de code zoveel beter leesbaar is.
(Jan heeft de query over meerdere regels uitgetrokken, dat is het voorbeeld van code-formatting)
Verder dragen natuurlijk ook tabs en dergelijke bij aan de leesbaarheid van de code.


Reageren