Avatar billede macho Praktikant
11. juni 2004 - 00:53 Der er 19 kommentarer og
1 løsning

Hjælp til at tælle poster fra MySql i PHP

(jeg er helt newbie i php og mysql)

Jeg har én MySql-tabel, indeholdende navn, adresse, tlf.nr. samt bl.a. distance-felt.

Distance-feltet kan enten være "1", "2", "3" eller "4".

Jeg vil gerne have lavet en tabel, som viser antallet af personer, som har meldt sig til hhv. distance "1", "2", "3" og "4", f.eks. sådan:

Distance 1:            11
Distance 2:            22
Distance 3:            9
Distance 4:            43

Hvorledes laver jeg dette?
Avatar billede yellow Nybegynder
11. juni 2004 - 01:09 #1
Er ikke lige 100% på det er mySql kompatibelt, men er da sådan rimelig standard sql udtryk:
SELECT distance,Count(brugerID) as tilmeldte
FROM brugerTabel
GROUP BY distance;
Avatar billede michael_stim Ekspert
11. juni 2004 - 01:10 #2
SELECT Distance-feltet, COUNT(*) FROM tabel_navn GROUP BY Distance-feltet
Avatar billede macho Praktikant
11. juni 2004 - 01:31 #3
Som sagt, så er jeg helt newbie i php og mysql.

Jeg har prøvet mig med nedenstående:

<?php
$db = mysql_connect("localhost", "user", "password");
mysql_select_db("database",$db);
$query = "SELECT distance, COUNT(*) FROM tabel GROUP BY distance";
$result = mysql_query($query);

/* Display results in a table */ 
echo "<center><table cellPadding=2>";
echo "<tr><td><b>Antal deltagere</b></td><td><b>$result</b></td></tr>";
echo "</table>\n";
?>


Men det giver bare dette ubrugelige resultat:
Antal deltagere Resource id #4

Kan du komme med et helt eksempel, inkl. tabel-opbygning?
Avatar billede martinbk Nybegynder
11. juni 2004 - 01:35 #4
prøv med

<?php
$db = mysql_connect("localhost", "user", "password");
mysql_select_db("database",$db);
$query = "SELECT COUNT(*) FROM tabel GROUP BY distance";
$result = mysql_result(mysql_query($query), 0);

/* Display results in a table */ 
echo "<center><table cellPadding=2>";
echo "<tr><td><b>Antal deltagere</b></td><td><b>$result</b></td></tr>";
echo "</table>\n";
?>
Avatar billede thedeathart Nybegynder
11. juni 2004 - 01:40 #5
Resource id #4

det er hvad du har echoet.

du ska nok skrive $result[deltager]

eller hvad din deltager tabel nu hedder
Avatar billede thedeathart Nybegynder
11. juni 2004 - 01:47 #6
forresten så kan du ikke have underrækkker.

du er bør opbygge din database sådan:

navn (tabel)
adresse (tabel)
tlf.nr (tabel)
distance-felt (tabel)

