我有一个包含5列,ID,customerName,dateYear,dateMonth和dateDay的数据库。当用户发送表单时,日期列被添加到数据库中。因此,举例来说,如果用户今天发送了表单,那么3列将包含2016年,6月和7日。我想制作D3条形图,可以获取这些信息并显示每月/每年发送的表单数。我有一个HTML格式的复选框列表,供管理员选择一个或多个月和一年。D3条形图故障排除
<input type="submit" name="monthlyReport" value="Generate a Monthly Report for:" />
<br>
<input type="checkbox" value="January" name="monthList[]"/>January
<br>
<input type="checkbox" value="February" name="monthList[]"/>February
等等
<select name="selyear1">
<option value="2016">2016</option>
<option value="2017">2017</option>
<option value="2018">2018</option>
<option value="2019">2019</option>
<option value="2020">2020</option>
</select>
这里是我的PHP代码,将用户输入并把它变成一个查询:
$monthList = array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
$yearList = array("2016", "2017", "2018", "2019", "2020");
$monthlyReport = isset($_POST["monthlyReport"]) ? $_POST["monthlyReport"] : "";
$monthList = array();
$monthList = isset($_POST["monthList"]) ? $_POST["monthList"] : "";
$selectedYear = isset($_POST["selyear1"]) ? $_POST["selyear1"] : "";
if(isset($monthlyReport) && !empty($monthList) && in_array($selectedYear, $yearList)) {
foreach ($monthList as $month){
if (in_array($month, $monthList)) {
$stmt = $conn->prepare("SELECT dateYear, dateMonth FROM just_ink WHERE dateMonth = :month AND dateYear= :year");
$stmt->execute(array(":month" => $month, ":year"=> $selectedYear));
$result[] = $stmt->fetchAll(PDO::FETCH_ASSOC);
}
}
}
var_dump($result);
$结果将转储此:
array(2) { [0]=> array(1) { [0]=> array(2) { ["dateYear"]=> string(4) "2016" ["dateMonth"]=> string(7) "January" } } [1]=> array(2) { [0]=> array(2) { ["dateYear"]=> string(4) "2016" ["dateMonth"]=> string(4) "June" } [1]=> array(2) { ["dateYear"]=> string(4) "2016" ["dateMonth"]=> string(4) "June" } } }
那么我怎么把这个结果进入D3条形图?我看过d3Noob的技巧和窍门,但这是我相信的更高级的案例。预先感谢您的回复!
什么是你想要的值绘制图形?我无法在您的转储中看到它 – torresomar
@torresomar例如,如果我有2行包含“June”,我希望栏的X值为“June”,Y值为“2” – KoalatyCode