Avatar billede dick_turbin Nybegynder
15. oktober 2003 - 09:43 Der er 2 kommentarer

Sammenligne data i et multidimensionelt array

Hej

Jeg er ved at lave en fodboldside, hvor der på en af siderne skal være mulighed for at se stillingen.

Jeg har sat min kode med i slutningen af spørgsmålet. Jeg har forsøgt at kommenterer den så godt som muligt, men hvis I har spørgsmål, skal I da bare skrive, og så vil jeg forsøge at uddybe mit problem.

Jeg kan godt få skrevet de hold ud, som møder hinanden og de får også det rigtige antal point. Problemet er bare, at pointene for et givet hold jo skal lægges sammen. Fx hvis et hold har spillet 2 kampe, og vundet en og spillet en uafgjort, skal holdet have 3+1 point. Jeg har forsøgt forskellige ting, men er ikke kommet op med en løsning :o(

<?php require_once('../../Connections/connKIF.php'); ?>
<?php
mysql_select_db($database_connKIF, $connKIF);
$query_recDato = "SELECT date_format(dato,'%d/%m-%Y') as kdato FROM kampe ORDER BY kampe.dato ASC";
$recDato = mysql_query($query_recDato, $connKIF) or die(mysql_error());
$row_recDato = mysql_fetch_assoc($recDato);
$totalRows_recDato = mysql_num_rows($recDato);

mysql_select_db($database_connKIF, $connKIF);
$query_recPulje = "SELECT * FROM pulje";
$recPulje = mysql_query($query_recPulje, $connKIF) or die(mysql_error());
$row_recPulje = mysql_fetch_assoc($recPulje);
$totalRows_recPulje = mysql_num_rows($recPulje);

//Vælger de hold som er i pulje 5
mysql_select_db($database_connKIF, $connKIF);
$query_recKlubber = "SELECT * FROM holdpulje,pulje,hold WHERE holdpulje.puid=pulje.puid AND holdpulje.hid=hold.hid AND pulje.puid=5";
$recKlubber = mysql_query($query_recKlubber, $connKIF) or die(mysql_error());
$row_recKlubber = mysql_fetch_assoc($recKlubber);
$totalRows_recKlubber = mysql_num_rows($recKlubber);
//variablen hold laves, så den kan anvendes under WHERE i recKampe statementen.
$hold=$row_recKlubber['hid'];
//variablen pulje laves, så den kan anvendes under WHERE i recModstandere statementen.
$pulje=$row_recKlubber['puid'];

//Tæller antallet kampe spillet.
mysql_select_db($database_connKIF, $connKIF);
$query_recKampe = "SELECT count(kampe.spillet) FROM kampe WHERE kampe.hid=$hold AND kampe.spillet = 1";
$recKampe = mysql_query($query_recKampe, $connKIF) or die(mysql_error());
$row_recKampe = mysql_fetch_assoc($recKampe);
$totalRows_recKampe = mysql_num_rows($recKampe);

//Vælger alle hjemmehold, som har spillet deres kamp.
mysql_select_db($database_connKIF, $connKIF);
$query_recHjemmehold = "SELECT * FROM kampe,holdpulje,hold WHERE kampe.hid = holdpulje.hid AND holdpulje.puid=$pulje AND hold.hid=holdpulje.hid AND kampe.spillet=1 AND kampe.hjemme = 1";
$recHjemmehold = mysql_query($query_recHjemmehold, $connKIF) or die(mysql_error());
$totalRows_Hjemmehold = mysql_num_rows($recHjemmehold);

//for-løkken kører så længe, at der er en række af hjemmehold
for ($s=0; $s<$totalRows_Hjemmehold; $s++) {
  $row_recHjemmehold = mysql_fetch_assoc($recHjemmehold);
  $kamp=$row_recHjemmehold['kid'];
  //Vælger alle udehold, som har spillet deres kamp.
  mysql_select_db($database_connKIF, $connKIF);
  $query_recUdehold = "SELECT * FROM kampe, holdpulje,hold WHERE kampe.hid = holdpulje.hid AND kampe.kid = $kamp AND holdpulje.puid =$pulje AND hold.hid=holdpulje.hid AND kampe.spillet = 1 AND kampe.hjemme = 0";
  $recUdehold = mysql_query($query_recUdehold, $connKIF) or die(mysql_error());
  $row_recUdehold = mysql_fetch_assoc($recUdehold);
   
  //Sammenligner holdenes kid for at finde de hold som har mødt hinanden. Der er altid to hold som har den samme kid, et ude- og et hjemmehold.
  if ($row_recHjemmehold['kid'] == $row_recUdehold['kid']) {
    //Sammenligner hjemmeholdenes mål med udeholdenes mål, for at finde vinden eller se om det er endt uafgjort.
    if ($row_recHjemmehold['maal'] == $row_recUdehold['maal']) {
      //Laver en variabel som holder styr på hvem der skal have point.
      $varHjemmePoint = 1;
      $varUdePoint = 1;
      //echo " uafgjort ";
      else if ($row_recHjemmehold['maal'] < $row_recUdehold['maal']){
      $varHjemmePoint = 0;
      $varUdePoint = 3;
      //echo " vinder: ".$row_recUdehold['hid'];
      } else if ($row_recHjemmehold['maal'] > $row_recUdehold['maal']){
      $varHjemmePoint = 3;
      $varUdePoint = 0;
      //echo " vinder: ".$row_recHjemmehold['hid'];
    }
  }
   
  //Et multidimensionelt array laves, som indeholder hid, maal, point og holdnavn for både udeholdene og hjemmeholdene
  $hold = array(  array($row_recHjemmehold['hid'], $row_recHjemmehold['maal'], $varHjemmePoint, $row_recHjemmehold['holdnavn']),
        array($row_recUdehold['hid'], $row_recUdehold['maal'], $varUdePoint, $row_recUdehold['holdnavn']));
       
  echo "<table width=500 border=1>";
  echo "<tr><td>Hid</td><td>Mål</td><td>Point</td><td>Hold</td></tr>";
  //Da der er anvendt et mulitdimensionelt array bruges der et for loop inden i et for loop, for at holde styr på både rækker og kolonner.
  //løkken kører indtil $row < 2, da det er 2 hold som mødes. Et hjemmehold og et udehold.
  for ( $row = 0; $row < 2; $row++ ){
    echo "<tr>\n";
    //Løkken kører indtil $column < 4 da der er 4 rækker i tabellen. Hid, mål, point og hold.
    for ( $column = 0; $column < 4; $column++ ){
      echo "<td>".$hold[$row][$column]."</td>\n";
    }
    echo"</tr>";
  }
  echo "</table>";                   
}
?>

Håber I kan hjælpe mig.
dick_turbin
Avatar billede avminarm Juniormester
15. oktober 2003 - 15:01 #1
hej dick

jeg har ikke kigget din kode igennem, men hvad med at bruge sum eller count i din sql foresprg.

kommer din serie ikke snart på TV igen ;o)
Avatar billede avminarm Juniormester
15. oktober 2003 - 15:02 #2
vis evt. et dump af din databasestruktur
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