13. august 2005 - 04:58 Der er 8 kommentarer og
2 løsninger

Optæl antal rækker i databasen

Hej,

Jeg vil gerne optælle hvor mange billeder mine brugere hver har uploadet.
Min database er lavet så for hvert billede de uploader bliver der smidt en række ind i databasen med deres brugerID og billedets navn.
Så, som sagt, hvis jeg vil tælle op hvor mange billeder de hver har uploadet skal jeg tælle hvor mange der er af hvert ID.
Hvordan gør jeg det?

På forhånd mange tak!
Avatar billede sukos Juniormester
13. august 2005 - 06:34 #1
Hvis du allerede kender brugerid
$count = mysql_query("SELECT COUNT(id) FROM tabel WHERE brugerID = ". $userid ."") or die (mysql_error());
echo mysql_result($count, 0);
Avatar billede busschou Praktikant
13. august 2005 - 08:08 #2
og hvis du ikke har et id felt i din tabel så tæller du selvfølgelig bare på brugerID
--
$count = mysql_query("SELECT COUNT(brugerID) FROM tabel WHERE brugerID = ". $userid ."") or die (mysql_error());
echo mysql_result($count, 0);
--
Hvis du skal bruge rækkerne i en løkke så kan du evt også bare hive dem normalt ud og så benytte mysql_num_rows , http://dk2.php.net/mysql_num_rows
--
$result = mysql_query("SELECT * FROM tabel WHERE brugerID = ". $userid ."") or die (mysql_error());
$num_rows = mysql_num_rows($result);
--
Derved kan du også køre en løkke på dit udtræk, hvis det er :o)
Avatar billede nielle Nybegynder
13. august 2005 - 09:09 #3
$sql = "SELECT brugerID, count(*) AS antalBilleder FROM uploads GROUP BY  brugerID ORDER BY brugerID"
$result = mysql_query($sql);

while ($row = mysql_fetch_assoc($result)) {
    echo "Bruger: " . $row["brugerID"] . ", Antal uploads: " . $row["antalBilleder"];
}
Avatar billede nielle Nybegynder
13. august 2005 - 09:11 #4
Noget gik galt ved min cut'n'paset. Indlægget i sin helhed:

Hvis de er alle brugere du skal have optalt for på en gang, så er løsningen at bruge GROUP BY:

SELECT brugerID, count(*) AS antalBilleder FROM uploads GROUP BY  brugerID ORDER BY brugerID

En stump kode for at udskrive, kunne se sådan her ud:

$sql = "SELECT brugerID, count(*) AS antalBilleder FROM uploads GROUP BY  brugerID ORDER BY brugerID"
$result = mysql_query($sql);

while ($row = mysql_fetch_assoc($result)) {
    echo "Bruger: " . $row["brugerID"] . ", Antal uploads: " . $row["antalBilleder"];
}

Hvis du allerede kender dit brugerID, så er den tilsvarende kode allerede beskrevet af mine to distingverede med-Eksperter ovenfor. :^)
Avatar billede jakobdo Ekspert
13. august 2005 - 10:28 #5
Nielle: En lille detalje, count(*) er overkill, det trækker alle data ud af tabellen og giver derfor databasen mere arbejde end nødvendigt! :o)
Avatar billede nielle Nybegynder
13. august 2005 - 10:44 #6
Nu er jeg ikke specialist i de finere detaljer bag implementereingen af diverse database-løsninger, men jeg kan ikke se hvorfor at count(*) skulle belaste databasen mere end f.eks. count(brugerID); Jeg er sikker på at SQL-databasemotoren i langt de fleste tilfælde er optimeret til at genkende sådan noget som count(*) og ved hvordan det kan optimeres bedst muligt.

Men jeg er vil da ikke argumentere imod at man ikke lige så godt kan bruge denne variation:

SELECT brugerID, count(brugerID) AS antalBilleder FROM uploads GROUP BY  brugerID ORDER BY brugerID
13. august 2005 - 12:33 #7
Mange tak for hjælpen. Da det var nielle der kom med det rigtige svar vil jeg bede dig om at lægge et svar. Hvis I andre har lyst må i også lægge et svar da i kom først med også rigtige svar (mit spm. var lidt dårligt formuleret!).

Igen, mange tak for hjælpen!
Avatar billede busschou Praktikant
13. august 2005 - 12:36 #8
oki doki, godt det kom til at virke :o)
Avatar billede nielle Nybegynder
13. august 2005 - 12:36 #9
Svar :^)
Avatar billede sukos Juniormester
13. august 2005 - 16:47 #10
nada til mig!
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