Avatar billede Slettet bruger
26. december 2003 - 20:30 Der er 35 kommentarer og
1 løsning

at ælle antal i db'en

kan man lave en php code,,,, som connecter til databasen og tæller hvor mange artikler der er sat ind i db'en?
Avatar billede danisher Nybegynder
26. december 2003 - 20:34 #1
Hejsa, ja!

Du kan lave det således:
<?
$hostname = "localhost";
$name = "brugernavn";
$pass = "kodeord";
$dbName = "database";
$tabel = "articles";
mysql_connect ("$hostname", "$name", "$pass");
mysql_select_db("$dbName");

$query = mysql_query ("SELECT id FROM '" . $tabel . "'");
print "Der er " . mysql_num_rows($query) . " i artikel databasen.
?>

Mvh
Avatar billede phpwiz Nybegynder
26. december 2003 - 20:35 #2
eller

SELECT COUNT(id) FROM articles
Avatar billede Slettet bruger
26. december 2003 - 20:50 #3
hmm... virker squ ikke...
Avatar billede danisher Nybegynder
26. december 2003 - 20:52 #4
Hvad er der galt? Hvad siger den?

Har du husket at ændre variablerne?
Avatar billede phpwiz Nybegynder
26. december 2003 - 20:52 #5
<?php
$q = mysql_query("SELECT COUNT(id) as ialt FROM articles");
$r = mysql_fetch_assoc($q);
echo $r['ialt'];
?>
Avatar billede Slettet bruger
26. december 2003 - 20:52 #6
<?
$hostname = "localhost";
$name = "name";
$pass = "pass";
$dbName = "db";
$tabel = "googlogin";
mysql_connect ("$hostname", "$name", "$pass");
mysql_select_db("$dbName");

$query = mysql_query ("SELECT id FROM '" . $tabel . "'");
print "Der er " . mysql_num_rows($query) . " i artikel databasen. ?>
Avatar billede Slettet bruger
26. december 2003 - 20:53 #7
Parse error: parse error in 2.php on line 11
siger den
Avatar billede danisher Nybegynder
26. december 2003 - 20:54 #8
Skriver den bare det ud?
Avatar billede phpwiz Nybegynder
26. december 2003 - 20:55 #9
du mangler en " efter databasen. i sidste linie
Avatar billede Slettet bruger
26. december 2003 - 20:58 #10
<?
$hostname = "localhost";
$name = "name";
$pass = "pass";
$dbName = "db";
$tabel = "googlogin";
mysql_connect ("$hostname", "$name", "$pass");
mysql_select_db("$dbName");

$query = mysql_query ("SELECT id FROM '" . $tabel . "'");
print "Der er " . mysql_num_rows($query) . " i artikel databasen. -->"<-- ?>
Avatar billede Slettet bruger
26. december 2003 - 20:58 #11
er det den det er inde imelle pilen?
Avatar billede Slettet bruger
26. december 2003 - 20:59 #12
fik:
<?php
$q = mysql_query("SELECT COUNT(id) as ialt FROM usr_login");
$r = mysql_fetch_assoc($q);
echo $r['ialt'];
?>
Avatar billede danisher Nybegynder
26. december 2003 - 20:59 #13
Ja.

print "Der er " . mysql_num_rows($query) . " i artikel databasen. ";
?>
Avatar billede phpwiz Nybegynder
26. december 2003 - 21:06 #14
sjovt jeg lavede lige en test på hvilken af metoderne der var hurtigst,

det er lidt op og ned med hvem der gør det hurtigst, men det underlige var at den på et tidspunkt udskrev præcis samme tid på begge typer :

type 1 : 0.000494003295898
type 2 : 0.000494003295898

det er lidt spøjst.
Avatar billede danisher Nybegynder
26. december 2003 - 21:08 #15
Du tænker på, forskellen på en count(id) og bare en select id?
Avatar billede danisher Nybegynder
26. december 2003 - 21:08 #16
PS: Hvordan kalder du den tidstagning der?
Avatar billede phpwiz Nybegynder
26. december 2003 - 21:11 #17
<?php

mysql_connect...........

function getmicrotime(){
  list($usec, $sec) = explode(" ",microtime());
  return ((float)$usec + (float)$sec);
  }


$st1 = getmicrotime();
$q = mysql_query("SELECT COUNT(id) as ialt FROM links");
$r = mysql_fetch_assoc($q);
echo $r[ialt]."<p></p>";
$st2 = getmicrotime();
echo ($st2-$st1);


