Avatar billede edidak.dk Nybegynder
11. januar 2002 - 11:48 Der er 11 kommentarer og
1 løsning

Optælle fundne poster med $num_row

http://dk.php.net/manual/en/function.mysql-num-rows.php

Tjek lige den sidste kommentar:

\"dear philip@cornado.c()m, what you did was wrong because you\'ve put the
LIMIT to 30 in your query, so even if we have 100 records it will always
show a $num_rows of 30.
\"

Hvordan undgår man dette?
Avatar billede php_teddy Nybegynder
11. januar 2002 - 11:49 #1
lader være med at skrive LIMET 0,30 til sidst
Avatar billede php_teddy Nybegynder
11. januar 2002 - 11:51 #2
feks. ser din sådan ud

$query = mysql_query(\"SELECT * FROM
$usertable WHERE $metode LIKE \'%$search%\' LIMIT 0, 30 \")or die(\'\');


så skal du lave den om til

$query = mysql_query(\"SELECT * FROM
$usertable WHERE $metode LIKE \'%$search%\'\")or die(\'\');
Avatar billede edidak.dk Nybegynder
11. januar 2002 - 11:54 #3
Ja, men hvordan laver man så paging?
Avatar billede edidak.dk Nybegynder
11. januar 2002 - 11:55 #4
Jeg har lavet en løsning hvor man kalder DB\'en to gange. En gang for at tælle antal fundne poster og en gang for at trække dataen ud og page dem. Men dette er vist liiiidt for langsomt...
Avatar billede myplacedk Nybegynder
11. januar 2002 - 12:03 #5
I første omgang, når du bare vil vide hvor mange der er, så henter du vel ikke alle data, vel?
Du skal kun bruge
SELECT COUNT(id) FROM....
(eller hvilket felt du nu vil tælle på)

Så tager det forhåbentlig ingen tid.
Avatar billede edidak.dk Nybegynder
11. januar 2002 - 12:06 #6
Jeg vil nu ikke tælle på et felt - jeg vil jo tælle på en søgning (en ikke foruddefineret variabel). Hvordan gør jeg så dette?
Avatar billede myplacedk Nybegynder
11. januar 2002 - 12:09 #7
Det er også det, jeg gør...
Avatar billede myplacedk Nybegynder
11. januar 2002 - 12:10 #8
Tag din oprindelige query og fjern \"LIMIT\"-delen, som du allerede har gjort.
Så fjerner du felt-listen (altså den liste du skriver mellem SELECT og FROM), og skriver i stedet \"COUNT(id)\", hvor \"id\" er et felt der er udfyldt i alle rækkerne.
Avatar billede edidak.dk Nybegynder
11. januar 2002 - 12:14 #9
Jeg forstår - prøver det lige af og vender tilbage!
Avatar billede erikjacobsen Ekspert
11. januar 2002 - 12:47 #10
count(*) bør være hurtigere.
Avatar billede myplacedk Nybegynder
11. januar 2002 - 13:04 #11
erikjacobsen > Hmm.. Jeg har fået begge dele at vide, men har egentlig aldrig tjekket det. :)
Avatar billede morw Nybegynder
12. januar 2002 - 21:40 #12
Hmm jeg ville lave en lille test på hastighed men det gav sku ikke noget.

mysql> select count(bruger_id) from cl_relationer;
+------------------+
| count(bruger_id) |
+------------------+
|          126000 |
+------------------+
1 row in set (0.00 sec)

mysql> select count(*) from cl_relationer;
+----------+
| count(*) |
+----------+
|  126000 |
+----------+
1 row in set (0.00 sec)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester