gpt4 book ai didi

javascript - php/javascript 关于值的问题

转载 作者:行者123 更新时间:2023-12-03 02:26:16 26 4
gpt4 key购买 nike

所以我有这个函数可以根据月份创建文本区域。因此,如果是 3 月,则为 31 个文本区域,如果是 4 月,则为 30 个文本区域,依此类推。当用户单击一个文本区域然后单击提交按钮时,文本区域的值应提交到数据库。因此,如果用户标记 2018-02-04,那么该日期应该插入到数据库中。但是,我现在的问题是提交的唯一值是每个月的最后一个日期。不知道为什么,也不知道如何解决。认为这可能是带有 ID 的东西。或者我需要将值作为数组发送。但不确定如何去做。

功能:

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) {
var daysInMonth = new Date(forDate.getFullYear(),forDate.getMonth()+1,0).getDate();
var cellsToDraw = daysInMonth;
var newdate = forDate.getFullYear() +"-"+ ("0"+ (forDate.getMonth() + 1)).slice(-2);
var table = document.getElementById("table");
table.innerHTML = "";
for (var r = 0; r < (daysInMonth / 7); r++) {
var newRow = document.createElement("tr");
table.appendChild(newRow);
for (var c = 0; c < 31 && cellsToDraw > 0; c++) {
var day1 = ("0" + (c + 1)).slice(-2);

var textarea = document.createElement("textarea");
textarea.setAttribute("placeholder", day1 );
//textarea.setAttribute("id", some_value); does not work
newRow.appendChild(textarea);
textarea.setAttribute("name", "day");
textarea.setAttribute("day", newdate + "-" + day1 )
textarea.innerHTML = newdate + "-" + day1;
cellsToDraw--;
}
}
}

window.onload = function() {
document.getElementById("displayingMonth").innerHTML = months[showDate.getMonth()];
drawTable(showDate );
};

function next() {
if (showDate.getMonth() == 11) {
showDate.setMonth( 0 );
showDate.setFullYear( showDate.getFullYear()+1 );
} else {
showDate.setMonth( showDate.getMonth()+1 );
}
document.getElementById("displayingMonth").innerHTML = months[showDate.getMonth()];
drawTable( showDate );
}

html:

<form class="" action="index.php" method="post">
<table id="table" cellspacing="0" cellpadding="0" border-collapse="collapse";>
<br>
<input id="btn" type="submit" name="" value="Send">
</form>

php:

<?php
include ("connection.php");
$day = mysqli_real_escape_string($conn, $_REQUEST['day']);

$stmt = "INSERT INTO table (day) VALUES('$day')";
if(empty($day)){
$_SESSION['error'] = "Please fill in required fields";

header('Location: index.php', true, 303);
exit();
} else {
if (mysqli_query($conn, $stmt)) {
header('Location: index.php', true, 303);
exit;
}else {
$error= "Error: " .mysqli_error($conn);
echo "$error";

}
}

?>

我的测试PHP:

$days = $_request['day'];
$error = array();
foreach ($days as $day) {
$day = mysqli_real_escape_string($conn, $day);
if (empty($day)) {
$error[] = array(
'day' => $day,
'error' => 'day was empty'
);
}
else if (
!mysqli_query(
$conn,
"INSERT INTO table (day) VALUES('$day)')"
)
) {
$error[] = array(
'day' => $day,
'error' => mysqli_error($conn)
);
}
}

if (count($error)) {
print_r($error);
}

header('Location: index.php', true, 303);

感谢所有帮助! :)

最佳答案

据我了解,您希望将用户选择的日期发送到服务器,但现在正在提交该月的最后一个日期。如果这分别是您的目的和问题,请查看它

在 JSFIDDLE.NET 上

https://jsfiddle.net/wyn1cd5b/1/

堆栈溢出片段

function drawTable(forDate) {

var table = document.getElementById('table')

var year = forDate.getFullYear()
var month = forDate.getMonth() + 1

document.getElementById('date').innerHTML = months[month - 1]

table.innerHTML = ''

var daysInMonth = new Date(year, month, 0).getDate()

for (i = 1; i <= daysInMonth; i++) {

table.insertAdjacentHTML('beforeend', '<textarea class="date-item" onclick="selectThis(this)">' + year + '-' + (month < 10 ? '0' + month : month) + '-' + (i < 10 ? '0' + i : i) + '</textarea>')

}

}


function selectThis(textarea) {

if (typeof selectedDate !== 'undefined')

selectedDate.classList.remove('selected-date')

selectedDate = textarea
selectedDate.classList.add('selected-date')
}


function send() {

if (typeof selectedDate === 'undefined')

alert('No date selected')

else

// I have printed selected here. do whatever you want with it

document.getElementById('info').innerHTML = 'Will send <b>' + selectedDate.value + '</b> to server'


return false

}


function next() {

if (showDate.getMonth() === 11) {

showDate.setMonth(0)

showDate.setFullYear(showDate.getFullYear() + 1)

} else {

showDate.setMonth(showDate.getMonth() + 1)

}


drawTable(showDate)

return false
}


window.onload = function() {

months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']

// days = ['Sunday', 'Monday', 'Tuseday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']

showDate = new Date()

drawTable(showDate)

}
    .date-item {
cursor: pointer;
}

.selected-date {
background: #dbdbdb;
}
<form class="" action="index.php" method="post">

<table id="table" cellspacing="0" cellpadding="0" border-collapse="collapse" ;>

<h1 id="date"></h1>


</table>


<p id="info">Select date by clicking on it</p>

<input id="btn" type="submit" name="" onclick="return send()" value="Send">
<input id="btn" type="submit" name="" onclick="return next()" value="Next">


</form>

关于javascript - php/javascript 关于值的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48935832/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com