这是jQuery还是PHP的问题


Is this a jQuery or PHP issue

我为以下问题创建了一个jsfiddle。我尝试过重新创建它,但这很难,因为数据是用MySQL数据库中的PHP在服务器端显示的。

我有一个表,我正试图将单击的<td>内容传递到我的模式框中。如果没有,模式框应该显示用户id,但输入框是空的。

出于某种原因,用户id更改得很好,但开始时间和结束时间输入没有!此外,当我检查元素时,它为所有用户显示8-5?有人知道为什么会发生这种事吗?

php代码与点击+数据参数

        for($dow = 0; $dow <= 6; $dow++) {
            ?><td class="js-clickable" data-user_id="<?php echo $user_id; ?>" data-start_time="<?php echo $row['st']; ?>" data-end_time="<?php echo $row['et']; ?>"<?php
                if (array_key_exists($dow, $list)) {
                    foreach ($list[$dow] as $row) {
                        if ($row['user_id'] == $user_id) {
                            echo date("H:i", strtotime($row['st'])) . " - " . date("H:i", strtotime($row['et']));

问题出在PHP代码上,因为fiddle中显示的HTML标记清楚地显示Michael的data-end_timedata-start_time显示为data-end_time="2015-03-27 17:30:00" data-start_time="2015-03-27 08:30:00"

从数据库中提取的值可能存在一些错误。请确保从数据库中正确检索值。

您编写的jquery在这种情况下运行得非常好。

这是一个PHP问题,因为它是在PHP上编写的。

现在,为什么会发生这种情况可能是在date("H:i", strtotime($row['start_time'])),我认为期望值($row['start_time']$row['end_time'])不会向strtotime函数返回期望的字符串。

在这个块检查您的代码,并检查它是如何返回的。

if ($row['user_id'] == $user_id) {
    echo date("H:i", strtotime($row['start_time'])) . " - " . date("H:i", strtotime($row['end_time']));
}

我希望我帮助过你。

我已经发现了PHP代码中的问题,这些问题导致数据在表中被错误地填充。

主要的问题是在写标签的部分使用了错误的逻辑。例如,用于写入数据属性的$row变量与用于写入TD内容的$row可变变量完全不同。此外,您在查找该用户的时间表之前就已经写入了第一个TD标记的数据属性。我修改了该部分中的代码,使完整的TD标记分为两个区域,要么有计划的数据,要么没有。代码仍然相当混乱,但至少现在它可以工作了。此外,在您发布的pastebin中的代码的第57行,php结束标记(?>)之间有一个错误的引号。它是:?">应该是:?>"

几个较小的观察结果:-引导CSS链接了两次(一次是本地的,一次是远程的)。不是问题的一部分,只是一个观察。-表单的结束标记和周围的div的顺序不正确。在分区之前关闭窗体

以下是正确填充表的数据属性和内容的工作代码:

// Code removed at request of OP.