Distance indeholder så 4 rækker: "1", "2", "3" "4".
Avatar billede thedeathart Nybegynder
11. juni 2004 - 01:50 #7
hov.. mig der sidder og sover. undskyld.
Avatar billede macho Praktikant
11. juni 2004 - 01:59 #8
Lige nu er jeg bare totalt forvirret - intet af ovenstående har hjulpet mig på vej endnu! :-(
Avatar billede thedeathart Nybegynder
11. juni 2004 - 02:12 #9
prøv dette her:

<?php
$db = mysql_connect("localhost", "root", "");
mysql_select_db("database",$db);

$q1 = mysql_query("SELECT afstand FROM navn WHERE distanse = 1");
$r1 = mysql_num_rows($q1);

$q2 = mysql_query("SELECT afstand FROM navn WHERE distanse = 2");
$r2 = mysql_num_rows($q2);

$q3 = mysql_query("SELECT afstand FROM navn WHERE distanse = 3");
$r3 = mysql_num_rows($q3);

$q4 = mysql_query("SELECT afstand FROM navn WHERE distanse = 4");
$r4 = mysql_num_rows($q4);

echo "Afstand 1: {$r1} <br>";
echo "Afstand 2: {$r2} <br>";
echo "Afstand 3: {$r3} <br>";
echo "Afstand 4: {$r4} <br>";


?>
Avatar billede thedeathart Nybegynder
11. juni 2004 - 02:16 #10
det tages forbehold for stavefejl
Avatar billede thedeathart Nybegynder
11. juni 2004 - 02:19 #11
det er nok mere dette her du skal have gang i da mysql_num_rows tæller op hvor mange poster der er i dit query. og Where bruges til at angive hvilken værdi distance skal have for at blive talt op
Avatar billede al_dair Nybegynder
11. juni 2004 - 02:21 #12
Resource id #4 kommer af at du mangler at smide ham her ind .. inden du udskriver ..

mysql_fetch_array($result);

Du kan også udskifte array med object
Avatar billede thedeathart Nybegynder
11. juni 2004 - 02:38 #13
altså .. enten skal du have alt data udskrevet ind i et array, eller også skal du tæller antal poster med værdien x op, med mysql_num_rows.

og al_dair, du kan ikke fetche et mysql_result da det bruges helt for sig selv.

martinbk's sidste løsning, tager løsninger i query-række 0, dvs. den først post i tabellen. og det er ligegyldigt om elementet distance har en værdi eller ej.

Det du er ude efter lader til at være en optælling af poster hvor distance har en bestemt værdi. og Det kan gøres på den måde i indlæg 11/06-2004 02:12:44

eller måske på en smartere metode, men det kan jeg ikke lige komme på 02:40 ?? sove ??
Avatar billede martinbk Nybegynder
11. juni 2004 - 04:38 #14
tja thedeathart, jeg vil nu påstå det kan gøres væsentlig nemmere.

if(mysql_select_db("database", mysql_connect("localhost", "user", "pass"))) {
  for($i=1;$i<=4;$i++) {
    $antal = mysql_result(mysql_query("SELECT COUNT(*) AS antal FROM tabel WHERE distance = $i"), 0);
    echo 'Distance '.$i.': '.$antal.'<br>';
  }
}
else {
  echo 'Kunne ikke oprette forbindelse til databasen';
}
Avatar billede sukos Juniormester
11. juni 2004 - 04:53 #15
$get = mysql_query("SELECT distance-felt, COUNT(*) as ialt FROM tabel GROUP BY distance-felt") or die (mysql_error());
while($vis = mysql_fetch_object($get)) {
echo $vis->ialt ." har tilmeldt sig til ". $vis->distance-felt ."<br>";
}

Vis du vil ha' antal tilmeldte

$alle = mysql_query("SELECT COUNT(distancefelt) FROM tabel") or die (mysql_error());
echo mysql_result($alle, 0);
Avatar billede sukos Juniormester
11. juni 2004 - 04:54 #16
hov, den sidste,

$alle = mysql_query("SELECT COUNT(distancefelt) FROM tabel") or die (mysql_error());
echo mysql_result($alle, 0);

mangler en bindestreg i distancefelt!
Avatar billede macho Praktikant
13. juni 2004 - 20:38 #17
sukos: smid lige et svar her, for det var dig, der kom med en løsning, jeg kunne bruge!
Avatar billede michael_stim Ekspert
13. juni 2004 - 21:17 #18
Hvad er der galt med min sql query fra:
Kommentar: michael_stim
11/06-2004 01:10:20
Avatar billede macho Praktikant
13. juni 2004 - 21:20 #19
michael_stim:
Det er såmænd ikke sikkert, at der er noget galt med din sql query, men som jeg starter med at skrive i mit spørgsmål, så er jeg helt ny PHP og MySql og jeg aner ganske enkelt ikke, hvad jeg skal gøre ved dit svar. Hvis nu du have lavet et eksempel med det jeg havde brug for, ja så er det da muligt, at det virker fint! Derimod smed sukos en løsning, som jeg kunne bruge!
Avatar billede sukos Juniormester
14. juni 2004 - 08:32 #20
Du får lige et 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