Avatar billede cyberdude Nybegynder
16. juni 2001 - 13:19 Der er 15 kommentarer og
2 løsninger

én forespørgsel, flere resultater ?

Hejsa.....

Jeg laver denne forespørgsel til min database

$tilmeld = sql(\"SELECT*FROM tilmeld\");
$num = mysql_num_rows($tilmeld);

nu indeholder $num så det total antal tilmeldte..
Jeg har så et felt i databasen der hedder koen (køn) som enten indeholder mand eller dame hvordan får jeg antallet af tilfælde hvor dette felt indeholder dame og antallet hvor det er mand uden at skulle lave endnu 2 forespørgsler til databasen ??

Troede at dette her ville virke.... men jeg tog da vist fejl :-))


$num_mand = mysql_num_rows($tilmeld[koen=\'mand\']);
Avatar billede niller Nybegynder
16. juni 2001 - 14:04 #1
Du kunne lave et loop der talte to variabler op.

$numkoen = array();
while ($r=mysql_fetch_array($tilmeld)) {
  $numkoen[$tilmeld[\"koen\"]]++;
}

Så indeholder $numkoen[\"mand\"] antallet af mænd, og $numkoen[\"kvinde\"] antallet af kvinder. Men hvis der er *rigtig* mange poster tror jeg det er hurtigere at lave to ekstra queries.
Avatar billede cyberdude Nybegynder
16. juni 2001 - 14:07 #2
p.t. er der ca. 60 poster i tabellen... så jeg gør et forsøg!
Avatar billede cyberdude Nybegynder
16. juni 2001 - 14:14 #3
kan ikke få det til at virke ??

nu ser min kode sådant her ud...

$tilmeld = sql(\"SELECT*FROM tilmeld\");
$num = mysql_num_rows($tilmeld);
$numkoen = array();
while ($r=mysql_fetch_array($tilmeld)) {
  $numkoen[$tilmeld[\"koen\"]]++;
}


?>
   
    <td bgcolor=\"#000000\">
    <table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"2\"><tr><td valign=middle><font size=2 face=\"Arial\" color=\"#ffffff\"><b>Tilmeldte p.t.</b></font></td></tr></table>
    <table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"2\" bgcolor=\"#ffffff\">
<tr><td colspan=2><FONT face=\"Tahoma, Arial\" size=\"3\" COLOR=\"cc0000\">
<DIV ALIGN=\"center\"><B><? echo \"$num\"; ?></B><br><? echo \"$numkoen[mand]\"; ?></div>
</FONT></td></tr>

og ved at indsætte $numkoen[\"mand\"] tegnet (\") i denne sammenhæng giver bare en fejl....
Avatar billede erikjacobsen Ekspert
16. juni 2001 - 14:16 #4
select koen,count(koen) as antal from tilmeld group by koen
Avatar billede cyberdude Nybegynder
16. juni 2001 - 14:19 #5
øhhh erik.. hvordan skal det indsættes...??
sådant her....
$tilmeld = sql(\"select koen,count(koen) as antal from tilmeld group by koen\");
eller hva ??
og hvordan får jeg det så ud igen i
total
mænd
damer
???
Avatar billede cyberdude Nybegynder
16. juni 2001 - 15:36 #6
Kan ikke få det til at fungere... hvis jeg skriver

$tilmeld = sql(\"select koen,count(koen) as antal from tilmeld group by koen\");
$num = mysql_num_rows($tilmeld);
echo \"$num\";

så retunere den bare 2 hvilket jeg vil tro er rigtigt nok, da der i tabellen jo kun findes enten mand eller dame hvilket jo er 2 forskellige...... men så retunere den ikke det totale antal mere....??
Avatar billede erikjacobsen Ekspert
16. juni 2001 - 16:18 #7
eller også hedder det count(*), det må du lige prøve

Du får et resultat med 2 rækker. En for mænd, og en for kvinder. Prøv
den lige i ren SQL først.
Avatar billede alvion Nybegynder
16. juni 2001 - 16:28 #8
cyberdude -> Kan du ikke bare lægge de to tal sammen, så har du totalen :-)

$tilmeld = sql(\"select koen,count(koen) as antal from tilmeld group by koen\");
$total = 0;
while ($row = mysql_fetch_array($tilmeld)) {
  echo \"${row[\"koen\"]} = ${row[\"antal\"]} <br>\";
  $total += $row[\"antal\"];
}
echo \"Total = $total\";
Avatar billede niller Nybegynder
16. juni 2001 - 19:14 #9
Hmm, måske skal du rette linien (fra mit forslag):

$numkoen[$tilmeld[\"koen\"]]++;

til

$numkoen[\"{$tilmeld[\\\"koen\\\"]}\"]++;

men jeg ved ikke om det vil virke :-)
Avatar billede dark-nisse Nybegynder
18. juni 2001 - 08:28 #10
Det burde virke bare husk at connect! og husk at det hedder Mysql_query ikke sql...

-Mathis
Avatar billede dark-nisse Nybegynder
18. juni 2001 - 08:30 #11
$tilmeld = mysql_query(\"SELECT*FROM tilmeld\");
$num = mysql_num_rows($tilmeld);



Mener sådan her...
Avatar billede erikjacobsen Ekspert
18. juni 2001 - 09:07 #12
Har du ikke løst det her endnu, cyberdude? Her er en stump kode der virker:

  mysql_connect(\"host\",\"ralle\",\"snøft\");
  mysql_select_db(\"hik\");
  $result=mysql_query(\"select koen,count(koen) from tilmeld group by koen\");
  $total=0;
  while ($row=mysql_fetch_row($result)) {
    print \"$row[0] er der $row[1] gange<br>\\n\";
      $total+=$row[1];
  }
  print \"Ialt er der $total<br>\\n\";
  mysql_free_result($result);


Den udskriver f.eks.:

kvinde er der 1 gange
mand er der 2 gange
Ialt er der 3
Avatar billede alvion Nybegynder
18. juni 2001 - 09:14 #13
Buh Erik! Det er jo en kopi af mit :-)
Avatar billede erikjacobsen Ekspert
18. juni 2001 - 09:58 #14
Nå ja, det havde jeg slet ikke set. Jeg undrede mig bare over at
spørgsmålet stadigvæk var åbent - men jeg havde da læst nogle af
de lidt mere mystiske svar ... :)
Avatar billede alvion Nybegynder
18. juni 2001 - 10:32 #15
\"kreative\" svar :-)
Avatar billede cyberdude Nybegynder
18. juni 2001 - 13:13 #16
jo det hedder bare sql i mine scripts.... da je ghar lavet en funktion til dette istedet for at skrive mysql_query hver gan gjeg vi kontakte databasen... så det får du squ ikke point for.....!

til jer andre jeg prøver det lige!
Avatar billede cyberdude Nybegynder
18. juni 2001 - 15:18 #17
alvino & erik... -> i deler pointene, da erik først kom med selve sql sætningen og derfter kom alvino med resten...
niller -> desværre kan/kunne jeg ikke få dit forslag til at virke!
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