Avatar billede martin_shearer Nybegynder
12. december 2006 - 20:49 Der er 30 kommentarer og
1 løsning

hjælp til fremstilling af kode

Hi

Jeg har brug for noget hjælp, da jeg ikke er helt så stærk i php og mysql endnu.

Jeg skal have lavet en kode, der kan tjekke en tabel, for hvor mange gange et navn går igen også skrive et tal ud fra det.

altså skal bruge en kode, kan kan tjekke tabel_a, for hvor mange gange ordet: ord1 går igen også vise det fx sådan her

Ord1 - 435

også skal den så forsætte med at liste alle de andre ord, den finder også skrive altud ud for dem også.

ord1 - 435
ord2 -  22
ord3 -  8

nogen der kan give mig lidt hjlæp, som jeg måske selv kan prøve at lege lidt med.
Avatar billede henninghabor Nybegynder
12. december 2006 - 22:13 #1
SELECT COUNT(id) AS hits FROM tabel_a WHERE Ord1 = 'Ord1'; // Tæller antal forekomster af Ord1 er i kolonnen Ord1 i tabellen tabel_a
Avatar billede coderdk Praktikant
13. december 2006 - 06:45 #2
SELECT ord, COUNT(ord) AS antal FROM tabel GROUP BY ord ORDER BY antal
Avatar billede coderdk Praktikant
13. december 2006 - 06:45 #3
Evt. afsluttes med DESC for at få faldende sortering
Avatar billede martin_shearer Nybegynder
13. december 2006 - 16:04 #4
okay, det var 2 forskellige eksempler, nu er jeg lidt forvirret. hvilket skal jeg benytte ?

kan i evt. også give et eksempel på, hvordan jeg får vist resultatet frem på siden ?
Avatar billede sw_red_6 Nybegynder
13. december 2006 - 16:20 #5
hvis du vil have en liste med ordene så er det coderdk's hvis det kun er et specifikt ord er det henninghabor's du skal bruge.

med udgangspunkt i coderdk's så kan et eksempel se således ud:
$sql = "SELECT ord, COUNT(ord) AS antal FROM tabel GROUP BY ord ORDER BY antal";
$result = mysql_query($sql) or die(mysql_error());
while ($data = mysql_fetch_array($result)) {
echo $data['ord']." - ".$data['antal'];
}
Avatar billede martin_shearer Nybegynder
13. december 2006 - 16:37 #6
sikker bare mig, det sover lidt nu efter en lang  arbejdsdag, men hvorfor kan jeg ikke få det til at virke når jeg indsætter <br> som her:

echo $data['ord']." - ".$data['antal']<br>;
Avatar billede martin_shearer Nybegynder
13. december 2006 - 16:42 #7
er løst :D
Avatar billede martin_shearer Nybegynder
13. december 2006 - 17:25 #8
okay. nu har jeg fået løst noget af det jeg gerne vil.

Nu kunne jeg godt tænke mig at lave en statestik lidt ligesom denne:

www.mail-net.dk/billeder/stat.jpg

Nogen der kan sige lige om, hvordan det gøres ?
Avatar billede intenz Novice
13. december 2006 - 19:47 #9
Du kan bruge jpgraph, men det er nok lidt tungt at kaste sig ud i hvis du ikke er så stærk i php endnu.
http://www.aditus.nu/jpgraph/
Avatar billede martin_shearer Nybegynder
13. december 2006 - 20:21 #10
hvad så, hvis man vil lave den uden grafik. bare hente antallet i hver ´timetal
Avatar billede sw_red_6 Nybegynder
14. december 2006 - 08:47 #11
Det her kunne muligvis gøre det:
<table>
<?php
$sql = "SELECT timetal, COUNT(*) AS antal FROM tabel GROUP BY ord ORDER BY antal";
$result = mysql_query($sql) or die(mysql_error());
while ($data = mysql_fetch_array($result)) {
  echo "<tr><td>".$data['ord']."</td></tr>";
  echo "<tr><td>".$data['antal']."</td></tr>";
}
?>
</table>
Jeg har ikke testet det men det skulle virke
Avatar billede martin_shearer Nybegynder
14. december 2006 - 16:23 #12
med din kode, hvor jeg lige har rettet få ting i, kommer jeg frem til dettte:

