enkel laagste getallen weergeven
Ik heb iets gemaakt waar ik een klassement mee zou moeten samen stellen.
Ik kan alle gegevens correct opvragen alleen zit ik met het probleem dat er nog een berekening zou moeten bijkomen waar ik niet direct uit geraak en graag jullie hulp van zou willen inroepen.
Zoals het nu is kan je zien als je de link volgt.
http://rietvissers.be/?categorie=2&subcategorie=15&cmenu=15&cmenulink=1
Nu wordt alles opgeteld en het laagste staat bovenaan maar dat is niet zoals het zou moeten zijn.
Voorbeeld.
Er zijn 20 wedstrijden, er moeten minstens 13 wedstrijden worden meegedaan anders valt men af en doet men niet meer mee met het klassement maar het mag wel getoont worden.
Diegene die wel minimum 13 wedstrijden hebben meegedaan moeten worden weergegeven, dat is reeds in orde
Nu is het zo dat je 7 wedstrijden kan aftrekken van je punten totaal als je ze alle 20 hebt mee gedaan, heb je er 19 mee gedaan dan worden de 6 hoogste punten afgetrokken, dus 6wedstrijden met het hoogste punten totaal, doe je er minder mee dan wordt het aantal wedstrijden dat je kan aftrekken ook minder.
Ik weet niet goed hoe ik hier aan kan beginnen om dit juist te krijgen en zou hier graag wat hulp bij krijgen indien mogelijk.
Een voorbeeldje
1,6,22,4,7,9,2,1,1,3,5,4,6,7,16,19,2,3,18,20 = totaal (((156))) ZONDER AFTREK
1,6,(22=)0,4,7,(9=)0,2,1,1,3,5,4,6,(7=)0,(16=)0,(19=)0,2,3,(18=)0,(20=)0 = totaal (((45))) MET AFTREK van 7 wedstrijdne, zo zou het moeten worden.
Dit is het scriptje dat de berekening doet zoals je ze kan zien via de link.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
$wedtype = $_GET["cmenulink"]; // wedstrijdtype opgeven -> 2 = vrije wedstrijden!
echo"<table width=\"750\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\">
<tr><th scope=\"col\">Naam & voornaam</th>\n";
$sql1 = mysql_query ("SELECT * FROM wedstrijdkalender WHERE wedstrijdtypeID = ".$wedtype." GROUP BY hoeveelID ASC" ) or die (mysql_error());
while ($dag = mysql_fetch_assoc($sql1)){// het aantal wedstrijden ophalen
echo"<th scope=\"col\"><a href=\"?categorie=2&subcategorie=14&cmenu=14&cmenulink=".$dag['maandID']."&wedstrijdID=".$dag['wedstrijdID']."\">".$dag['hoeveelID']."é</a></th>\n"; }
$query = mysql_query("SELECT count(*) FROM wedstrijdkalender WHERE wedstrijdtypeID = ".$wedtype."");
$aantal .= mysql_result($query, 0 ,0);
global $aantal;
echo "<th scope=\"col\">Totaal</th>\n </tr>\n";
$sqlid =mysql_query (" SELECT *, COUNT(*),SUM(plaats) FROM wedstrijduitslagen wu
LEFT JOIN wedstrijdkalender wk ON (wu.wedstrijdID = wk.wedstrijdID)
INNER JOIN vissers USING (visserID) WHERE wk.wedstrijdtypeID = ".$wedtype." GROUP BY visserID HAVING COUNT(*) >=13 ORDER BY SUM(plaats) ASC,wk.dag ") or die(mysql_error());
while ($ID = mysql_fetch_array ($sqlid)) {
$uitslag =mysql_query (" SELECT CASE WHEN (wu.visserID IS NULL) THEN 0 ELSE 1 END AS meegedaan,
s.achternaam AS achternaam,
s.voornaam AS naam, wu.wedstrijdID AS wuWID,
wu.plaats AS plaats, wk.wedstrijdID AS wkWID,
wk.wedstrijdtypeID, wk.hoeveelID AS WKH
FROM
wedstrijdkalender AS wk Join vissers AS s
Left Join wedstrijduitslagen AS wu ON (wk.wedstrijdID = wu.wedstrijdID) AND wu.visserID = s.visserID
WHERE wk.wedstrijdtypeID = ".$wedtype." AND s.visserID= ".$ID["visserID"]." ORDER BY wk.hoeveelID,s.visserID ASC ") ;
echo"<tr><td>".$ID["achternaam"]." ".$ID["voornaam"]."</td>";
while ($visID = mysql_fetch_array ($uitslag)) {
if($visID["meegedaan"] == "1"){
echo"<th>".$visID["plaats"]."</th>";
} else{
echo"<th class=\"error\">".$visID["meegedaan"]."</th>";
}}
$totaalpunten = $ID["SUM(plaats)"];
echo"<th><strong>".$totaalpunten."</strong></th></tr>\n";
}
echo"</table>";
?>
$wedtype = $_GET["cmenulink"]; // wedstrijdtype opgeven -> 2 = vrije wedstrijden!
echo"<table width=\"750\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\">
<tr><th scope=\"col\">Naam & voornaam</th>\n";
$sql1 = mysql_query ("SELECT * FROM wedstrijdkalender WHERE wedstrijdtypeID = ".$wedtype." GROUP BY hoeveelID ASC" ) or die (mysql_error());
while ($dag = mysql_fetch_assoc($sql1)){// het aantal wedstrijden ophalen
echo"<th scope=\"col\"><a href=\"?categorie=2&subcategorie=14&cmenu=14&cmenulink=".$dag['maandID']."&wedstrijdID=".$dag['wedstrijdID']."\">".$dag['hoeveelID']."é</a></th>\n"; }
$query = mysql_query("SELECT count(*) FROM wedstrijdkalender WHERE wedstrijdtypeID = ".$wedtype."");
$aantal .= mysql_result($query, 0 ,0);
global $aantal;
echo "<th scope=\"col\">Totaal</th>\n </tr>\n";
$sqlid =mysql_query (" SELECT *, COUNT(*),SUM(plaats) FROM wedstrijduitslagen wu
LEFT JOIN wedstrijdkalender wk ON (wu.wedstrijdID = wk.wedstrijdID)
INNER JOIN vissers USING (visserID) WHERE wk.wedstrijdtypeID = ".$wedtype." GROUP BY visserID HAVING COUNT(*) >=13 ORDER BY SUM(plaats) ASC,wk.dag ") or die(mysql_error());
while ($ID = mysql_fetch_array ($sqlid)) {
$uitslag =mysql_query (" SELECT CASE WHEN (wu.visserID IS NULL) THEN 0 ELSE 1 END AS meegedaan,
s.achternaam AS achternaam,
s.voornaam AS naam, wu.wedstrijdID AS wuWID,
wu.plaats AS plaats, wk.wedstrijdID AS wkWID,
wk.wedstrijdtypeID, wk.hoeveelID AS WKH
FROM
wedstrijdkalender AS wk Join vissers AS s
Left Join wedstrijduitslagen AS wu ON (wk.wedstrijdID = wu.wedstrijdID) AND wu.visserID = s.visserID
WHERE wk.wedstrijdtypeID = ".$wedtype." AND s.visserID= ".$ID["visserID"]." ORDER BY wk.hoeveelID,s.visserID ASC ") ;
echo"<tr><td>".$ID["achternaam"]." ".$ID["voornaam"]."</td>";
while ($visID = mysql_fetch_array ($uitslag)) {
if($visID["meegedaan"] == "1"){
echo"<th>".$visID["plaats"]."</th>";
} else{
echo"<th class=\"error\">".$visID["meegedaan"]."</th>";
}}
$totaalpunten = $ID["SUM(plaats)"];
echo"<th><strong>".$totaalpunten."</strong></th></tr>\n";
}
echo"</table>";
?>
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$array = array(1,6,22,4,7,9,2,1,1,3,5,4,6,7,16,19,2,3,18,20);
sort($array);
echo array_sum(array_slice($array, 0,13));
?>
$array = array(1,6,22,4,7,9,2,1,1,3,5,4,6,7,16,19,2,3,18,20);
sort($array);
echo array_sum(array_slice($array, 0,13));
?>
Begrijp ik goed dat het einddoel is om zo weinig mogelijk punten te hebben, aangezien de wedstrijden met het hoogste aantal punten eraf wordt gehaald? En betekent een 0 dat iemand niet meegedaan heeft?
0 betekend inderdaad dat iemand niet heeft meegedaan en het einddoel is om zo weinig mogelijk punten over te houden.
Daarvoor mogen personen die bv 20 wedstrijden hebben meegedaan, de 7 hoogst behaalde punten van het punten totaal aftrekken.
Als personen minder wedstrijden hebben meegedaan bv 18 dan mogen ze de 5 hoogste punten van het totaal aftrekken.
De gegevens komen hier uit.
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$sqlid =mysql_query (" SELECT *, COUNT(*),SUM(plaats) FROM wedstrijduitslagen wu
LEFT JOIN wedstrijdkalender wk ON (wu.wedstrijdID = wk.wedstrijdID)
INNER JOIN vissers USING (visserID) WHERE wk.wedstrijdtypeID = ".$wedtype." GROUP BY visserID HAVING COUNT(*) >=13 ORDER BY SUM(plaats) ASC,wk.dag ") or die(mysql_error());
?>
$sqlid =mysql_query (" SELECT *, COUNT(*),SUM(plaats) FROM wedstrijduitslagen wu
LEFT JOIN wedstrijdkalender wk ON (wu.wedstrijdID = wk.wedstrijdID)
INNER JOIN vissers USING (visserID) WHERE wk.wedstrijdtypeID = ".$wedtype." GROUP BY visserID HAVING COUNT(*) >=13 ORDER BY SUM(plaats) ASC,wk.dag ") or die(mysql_error());
?>
ik heb je script ff een beetje herschreven naar mijn stijl.
Ik vond het nogal irritant scripten in jouw code.
dit is wat ik er van gebakken heb:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?php
$wedtype = $_GET["cmenulink"]; // wedstrijdtype opgeven -> 2 = vrije wedstrijden!
echo'<table width="750" border="1" cellspacing="0" cellpadding="0">';
echo '<tr>';
echo '<th scope="col">Naam & voornaam</th>';
$sql1 = mysql_query ("SELECT * FROM wedstrijdkalender WHERE wedstrijdtypeID = '".$wedtype."' GROUP BY hoeveelID ASC" ) or die (mysql_error());
while ($dag = mysql_fetch_assoc($sql1))// het aantal wedstrijden ophalen
{
echo '<th scope="col"><a href="?categorie=2&subcategorie=14&cmenu=14&cmenulink='.$dag['maandID'].'&wedstrijdID='.$dag['wedstrijdID'].'">'.$dag['hoeveelID'].'é</a></th>\n';
}
$query = mysql_query("SELECT count(*) FROM wedstrijdkalender WHERE wedstrijdtypeID = '".$wedtype."'");
$aantal = mysql_result($query, 0 ,0);
# wat doet dit hier?
// global $aantal;
echo '<th scope="col">Totaal</th>\n </tr>' . PHP_EOL;
echo '<th scope="col">Totaal met aftrek</th>\n </tr>' . PHP_EOL;
$sqlid = mysql_query ("
SELECT
*,
COUNT(*),
SUM(plaats)
FROM
wedstrijduitslagen wu
LEFT JOIN wedstrijdkalender wk
ON (wu.wedstrijdID = wk.wedstrijdID)
INNER JOIN vissers
USING (visserID)
WHERE
wk.wedstrijdtypeID = '".$wedtype."'
GROUP BY
visserID HAVING COUNT(*) >=13
ORDER BY
SUM(plaats) ASC,
wk.dag
") or die(mysql_error());
while ($ID = mysql_fetch_array ($sqlid))
{
echo '<tr><td>'.$ID["achternaam"].' '.$ID["voornaam"].'</td>';
$uitslag = mysql_query ("
SELECT
CASE WHEN (wu.visserID IS NULL) THEN 0 ELSE 1 END AS meegedaan,
s.achternaam AS achternaam,
s.voornaam AS naam,
wu.wedstrijdID AS wuWID,
wu.plaats AS plaats,
wk.wedstrijdID AS wkWID,
wk.wedstrijdtypeID,
wk.hoeveelID AS WKH
FROM
wedstrijdkalender AS wk
Join vissers AS s
Left Join wedstrijduitslagen AS wu
ON (wk.wedstrijdID = wu.wedstrijdID AND wu.visserID = s.visserID)
WHERE
wk.wedstrijdtypeID = '".$wedtype."'
AND
s.visserID= '".$ID["visserID"]."'
ORDER BY
wk.hoeveelID,
s.visserID ASC
");
$totaal = array();
while ($visID = mysql_fetch_array ($uitslag))
{
if($visID["meegedaan"] == 1)
{
echo '<th>'.$visID["plaats"].'</th>';
$totaal[] = $visID['plaats'];
}
else
{
echo '<th class="error">'.$visID["meegedaan"].'</th>';
}
}
$totaalpunten = $ID["SUM(plaats)"];
echo'<th><strong>'.$totaalpunten.'</strong></th></tr>' . PHP_EOL;
if(count($totaal) >= 13)
{
sort($totaal);
$aftrek = array_sum( array_slice ( $totaal, 0, (count($totaal)-13) ) );
echo '<th><strong>'.($totaalpunten-$aftrek).'</strong></th></tr>' . PHP_EOL;
}
else
{
echo '<th><strong>Gediskwalificeerd</strong></th></tr>' . PHP_EOL;
}
}
echo '</table>';
?>
$wedtype = $_GET["cmenulink"]; // wedstrijdtype opgeven -> 2 = vrije wedstrijden!
echo'<table width="750" border="1" cellspacing="0" cellpadding="0">';
echo '<tr>';
echo '<th scope="col">Naam & voornaam</th>';
$sql1 = mysql_query ("SELECT * FROM wedstrijdkalender WHERE wedstrijdtypeID = '".$wedtype."' GROUP BY hoeveelID ASC" ) or die (mysql_error());
while ($dag = mysql_fetch_assoc($sql1))// het aantal wedstrijden ophalen
{
echo '<th scope="col"><a href="?categorie=2&subcategorie=14&cmenu=14&cmenulink='.$dag['maandID'].'&wedstrijdID='.$dag['wedstrijdID'].'">'.$dag['hoeveelID'].'é</a></th>\n';
}
$query = mysql_query("SELECT count(*) FROM wedstrijdkalender WHERE wedstrijdtypeID = '".$wedtype."'");
$aantal = mysql_result($query, 0 ,0);
# wat doet dit hier?
// global $aantal;
echo '<th scope="col">Totaal</th>\n </tr>' . PHP_EOL;
echo '<th scope="col">Totaal met aftrek</th>\n </tr>' . PHP_EOL;
$sqlid = mysql_query ("
SELECT
*,
COUNT(*),
SUM(plaats)
FROM
wedstrijduitslagen wu
LEFT JOIN wedstrijdkalender wk
ON (wu.wedstrijdID = wk.wedstrijdID)
INNER JOIN vissers
USING (visserID)
WHERE
wk.wedstrijdtypeID = '".$wedtype."'
GROUP BY
visserID HAVING COUNT(*) >=13
ORDER BY
SUM(plaats) ASC,
wk.dag
") or die(mysql_error());
while ($ID = mysql_fetch_array ($sqlid))
{
echo '<tr><td>'.$ID["achternaam"].' '.$ID["voornaam"].'</td>';
$uitslag = mysql_query ("
SELECT
CASE WHEN (wu.visserID IS NULL) THEN 0 ELSE 1 END AS meegedaan,
s.achternaam AS achternaam,
s.voornaam AS naam,
wu.wedstrijdID AS wuWID,
wu.plaats AS plaats,
wk.wedstrijdID AS wkWID,
wk.wedstrijdtypeID,
wk.hoeveelID AS WKH
FROM
wedstrijdkalender AS wk
Join vissers AS s
Left Join wedstrijduitslagen AS wu
ON (wk.wedstrijdID = wu.wedstrijdID AND wu.visserID = s.visserID)
WHERE
wk.wedstrijdtypeID = '".$wedtype."'
AND
s.visserID= '".$ID["visserID"]."'
ORDER BY
wk.hoeveelID,
s.visserID ASC
");
$totaal = array();
while ($visID = mysql_fetch_array ($uitslag))
{
if($visID["meegedaan"] == 1)
{
echo '<th>'.$visID["plaats"].'</th>';
$totaal[] = $visID['plaats'];
}
else
{
echo '<th class="error">'.$visID["meegedaan"].'</th>';
}
}
$totaalpunten = $ID["SUM(plaats)"];
echo'<th><strong>'.$totaalpunten.'</strong></th></tr>' . PHP_EOL;
if(count($totaal) >= 13)
{
sort($totaal);
$aftrek = array_sum( array_slice ( $totaal, 0, (count($totaal)-13) ) );
echo '<th><strong>'.($totaalpunten-$aftrek).'</strong></th></tr>' . PHP_EOL;
}
else
{
echo '<th><strong>Gediskwalificeerd</strong></th></tr>' . PHP_EOL;
}
}
echo '</table>';
?>
Gewijzigd op 01/01/1970 01:00:00 door Boris Mattijssen
Gewijzigd op 01/01/1970 01:00:00 door Boris Mattijssen
Gelieve Niet Bumpen::
SanThe, het was niet de bedoeling hoor om te bumpen, maar drukte per ongeluk 2x op het "quote" knopje ipv "edit" :P
Gewijzigd op 01/01/1970 01:00:00 door Boris Mattijssen