Avatar billede Niels15 Nybegynder
23. december 2015 - 00:02 Der er 5 kommentarer

Tabel til totaler

Hej Ekspert jeg er ny inden for php og jeg mangler lidt hjælp til følgendene. At få lavet en række/tabel efter den sidste <hr> hvor jeg for alle scorene lagt sammen i en celle og alle indg. lagt sammen i en celle samt og en celle hvor højste serie fremgår og en celle hvor totalscore / totalindg. Håber i forstår hvad jeg mener,nedenfor kan ses hvordan jeg har gjort indtil nu

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Niels</title>
<style type="text/css">

body {
    padding-top: 50px;
}

table {
    border-collapse: collapse;
    width: 60%;
    font-size: 12pt;
   
}

table,th,td {
    border: 0px solid black;
}

th {
    background-color: white;
   
}






</style>
</head>

<body>
<center><h3>Niels <br><br>Sæson 1516<br><br>Licens : 1236</h3></center>
<hr>

<center>

    <table>

        <tr>
       
        <td style="padding-left:10px;color:white;background-color:black;">Dato</td>
        <td style="padding-left:10px;color:white;background-color:black;">Sæson</td>     
        <td style="padding-left:10px;color:white;background-color:black;">Turnering</td>
        <td style="padding-left:10px;color:white;background-color:black;">Score</td>
        <td style="padding-left:10px;color:white;background-color:black;">Indg.</td>
        <td style="padding-left:10px;color:white;background-color:black;">Serie</td>
        <td style="padding-left:10px;color:white;background-color:black;">Snit</td>
       
       
        </tr>


<?php


$con = mysqli_connect("?", "?", "", "?") or die("error connection");

$query = "SELECT dato,sæson,turnering,score,indg,serie,(score/indg) AS snit FROM ?";

$result = mysqli_query($con, $query);

while ($row = mysqli_fetch_array($result)) {
   
    echo "<tr>";
    echo "<td>".$row["dato"]."</td>";
    echo "<td>".$row["sæson"]."</td>";
    echo "<td>".$row["turnering"]."</td>";
    echo "<td>".$row["score"]."</td>";
    echo "<td>".$row["indg"]."</td>";
    echo "<td>".$row["serie"]."</td>";
   
    echo "</tr>";
   
}


    ?>
<hr>
 
</table>

</center>
</body>
</html>

Med venlig hilsen Niels
Avatar billede olsensweb.dk Ekspert
23. december 2015 - 01:18 #1
kig på disse sql functioner
http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_max
http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_sum
http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_avg


alternativt skal vi lave sammenlægningen i PHP evt via array's
http://php.net/manual/en/function.array-sum.php
http://php.net/manual/en/function.max.php


ellers skal det gøres manuelt i PHP via nogle temp varible
kig evt på
http://www.eksperten.dk/spm/1005776#reply_8193222
filen valgt.php

hvor jeg anvender disse tmp variable
$sum_Energi = 0;
$sum_protein = 0;
$sum_fedt = 0;
$sum_kulhydrat = 0;
Avatar billede olsensweb.dk Ekspert
23. december 2015 - 09:20 #2
du får nok et problem med sæson, æøå i collonne navne er noget rod, du kan løse det ved at bruge backtick omkring collonne navnet, men jeg vil anbefale du omdøber collonnen

din PHP kunne se sådan ud lidt hurtigt (utested)
 
<?php
    $con = mysqli_connect("?", "?", "", "?") or die("error connection");
    $query = "SELECT dato,`sæson`,turnering,score,indg,serie, (score/indg) AS snit FROM din_tabel";
    $result = mysqli_query($con, $query);
    $sum_score = 0;
    $sum_indg = 0;
    $max_serie = 0;
    while ($row = mysqli_fetch_array($result)) {
        $sum_score += $row["score"];
        $sum_indg += $row["indg"];
        if ($row["serie"] > $max_serie){ $max_serie = $row["serie"];}
        echo "<tr>";
        echo "<td>" . $row["dato"] . "</td>";
        echo "<td>" . $row["sæson"] . "</td>";
        echo "<td>" . $row["turnering"] . "</td>";
        echo "<td>" . $row["score"] . "</td>";
        echo "<td>" . $row["indg"] . "</td>";
        echo "<td>" . $row["serie"] . "</td>";
        echo "<td>" . $row["snit"] . "</td>";               
        echo "</tr>";
    }
    echo "<tr>";
    echo "<td>avg</td>";
    echo "<td>" . ($sum_score / $sum_indg) . "</td>";
    echo "<td>sum</td>";
    echo "<td>" . $sum_score . "</td>";
    echo "<td>" . $sum_indg . "</td>";
    echo "<td>" . $max_serie . "</td>";
    echo "<td></td>";
    echo "</tr>";
?>
Avatar billede Rune1983 Ekspert
05. januar 2016 - 11:59 #3
Mener koden skal være sådan? Får man ikke en fejl ellers.
while ($row = $result->fetch_array())
Avatar billede olsensweb.dk Ekspert
05. januar 2016 - 12:44 #4
#3
man kan i mysqli skrive i procedural og oop style, og blande som man har lyst


$row = $result->fetch_array(MYSQLI_ASSOC); // OOP style

gør det sammen som
$row = mysqli_fetch_array($result,MYSQLI_ASSOC); // procedural style 

man har procedural style med i mysqli for at gøre det nemt at skifte fra det gamle mysql API til mysqli.

se hvor meget det ligner det gamle API
$row = mysql_fetch_array($result, MYSQL_ASSOC);

fremtiden er at skrive OOP style, og skifter du API til PDO har du "kun" OOP style

jeg skrev coden i procedural style da spørgeren havde valgt dette.
personligt bruger jeg ikke mysql/mysqli mere, men har valgt at skive i PDO, men har været med så længe at jeg også har anvendt de andre

mysql (fjernet i PHP7)        http://php.net/manual/en/function.mysql-fetch-array.php
mysqli                         http://php.net/manual/en/mysqli-result.fetch-array.php
PDO                            http://php.net/manual/en/pdostatement.fetch.php
Avatar billede Rune1983 Ekspert
06. januar 2016 - 07:21 #5
> Ronols

Jeg er selv begyndt udelukkende at skrive i OOP style grundet jeg læste noget omkring det andet på sigt ophøre.
Tak for en god forklaring på emnet. :-)
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