15:49:59
4
15:15:07
3
14:05:30
3
19:02:50
3
15:53:45


Det er næsten fint nok, hvis jeg bare kunne fjerne :xx:xx så den gruppede dem efter hele timetal.
min kode ser sådan her ud,
<table>
<?php
$sql = ("SELECT comments, COUNT(*) AS antal FROM odin_112 GROUP BY comments ORDER BY antal DESC LIMIT 0,05");
$result = mysql_query($sql) or die(mysql_error());
while ($data = mysql_fetch_array($result)) {
  echo "<tr><td>".$data['comments']."</td></tr>";
  echo "<tr><td>".$data['antal']."</td></tr>";
}
?>
</table>
Avatar billede sw_red_6 Nybegynder
14. december 2006 - 16:27 #13
der er nogle funktioner der kan manipulere med tid og dato i mysql. hvad er comments-feltet for en type? date, timestamp, noget andet?
Avatar billede martin_shearer Nybegynder
14. december 2006 - 18:25 #14
jeg har disse

id - title - description - comments - pubdate ---------------------------------- datotid 
1 -- TEKST - TEKST 2 ----- 23:53:01 - Sat, 15 Jul 2006 22:53:01 GMT 2006-07-16 - 16:35:01

hjælper det dig ?
Avatar billede martin_shearer Nybegynder
14. december 2006 - 18:28 #15
comments er:
comments  - time

også har jeg også en
datotid  - datetime
Avatar billede sw_red_6 Nybegynder
14. december 2006 - 21:46 #16
prøv med den her:
<table>
<?php
$sql = ("SELECT hour(comments), COUNT(*) AS antal FROM odin_112 GROUP BY comments ORDER BY antal DESC LIMIT 0,05");
$result = mysql_query($sql) or die(mysql_error());
while ($data = mysql_fetch_array($result)) {
  echo "<tr><td>".$data['comments']."</td></tr>";
  echo "<tr><td>".$data['antal']."</td></tr>";
}
?>
</table>

hvis den skal se ud som på billedet så prøv det her:
<?php
$timen = '';
$dataen = '';
$sql = ("SELECT hour(comments), COUNT(*) AS antal FROM odin_112 GROUP BY comments ORDER BY antal DESC LIMIT 0,05");
$result = mysql_query($sql) or die(mysql_error());
while ($data = mysql_fetch_array($result)) {
  $timen .= "<td>".$data['comments']."</td>";
  $dataen .= "<td>".$data['antal']."</td>";
}
echo "<table><tr>$timen</tr><tr>$dataen</tr></table>"

De burde virke begge to. Den eneste forskel hvordan det ser ud på skærmen
Avatar billede martin_shearer Nybegynder
15. december 2006 - 14:29 #17
ingen af dem virker korrekt. den burde jo ikke skulle kunde finde flere ind 24 "kategorier" da den skal gruppere dem efter timetal. og jeg kan finde over 50 forskellige

4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2

hvilket jo ikke helt passer. med det jeg ønsker at få frem.
Avatar billede sw_red_6 Nybegynder
15. december 2006 - 15:11 #18
arh det er vidst også mig der har glemt noget.
Prøv den her:
<?php
$timen = '';
$dataen = '';
$sql = ("SELECT hour(comments), COUNT(*) AS antal FROM odin_112 GROUP BY hour(comments )ORDER BY antal DESC LIMIT 0,05");
$result = mysql_query($sql) or die(mysql_error());
while ($data = mysql_fetch_array($result)) {
  $timen .= "<td>".$data['comments']."</td>";
  $dataen .= "<td>".$data['antal']."</td>";
}
echo "<table><tr>$timen</tr><tr>$dataen</tr></table>"
Avatar billede martin_shearer Nybegynder
15. december 2006 - 15:41 #19
okay, det ser ud til at virke. så er der kun et lille problem tilbage. hvordan finder jeg ud af, hvilken rækkefølge den tæller, altså det første "felt" er det 00:00 også det næste 01:00 osv ?
Avatar billede sw_red_6 Nybegynder
15. december 2006 - 15:46 #20
som det er nu sorterer den efter antal. Hvis den skal sortere efter time-tal så skal der ændres lidt.
<?php
$timen = '';
$dataen = '';
$sql = ("SELECT hour(comments), COUNT(*) AS antal FROM odin_112 GROUP BY hour(comments )ORDER BY hour(comments) DESC LIMIT 0,05");
$result = mysql_query($sql) or die(mysql_error());
while ($data = mysql_fetch_array($result)) {
  $timen .= "<td>".$data['comments']."</td>";
  $dataen .= "<td>".$data['antal']."</td>";
}
echo "<table><tr>$timen</tr><tr>$dataen</tr></table>"

Er ikke lige sikker på det er nødvendigt med den order by men nu går vi med livrem og seler ;o)
Avatar billede martin_shearer Nybegynder
15. december 2006 - 15:58 #21
okay, fint nok, vil det sige at den så starter fra 00:00 nu ?

og hvordan får jeg sat hvert resultat ind i en tabel med timetal under den. altså fx.

Antal: --- 233 - 333 ---- 444 -
Timetal: 00:00 - 01:00 - 02:00 - osv
Avatar billede martin_shearer Nybegynder
15. december 2006 - 15:59 #22
men din seneste kode også har jeg sat limited til 24, får jeg bare dette frem:

325 430 461 436 503 568 600 542 536 527 470 413 423 353 301 269 194 204 150 180 167 203 251 291
Avatar billede martin_shearer Nybegynder
16. december 2006 - 12:03 #23
nogen du evt kan løsningen på ?
Avatar billede martin_shearer Nybegynder
17. december 2006 - 17:40 #24
nogen der kan hjælpe ?
Avatar billede sw_red_6 Nybegynder
18. december 2006 - 14:42 #25
beklager den lange ventetid men jeg har ikke været i nærheden af en PC hele weekenden.
kan du ikke lige prøve den her:
<?php
$timen = '';
$dataen = '';
$sql = ("SELECT hour(comments), COUNT(*) AS antal FROM odin_112 GROUP BY hour(comments )ORDER BY hour(comments) DESC LIMIT 0,05");
$result = mysql_query($sql) or die(mysql_error());
while ($data = mysql_fetch_array($result)) {
  $timen .= "<td>TID: ".$data['comments']."</td>";
  $dataen .= "<td>".$data['antal']."</td>";
}
echo "<table><tr>$timen</tr><tr>$dataen</tr></table>"

Har du evt. et link så jeg selv kan se det?
Avatar billede martin_shearer Nybegynder
18. december 2006 - 17:33 #26
her er hvad jeg har fået ud af din seneste kode
http://www.112-aarhus.dk/viewpage.php?page_id=133
Avatar billede sw_red_6 Nybegynder
18. december 2006 - 21:20 #27
interessant.. så prøver vi den her i stedet for:
<?php
$timen = '';
$dataen = '';
$sql = ("SELECT hour(comments) as tid, COUNT(*) AS antal FROM odin_112 GROUP BY hour(comments )ORDER BY hour(comments) DESC LIMIT 0,05");
$result = mysql_query($sql) or die(mysql_error());
while ($data = mysql_fetch_array($result)) {
//  echo "<pre>"; print_r($data); echo "</pre>";
  $timen .= "<td>TID: ".$data['tid']."</td>";
  $dataen .= "<td>".$data['antal']."</td>";
}
echo "<table><tr>$timen</tr><tr>$dataen</tr></table>"
Avatar billede martin_shearer Nybegynder
18. december 2006 - 21:28 #28
så er vi ved at være der, du kan tjekke det nu
Avatar billede martin_shearer Nybegynder
18. december 2006 - 21:34 #29
er det muligt at lavet noget, så den ikke smadre designet som den gør nu, fx at lave en ny linie efter de første 12 timetal ?
Avatar billede martin_shearer Nybegynder
18. januar 2007 - 14:27 #30
sw_red_6
smid lige et svar ;)
Avatar billede sw_red_6 Nybegynder
18. januar 2007 - 15:15 #31
OK her kommer så et svar.
Virker det hele som du vil have det?
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