Avatar billede latrell Nybegynder
31. december 2006 - 17:52 Der er 12 kommentarer og
1 løsning

Tælle antal artikler

Hej Eksperter, jeg har prøvet at lave et script her der laver en top3 liste over hvem der har skrevet flest artikler. Det vil dog ikke helt virke.

-------------------

<?php
mysql_select_db($database_habbomedia, $habbomedia);
$query_topforfatter = "SELECT COUNT(forfatter) AS antal, forfatter FROM artikler WHERE godkendt = 'ja' GROUP BY forfatter ORDER BY COUNT(forfatter) DESC";
$topforfatter = mysql_query($query_topforfatter, $habbomedia) or die(mysql_error());
//$row_topforfatter = mysql_fetch_assoc($topforfatter);
$totalRows_topforfatter = mysql_num_rows($topforfatter);
?>
<br />
<table width="100%" border="0" cellpadding="0">
<?php while ($row_topforfatter = mysql_fetch_assoc($topforfatter)) { ?>
  <tr>
    <td><?php echo $row_topforfatter['forfatter']; ?></td>
  </tr>
  <?php } ?>
</table>

-------------------

Den skriver 'Invalid use of group function'

På forhånd tak
Avatar billede windcape Praktikant
31. december 2006 - 18:10 #1
jo ingen grund til at bruge GROUP BY i det hele taget.

$sql = "SELECT
                COUNT(forfatter) AS antal
              ,forfatter
        FROM
                artikler
        WHERE
                godkendt = 'ja'
        ORDER BY
                antal DESC
        LIMIT 3
        ";

burde virke fint nok. Jeg tillod mig også at tilføje LIMIT 3, da du ville have en TOP 3 :-)
Avatar billede latrell Nybegynder
31. december 2006 - 18:13 #2
Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
Avatar billede windcape Praktikant
31. december 2006 - 18:14 #3
tror liiiige du skal poste din SQL struktur ;)
Avatar billede latrell Nybegynder
31. december 2006 - 18:17 #4
<?php
mysql_select_db($database_habbomedia, $habbomedia);
$query_topforfatter = "SELECT COUNT(forfatter) AS antal,forfatter FROM artikler WHERE godkendt = 'ja' ORDER BY antal DESC LIMIT 3";
$topforfatter = mysql_query($query_topforfatter, $habbomedia) or die(mysql_error());
//$row_topforfatter = mysql_fetch_assoc($topforfatter);
$totalRows_topforfatter = mysql_num_rows($topforfatter);
?>
<br />
<table width="100%" border="0" cellpadding="0">
<?php while ($row_topforfatter = mysql_fetch_assoc($topforfatter)) { ?>
  <tr>
    <td><?php echo $row_topforfatter['forfatter']; ?></td>
  </tr>
  <?php } ?>
</table>

<?php
mysql_free_result($topforfatter);
?>
Avatar billede windcape Praktikant
31. december 2006 - 19:14 #5
Jeg snakkede om database strukturen, ikke din PHP kode. Din PHP er faktisk totalt ligegyldig i dette spørgsmål.
Avatar billede erikjacobsen Ekspert
31. december 2006 - 19:26 #6
Du skal have en group by, og du bør kunne:

$query_topforfatter = "SELECT COUNT(*) AS antal, forfatter FROM artikler WHERE godkendt = 'ja' GROUP BY forfatter ORDER BY antal DESC";
Avatar billede windcape Praktikant
31. december 2006 - 19:28 #7
En GROUP BY kan vel undgåes med en bedre database stuktur :p
Avatar billede latrell Nybegynder
01. januar 2007 - 15:42 #8
erik smide du et svar? ;)
Avatar billede latrell Nybegynder
01. januar 2007 - 15:42 #9
og mange tak for hjælpen til begge to :)
Avatar billede erikjacobsen Ekspert
01. januar 2007 - 15:54 #10
Jeg samler slet ikke på point, tak.
Avatar billede latrell Nybegynder
02. januar 2007 - 00:32 #11
Det kan være i kan hjælpe mig med endnu et problem så *SS*

Den skal kun tælle ud fra de artikler der er skrevet indenfor det sidste år. Jeg troede jeg kunne løse det sådan her:

$query_topforfatter = "SELECT COUNT(*) AS antal, forfatter FROM artikler WHERE godkendt = 'ja' AND tid > CURRENT_DATE() - INTERVAL 365 DAY) GROUP BY forfatter ORDER BY antal DESC";

Men den gik ikke.... har i nogle forslag? :)
Avatar billede latrell Nybegynder
02. januar 2007 - 00:42 #12
Jeg reddede den så med:

$query_topforfatter = "SELECT COUNT( * ) AS antal, forfatter FROM artikler WHERE godkendt = 'ja' AND tid > '".Date("Y-m-d",Date(Time()) - (365 * 86400))." 00:00:00' GROUP BY forfatter ORDER BY antal DESC"

i stedet.. ellers tak, jamen jeg lukker bare så.. igen tak for hjælpen :)
Avatar billede latrell Nybegynder
02. januar 2007 - 00:42 #13
svar
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

Seneste spørgsmål Seneste aktivitet
I dag 10:21 Ny printer, men hvilken Af mort1 i Printere
I går 19:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging