Avatar billede ej147 Nybegynder
29. januar 2014 - 19:02 Der er 10 kommentarer og
1 løsning

Udregning med php

Jeg er jo ved at lære php og mysql - og jo mere jeg finder ud af, desto mere interessant bliver det.
Men nu har jeg et lille problem, som er følgende:
I mit lille script udregner jeg det samlede antal personer i databasen (fint nok) - men uden at vide hvor mange af dem, der er m (betyder=male) eller f (betyder=female).
Nedenstående script virker altså uden problemer (der er ialt 2754 personer), men jeg tænker, at det må vel også være muligt at udregne hvor mange af de 2754 personer, der er mænd og hvor mange der er kvinder - men i en og samme script.
I tabellen har jeg også et felt, der hedder sex - hvor hver person enten har et m eller f stående.


<?php
include("db.php");
$con=mysqli_connect("","","","gedcom");
mysql_query("SET NAMES 'utf8'");
// Check connection
if (mysqli_connect_error())
  {
  echo "Fejler connect to MySQL: " . mysqli_connect_error();
  }
$data = mysql_query("SELECT COUNT(*) FROM person_st");
?>

<div id="stati">
<form>
<?php
echo "<td width='100' align='center'>Antal personer i databasen ialt:</td>"; 
while($row=mysql_fetch_array($data))

echo "<tr>"; 
echo "<td>" . $row['COUNT(*)'] . "</td>"; 
echo "</tr>"; 

?>
</form>
</div>

Jeg har fundet utallige eksempler på diverse udregninger, men jeg kan altså ikke se hvordan man skal gøre det. Er der evt. en af jer der kan give et godt råd til løsning?
mvh.
Avatar billede arne_v Ekspert
29. januar 2014 - 19:06 #1
SELECT sex,COUNT(*) FROM person_st GROUP BY sex
Avatar billede ej147 Nybegynder
29. januar 2014 - 19:15 #2
Nej, den dur desværre ikke - har prøvet :-)

Resultatet bliver dette:

Antal personer i databasen ialt:3013721352
Avatar billede arne_v Ekspert
29. januar 2014 - 19:32 #3
Hvad giver:

$data = mysql_query("SELECT sex,COUNT(*) AS n FROM person_st GROUP BY sex");

...

while($row=mysql_fetch_array($data))
{
echo "<tr>";
echo "<td>" . $row['sex'] . "</td>";
echo "<td>" . $row['n'] . "</td>";
echo "</tr>";
}
Avatar billede ej147 Nybegynder
29. januar 2014 - 19:40 #4
Dette resultat:

Antal personer i databasen ialt:30F1372M1352
Avatar billede ej147 Nybegynder
29. januar 2014 - 19:46 #5
Jeg ved ikke, om man skal brug et felt mere at beregne det på. Er det tilfældet har jeg også disse i samme tabel:
persID, fornavn, efternavn, sex o.sv. o.s.v ...
Avatar billede arne_v Ekspert
29. januar 2014 - 19:46 #6
1372 F og 1352 M - er det korrekt?

jeg ved ikke hvorfor du ikke faar udskrevet din tabel, men det maa ogsaa kunne bringes til at virke
Avatar billede ej147 Nybegynder
29. januar 2014 - 19:58 #7
Resultatet blev:
Antal personer i databasen ialt:30F1372M1352

Hvis man splitter resultatet op (som du gør) så er det netop
f 1372 - m 1352.
Umiddelbart kunne det godt være rigtigt...., dog undrer det mig da det samlede antal personer er 2754 - og det bliver det her ikke. Så skal der være 30 personer uden køn og det er ikke tilfældet.
Underligt....
Avatar billede ej147 Nybegynder
29. januar 2014 - 19:59 #8
Det er så måske de 30 der står først i resultatet???
Avatar billede arne_v Ekspert
29. januar 2014 - 20:07 #9
Tror jeg.

Men faa da den formatering paa plads saa du kan laese output.
Avatar billede ej147 Nybegynder
29. januar 2014 - 20:25 #10
Har chekket andet steds og det passer med at der er 30 børn, jeg ikke aner om de er drenge eller piger, altså er udregningen korrekt.
Tusind tak for hjælpen - smid venligst et svar :-)
mvh
Avatar billede arne_v Ekspert
29. januar 2014 - 20:31 #11
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