$st3 = getmicrotime();
$query = mysql_query ("SELECT id FROM links");
print "<br>Der er " . mysql_num_rows($query) . " i artikel databasen.";
$st4 = getmicrotime();
echo "<br><br>".($st4-$st3);
?>
Avatar billede Slettet bruger
26. december 2003 - 21:15 #18
hehe så kom der lige noget helt andet ind i dette spg... heh
Avatar billede danisher Nybegynder
26. december 2003 - 21:16 #19
Finder du ud af det tandpasta?
Avatar billede Slettet bruger
26. december 2003 - 21:21 #20
ja det virker fint
Avatar billede detox Nybegynder
27. december 2003 - 00:39 #21
Men det hurtigste er nok:

SELECT COUNT(*) ialt FROM links
Avatar billede phpwiz Nybegynder
27. december 2003 - 00:55 #22
næh, det er det faktisk ikke, der er ikke den store forskel på de to muligheder, men metode 2 er faktisk en anelse hurtigere.
Avatar billede tefcke Nybegynder
27. december 2003 - 12:03 #23
Vi kan vel blive enig om at den skal tælle det samme antal rækker i begge tilfælde, så forskellen er umiddelbart ikke mærkbart.
Avatar billede phpwiz Nybegynder
27. december 2003 - 12:07 #24
korrekt, men det var også for at se hvilken af funktionerne der var hurtigst,
om det var mysql_num_rows() eller mysql_fetch_assoc()
Avatar billede detox Nybegynder
27. december 2003 - 12:14 #25
Det kommer så nok osse an på tabellen. Jeg testede COUNT(id) og COUNT(*) på 56000 rækker og fik henholdsvis:

0.001170992851257324
0.0005151033401489258

Hvilket jo er næsten dobbelt så hurtigt med COUNT(*).
Avatar billede detox Nybegynder
27. december 2003 - 12:18 #26
Hvorimod:

SELECT id FROM tabel
echo mysql_num_rows($query);

Tog: 2.521243929862976 sek. hvilket er helt uaccebtabelt ;o)
Avatar billede tefcke Nybegynder
27. december 2003 - 13:03 #27
* i forspørgelser burde være deprecated. Den som laver forspørgelsen kan vel sagtens finde ud af at skrive hvad der skal bruges fra databasen. Dessuden er det klart at:
SELECT id FROM tabel
echo mysql_num_rows($query);

tager længer tid, da php er ufatteligt langsomt i forhold til en database. Men 2.5 sek.? Har du nu taget et fornuftigt vægtet gennemsnit?? ;)
Avatar billede detox Nybegynder
27. december 2003 - 13:40 #28
Min pointe er at hvis man ønsker den bedste performance uanset tabellens størrelse, skal man benytte sig af COUNT(*).
Avatar billede Slettet bruger
27. december 2003 - 14:13 #29
detox... hvis jeg vil bruge COUNT(*)... hvordan ser koden så ud?
Avatar billede detox Nybegynder
27. december 2003 - 14:17 #30
echo mysql_result(mysql_query("select count(*) from tabel"),0);
Avatar billede detox Nybegynder
27. december 2003 - 14:19 #31
Eller hvis du bruger dette:

<?
$hostname = "localhost";
$name = "name";
$pass = "pass";
$dbName = "db";
$tabel = "googlogin";
mysql_connect ("$hostname", "$name", "$pass");
mysql_select_db("$dbName");

echo mysql_result(mysql_query("select count(*) from ".$tabel),0);
Avatar billede Slettet bruger
27. december 2003 - 14:20 #32
<?PHP include "db.php" ?>
<? $q = mysql_query("SELECT COUNT(*) as ialt FROM film_frontmovie1 where godkend = 1");
$r = mysql_fetch_assoc($q);
echo "der er ";
echo $r[ialt]."<p></p>";
?>

Kan dette bruges i længden...? Det virker lige nu,.. men i længden tænkte jeg mere på..
Avatar billede detox Nybegynder
27. december 2003 - 14:24 #33
Ja det skulle jeg da mene, eller bare:

<?PHP include "db.php";
echo "der er ".mysql_result(mysql_query("SELECT COUNT(*) FROM film_frontmovie1 where godkend = 1"),0)."<p></p>";
?>
Avatar billede Slettet bruger
27. december 2003 - 14:28 #34
ok takker... ligger du lige et svar..?
Avatar billede detox Nybegynder
27. december 2003 - 14:29 #35
Velbekommen.
Avatar billede Slettet bruger
27. december 2003 - 22:58 #36
og der fik du så dine points... takker og glædelig (bag-)jul
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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