使用javascript和php的数组
我有一个函数,可以在当月创建使用javascript和php的数组,php,Php,我有一个函数,可以在当月创建文本区域深化。所以如果是三月,那么是31个地区。但是现在的问题是,我不能在数据库中添加任何内容。我试着把我的函数做成数组,他改变了我的php,使它像函数一样。但我不确定问题在哪里。问题是它在MySQL数据库中插入空值 功能: var showDate = new Date(); var months = ["Januari", "Februari", "March", "April", "May", "June", "July", "Aug
文本区域深化。所以如果是三月,那么是31个地区。但是现在的问题是,我不能在数据库中添加任何内容。我试着把我的函数做成数组,他改变了我的php,使它像函数一样。但我不确定问题在哪里。问题是它在MySQL数据库中插入空值
功能:
var showDate = new Date();
var months = ["Januari", "Februari", "March", "April", "May", "June",
"July", "Augusti", "September", "October", "November", "December"];
var weeks = ["Sunday","Monday","Tuseday","Wednesday","Thursday","Friday","Saturday"];
function drawTable(forDate) {
const daysInMonth = new Date(
forDate.getFullYear(),
forDate.getMonth() + 1,
0
).getDate();
const date = [
forDate.getFullYear(),
(forDate.getMonth() + 1 + '').padStart(2, 0)
]
.join('-');
const table = document.getElementById("table");
table.innerHTML = "";
for (let day = 1; day <= daysInMonth; day++) {
const dateString = date + '-' + (day + '').padStart(2, 0);
const row = document.createElement("tr");
const cell = document.createElement("td");
const textarea = document.createElement("textarea");
textarea.setAttribute("name", "day[]");
textarea.setAttribute("value", dateString);
textarea.innerHTML = dateString;
textarea.setAttribute("placeholder", day);
cell.appendChild(textarea);
row.appendChild(cell);
table.appendChild(row);
}
return table;
}
window.onload = function() {
document.getElementById("displayingMonth").innerHTML = months[showDate.getMonth()];
drawTable(showDate );
};
function daysInMonth(month, year) {
var days;
switch (month) {
case 1: // Feb, our problem child
var leapYear = ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);
days = leapYear ? 29 : 28;
break;
case 3:
case 5:
case 8:
case 10:
days = 30;
break;
default:
days = 31;
}
return days;
}
var showDate=新日期();
变量月份=[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”,
“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”];
var weeks=[“星期日”、“星期一”、“星期四”、“星期三”、“星期四”、“星期五”、“星期六”];
功能绘图台(forDate){
const daysInMonth=新日期(
forDate.getFullYear(),
forDate.getMonth()+1,
0
).getDate();
施工日期=[
forDate.getFullYear(),
(forDate.getMonth()+1+'').padStart(2,0)
]
。加入(“-”);
const table=document.getElementById(“表”);
table.innerHTML=“”;
对于(让day=1;day查看这条线
textarea.setAttribute("name", "day[]");
实际上,您正在将day
数组传递给PHP
将您的PHP更改为:
<?php
if (isset($_POST['submit'])) {
$error = '';
$days = $_POST['day'];
if (is_array($days)){
foreach ($days as $day) {
$day = mysqli_real_escape_string($conn, $day);
echo $day . '<br />';
if (empty($day)) {
echo $error;
} else {
mysqli_query($conn, "INSERT INTO table (day) VALUES ('$day')");
}
}
}
if (count($error)) {
print_r($error);
}
}
?>
到PHP脚本和设置的顶部
`display_errors = on`
在php.ini文件中
希望这有帮助!您尝试调试代码的内容是什么?我们无法完成所有调试stuff@Pierre我在代码中添加了different error msg以查看问题所在,并发现代码停在这里:“if(empty($day)){echo$error;}”您总是显示错误消息:echo$error=“day is empty”
。我认为你不想回显
这个初始化。可能是因为你在回显它:回显$error=“day is empty”
!mysqli_query-为什么这样!(不是)谢谢,亚伦!试过了,但还是没用db@Hanna代码已更新。它对我很有用。请尝试看看你现在在数据库中得到了什么值!但是,不幸的是,我得到了数据库中当月的所有值。就像我只点击第4天一样,我得到了数据库中从2018-02-01到2018-02-28的所有值。@Hanna你好吗u允许用户选择插入DB的日期?您可以使用
元素,该元素将包含用户选择的日期/日期。然后该值将传递给PHP,您可以将特定日期插入数据库该行是html格式的,如您之前所建议的:。或者我误解了您的要求离子?
<?php
if (isset($_POST['submit'])) {
$error = '';
$days = $_POST['day'];
if (is_array($days)){
foreach ($days as $day) {
$day = mysqli_real_escape_string($conn, $day);
echo $day . '<br />';
if (empty($day)) {
echo $error;
} else {
mysqli_query($conn, "INSERT INTO table (day) VALUES ('$day')");
}
}
}
if (count($error)) {
print_r($error);
}
}
?>
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
`display_errors = on`