Avatar billede nizo Nybegynder
08. maj 2005 - 10:32 Der er 19 kommentarer og
1 løsning

Problem med Count

Det har aldrig rigtig lykkedes for mig at lave en Count af fx. en SQL query, det vil bare ikke virke, ingen fejl eller noget det virker bare ikke! Nogen der ka forklarer mig hvordan man bruger det paa fx. denne query:

$query = mysql_query("SELECT * FROM profiler WHERE username = '$username'");
while ($row = mysql_fetch_assoc($query)) {
}
?>
Avatar billede busschou Praktikant
08. maj 2005 - 10:36 #1
$query = mysql_query("SELECT COUNT(*) FROM profiler WHERE username = '$username'");
$antal = mysql_result($query,0);
---
sådan noget lignende du mener?
Avatar billede busschou Praktikant
08. maj 2005 - 10:37 #2
Hvis username er unikt tæller den selvfølgelig så kun 1 eller 0
Avatar billede busschou Praktikant
08. maj 2005 - 10:40 #3
Hvis det er det du mener. Så er forklaringen at $query altid indeholder de funde records. Da der i princippet kunne være flere. Så vælger $antal det første (0) resultat i $query. Når man laver en COUNT kommer der kun et resultat
Avatar billede nizo Nybegynder
08. maj 2005 - 10:40 #4
Ja det var noget i den stil, kan man saa ikke lave det paa denne her maade:

$query = mysql_query("SELECT COUNT(id) FROM profiler WHERE username = '$username'");
$antal = mysql_result($query,0);

?
Avatar billede busschou Praktikant
08. maj 2005 - 10:42 #5
jo præcis. Så tæller den antal id hvor username er lig det givne
Avatar billede nizo Nybegynder
08. maj 2005 - 10:43 #6
Ok og man kan ogsaa gøre det uden en WHERE string?
Avatar billede busschou Praktikant
08. maj 2005 - 10:44 #7
Men du får kun antallet.
Hvis du alligevel skal loope igennem bagefter så kan du undlade din COUNT og i stedet benytte mysql_num_rows
Se evt her for gode ideer
http://dk2.php.net/manual/en/function.mysql-num-rows.php
Avatar billede busschou Praktikant
08. maj 2005 - 10:45 #8
Ja ja klart
SELECT COUNT(id) FROM profiler >> Den tæller samtlige id i din tabel
SELECT COUNT(id) FROM profiler WHERE username = '$username' >> Den tæller samtlige id i din tabel hvor username er lig $username
Avatar billede nizo Nybegynder
08. maj 2005 - 10:45 #9
Ja det tror jeg ser mere forfuftig ud! Jeg prøver lige..
Avatar billede busschou Praktikant
08. maj 2005 - 10:45 #10
Det kommer jo lidt an på hvad du skal bruge det til?
Avatar billede nizo Nybegynder
08. maj 2005 - 10:53 #11
Nu har jeg prøvet med num rows da den fandt én row i db'en der var lig med WHERE skrev den "1" da den fandt to skrev den "22"
Jeg brugte denne kode:

$qw = mysql_query("SELECT * FROM profiler WHERE status = 5") or die(mysql_error());
$num_rows = mysql_num_rows($qw);
Avatar billede nizo Nybegynder
08. maj 2005 - 10:58 #12
Og hvis den finder 3 staar der "333"..
Avatar billede busschou Praktikant
08. maj 2005 - 11:06 #13
ok det var strange - det burde den da vist ikke
Hvad skal du bruge det til?
Man kan jo som "nød løsning" selv tælle med i sin while løkke
Avatar billede nizo Nybegynder
08. maj 2005 - 11:19 #14
Jeg ska bruge det til at finde de bruger der har status 5 og saa vise dem paa en liste hvor der saa ska være et echo om hvor mange der er paa listen og hvis der ingen er skal der staa noget med "Ingen bruger på listen!"..
Avatar billede busschou Praktikant
08. maj 2005 - 11:23 #15
ok mit bedste bud er sådan her
---
$query = "SELECT * FROM profiler WHERE status = 5";
$result = mysql_query($query) or die(mysql_error());
$num_rows = mysql_num_rows($result);
if ($num_rows){
  while ($myrow = mysql_fetch_row($result)){
      echo"$num_rows online nu";
  }
}else{
  echo"Ingen brugere på listen";
}
Avatar billede busschou Praktikant
08. maj 2005 - 11:24 #16
Hvis $num_rows viser galt så aner jeg ikke hvorfor...desværre ikke :o(.. burde den ikke
Avatar billede nizo Nybegynder
08. maj 2005 - 11:34 #17
Der er stadig noget galt nu viser den "2 online nu2 online nu" hvis der er to paa :S
Avatar billede busschou Praktikant
08. maj 2005 - 11:36 #18
nå ja hehe udskriften skal jo på før løkken ;o)
----
$query = "SELECT * FROM profiler WHERE status = 5";
$result = mysql_query($query) or die(mysql_error());
$num_rows = mysql_num_rows($result);
if ($num_rows){
  echo"$num_rows online nu";
  while ($myrow = mysql_fetch_row($result)){
      //Din egen udskrift af brugere her
  }
}else{
  echo"Ingen brugere på listen";
}
Avatar billede nizo Nybegynder
08. maj 2005 - 11:45 #19
Giv et svar :o) Det virker perfekt!
Avatar billede busschou Praktikant
08. maj 2005 - 11:49 #20
oki .. dejligt det virker :o)
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