Aantal resultaten uit database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Destre

destre

22/03/2008 18:45:00
Quote Anchor link
Hallo,
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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php

$replace_site_name
=array(
'url1.com'=>'sitename 1',
'site2.com'=>'sitename 2'
);

$sort=sql_inj_str($sort);
$order=sql_inj_str($_GET[ratiodata]);
$timelength=sql_inj_str($_GET[timelength]);
if($_GET[sort]=="desc"){$sort="asc";}else{$sort="desc";}


?>

<table>
<tr>
<td><a href=?ratiodata=url&amp;sort=
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php print $sort;?>
&amp;timelength=
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php print $timelength;?>
>URL</a></td>
<td><a href=?ratiodata=clicksin&amp;sort=
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php print $sort;?>
&amp;timelength=
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php print $timelength;?>
>In</a></td>
<td><a href=?ratiodata=clicksout&amp;sort=
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php print $sort;?>
&amp;timelength=
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php print $timelength;?>
>Out</a></td>
<td><a href=?ratiodata=ratio&amp;sort=
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php print $sort;?>
&amp;timelength=
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php print $timelength;?>
>Ratio</a></td>
</tr>
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
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];}
?>

<tr>
<td><a href=out.php?url=
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php print $row[url];?>
target=_new>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php print $site_name;?>
</a></td>
<td>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php print $row[clicksin];?>
</td>
<td>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php print $row[clicksout];?>
</td>
<td>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php print $ratio;?>
%</td>
</tr>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
}
?>

<tr>
<td colspan=4 align=center><a href=?timelength=total>Total</a> - <a href=?timelength=today>Today</a></td
</table>
 
PHP hulp

PHP hulp

19/11/2024 14:36:56
 
Joren de Wit

Joren de Wit

22/03/2008 18:49:00
Quote Anchor link
Ik zou allereerst nog maar eens goed naar je queries kijken, die zijn namelijk hartstikke ongeldig. Hoewel MySQL ze wel uitvoert, krijg je onbetrouwbare resultaten terug omdat je de GROUP BY niet op een juiste manier gebruikt.

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.
 
Jurgen assaasas

Jurgen assaasas

22/03/2008 18:51:00
Quote Anchor link
in je SQL query: LIMIT 10
 
Destre

destre

22/03/2008 18:51:00
Quote Anchor link
Thanks Blanche,
Ga het eens na lezen en aanpassen
 
Jesper Diovo

Jesper Diovo

22/03/2008 18:54:00
Quote Anchor link
Hm.. Ik zou beginnen met het zetten van enkele quotes om arraykeys. Daarna zou ik print vervangen door echo. Ik zou ook je code hier even in zijn geheel in de [.code.] en [/.code.] tags te zetten (uiteraard zonder puntjes). Het gevolg is dat wij een duidelijke code te zien krijgen.
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).
 
Destre

destre

22/03/2008 19:00:00
Quote Anchor link
Ook bedankt jurgen, het werkt maar ga me toch meer verdiepen in de opbouw
 
Joren de Wit

Joren de Wit

22/03/2008 19:06:00
Quote Anchor link
@Djemo: HAVING is inderdaad een soort WHERE, het enige verschil is dat je in een HAVING wel aggregate functies zoals SUM() of COUNT() mag gebruiken. In combinatie met een GROUP BY is deze dus prima te gebruiken.

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.
 
Frank -

Frank -

22/03/2008 19:29:00
Quote Anchor link
Offtopic:
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.
 



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.