start med at slette tbl_year_interval og gå tilbage til den oprindelige, tbl_age_interval
og tæl brugerens aktuelle år 1 op, hvis denne fylder senere på året.
iden med at lave tbl_year_interval der dynamisk skal opdateres, burde være skudt ned med det sammen.
nedenstående code er ikke gennemtested, eller helt tænk igennem, men prøv at lege med den.
CREATE TABLE `tbl_age_interval` (
`id` int(11) NOT NULL,
`name` varchar(50) COLLATE utf8_danish_ci NOT NULL,
`age_from` int(11) NOT NULL,
`age_to` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_danish_ci;
INSERT INTO `tbl_age_interval` (`id`, `name`, `age_from`, `age_to`) VALUES
(1, 'U09', 0, 9),
(2, 'U11', 10, 11),
(3, 'U13', 12, 13),
(4, 'U15', 14, 15),
(5, 'U17', 16, 17),
(6, 'U19', 18, 19);
request_medlemmer.php
<?php
require("connect.php");
$arr = array();
$id = (int) $_GET['hold'];
$sql = "SELECT DISTINCT tbl_medlem.id, tbl_medlem.fornavn, tbl_medlem.efternavn, tbl_medlem.dob FROM tbl_map_medlem_hold_traeninger JOIN tbl_medlem ON tbl_medlem.id = tbl_map_medlem_hold_traeninger.medlem_id WHERE tbl_map_medlem_hold_traeninger.hold_id =" . $id;
$rs = $conn->query($sql);
while ($row = $rs->fetch_assoc()) {
$ar = array();
$ar['id'] = $row['id'];
$ar['fornavn'] = $row['fornavn'];
$ar['efternavn'] = $row['efternavn'];
$today = new DateTime('today');
$today_month = $today->format("m");
$dob = new DateTime($row['dob']);
$dob_month = $dob->format("m");
$age = $dob->diff($today)->y;
$ar['age'] = $age; // den aktuelle alder
// skifte aldersgruppe pr. 1. juli
// her mangler lige en if sætning
if($dob_month > $today_month ){
$age++; // fylder senere på året
}
else{
if($dob_month == $today_month ){
if($dob->format("d") > $today->format("d") ){
$age++; // fylder senere på månedet
}
}
}
$sql1 = "SELECT name FROM tbl_age_interval WHERE " . $age . " BETWEEN age_from AND age_to";
$rs1 = $conn->query($sql1);
if ($rs1) {
$row1 = $rs1->fetch_assoc();
$ar['age_group'] = $row1['name'];
} else {
$ar['age_group'] = "unknown";
}
// bør nok joine tbl_traeninger så det kun er træninger i år / inden for de sidste 12 måneder
$sql2 = "SELECT count(id) AS antal FROM tbl_map_medlem_hold_traeninger where hold_id = ".$id." and medlem_id = ".$ar['id'];
$rs2 = $conn->query($sql2);
$row2 = $rs2->fetch_assoc();
$ar['antal'] = $row2['antal'];
$arr[] = $ar;
}
echo json_encode($arr);
?>