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
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
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 :-)
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
31. december 2006 - 18:14
#3
tror liiiige du skal poste din SQL struktur ;)
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); ?>
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.
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";
31. december 2006 - 19:28
#7
En GROUP BY kan vel undgåes med en bedre database stuktur :p
01. januar 2007 - 15:42
#8
erik smide du et svar? ;)
01. januar 2007 - 15:42
#9
og mange tak for hjælpen til begge to :)
01. januar 2007 - 15:54
#10
Jeg samler slet ikke på point, tak.
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? :)
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 :)
02. januar 2007 - 00:42
#13
svar
Vi tilbyder markedets bedste kurser inden for webudvikling