Aantal resultaten uit database
Het onderste script laat alles zien wil graag dat er maar 10 wordt weergegeven en kom er helaas niet zelf uit heb $rows=mysql_num_rows($result); en limit probeert!
Wie weet hoe dat moet
Gr,
Destre
Code (php)
<table>
<tr>
<td><a href=?ratiodata=url&sort=&timelength=>URL</a></td>
<td><a href=?ratiodata=clicksin&sort=&timelength=>In</a></td>
<td><a href=?ratiodata=clicksout&sort=&timelength=>Out</a></td>
<td><a href=?ratiodata=ratio&sort=&timelength=>Ratio</a></td>
</tr>
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
if($_GET[ratiodata]==""){$order="url";}
if($timelength=="" OR $timelength=="total")
{
$result=mysql_query("SELECT url,time,count(*) as clicksin,sum(clicks) as clicksout,(count(*)/sum(clicks)) as ratio FROM data_submit_ratio GROUP BY
url ORDER BY $order $sort") or die (mysql_error());
}
elseif($timelength=="today")
{
$daytime=time()-86400;
$result=mysql_query("SELECT url,time,count(*) as clicksin,sum(clicks) as clicksout,(count(*)/sum(clicks)) as ratio FROM data_submit_ratio GROUP BY
url HAVING time>$daytime ORDER BY $order $sort") or die (mysql_error());
}
while($row=mysql_fetch_array($result))
{
@$ratio=$row[clicksin]/$row[clicksout];
$ratio=ceil($ratio*100);
if(array_key_exists($row[url],$replace_site_name)){$site_name=$replace_site_name[$row[url]];}else{$site_name=$row[url];}
?>
if($_GET[ratiodata]==""){$order="url";}
if($timelength=="" OR $timelength=="total")
{
$result=mysql_query("SELECT url,time,count(*) as clicksin,sum(clicks) as clicksout,(count(*)/sum(clicks)) as ratio FROM data_submit_ratio GROUP BY
url ORDER BY $order $sort") or die (mysql_error());
}
elseif($timelength=="today")
{
$daytime=time()-86400;
$result=mysql_query("SELECT url,time,count(*) as clicksin,sum(clicks) as clicksout,(count(*)/sum(clicks)) as ratio FROM data_submit_ratio GROUP BY
url HAVING time>$daytime ORDER BY $order $sort") or die (mysql_error());
}
while($row=mysql_fetch_array($result))
{
@$ratio=$row[clicksin]/$row[clicksout];
$ratio=ceil($ratio*100);
if(array_key_exists($row[url],$replace_site_name)){$site_name=$replace_site_name[$row[url]];}else{$site_name=$row[url];}
?>
<tr>
<td><a href=out.php?url= target=_new></a></td>
<td></td>
<td></td>
<td>%</td>
</tr>
<tr>
<td colspan=4 align=center><a href=?timelength=total>Total</a> - <a href=?timelength=today>Today</a></td
</table>
GROUP BY: Het juiste gebruik ervan
Lees deze tutorial maar eens door, dan zul je zien wat ik bedoel.
Verder is het antwoord op jouw vraag toch echt het gebruik van LIMIT in je query. Als je maximaal 10 resultaten op wilt halen, is de laatste regel in je query dus LIMIT 10.
in je SQL query: LIMIT 10
Ga het eens na lezen en aanpassen
Voordat ik nog een reactie moet plaatsen, wijs ik je er alvast op dat or die() niet de manier is voor foutafhandeling. Fouten handel je netjes af. Je dood geen fouten/tekst/pagina's, je laat ze zien (echo).
HAVING in je query? Wat moet je daarmee? Volgens mij kun je met WHERE keurig een eis stellen aan de records die terug moeten komen. LIMIT 0,10 zorgt ervoor dat je 10 records ziet, te beginnen bij record 0. Oftewel: LIMIT <begin record>,<aantal records>. Maar hier zal Frank het wel niet mee eens zijn.. (LIMIT 10 OFFSET 0 - zal zijn raad zijn).
Ook bedankt jurgen, het werkt maar ga me toch meer verdiepen in de opbouw
Hier is het gebruik evenwel niet juist, mede ook omdat de GROUP BY niet juist toegepast is.
En wat betreft die LIMIT ... OFFSET ..., dat zou ook mijn advies zijn. Probeer je gewoon zoveel mogelijk aan de SQL standaard te houden. Die trucjes van MySQL zijn leuk, maar ze kunnen je later alleen maar in de problemen brengen.
Mijn commentaar op LIMIT in MySQL, is het gebruik van de eerste parameter. De ene keer geeft deze het maximale aantal records aan dat je wilt hebben, de andere keer geeft deze de offset aan. Dat is ongelukkig gekozen.
LIMIT 10
OFFSET 10
Dan is het een stuk duidelijker wat nu waarvoor dient. En duidelijkheid voorkomt bugs.