【问题标题】:Sending table,tr,td values into mysql including datepicker将表、tr、td 值发送到 mysql,包括 datepicker
【发布时间】:2012-11-26 10:53:04
【问题描述】:

我来到了一个地方,我猜,我被卡住了。

逻辑是设置:

  1. 频率
  2. 首次扫描日期

使用以下代码完成:

<script>
  $(function() 
    {
     $('.datepicker').datepicker({ 
        dateFormat: 'yy-mm-dd',
        onSelect: function(dateText, inst) {
                var days = $("#scan_freq").val() * 7;
                var newDate = addDaysDate(dateText, days)
                $("#next_scan_date").val(newDate);
        }
    });
    }); 
</script>

<script>
function addDaysDate(dateText, days) {
    var curDate = new Date(Date.parse(dateText));
    var nextDate = new Date();
    nextDate.setDate(curDate.getDate() + days);
    var curDay = nextDate.getDate();
    var curMonth = nextDate.getMonth() + 1;
    var curYear = nextDate.getFullYear();
    return curYear + "-" + curMonth + "-" + curDay;
}
</script>

我遇到的问题:

  1. 当我为列表中的第二个元素(如 HP-UX)设置频率和第一次扫描日期时,它会更改 AIX 的下一次扫描日期。与从表中获取的其余元素相同。就像我会针对 Linux 进行更改一样,它会为我设置 AIX 的下一个扫描日期。

  2. 我需要为保存按钮添加功能,当我点击保存按钮时,它将针对操作系统进行迭代并将其存储在 mysql 中。与中间件及其保存按钮相同。

有人可以帮忙吗?非常感谢!

【问题讨论】:

  • 注意! PHP 的未来版本将弃用和删除mysql_ 系列函数。现在是switch to PDOmysqli 的好时机。
  • 您将业务逻辑(数据处理)与数据访问层(与数据库对话)和表示层 (HTML) 混合在一起。你真的真的很想把这三样东西分成各自不同的代码区域。
  • 是的,我有点卡住了.. 基本上是填写这些 td 并获取它们的值,因为它们处于一段时间/循环中,所以地狱知道它们会有多少。遍历它们很困难。

标签: php mysql ajax html-table


【解决方案1】:

我第一次回答问题,所以考虑到这一点;)

经过编辑以使示例更清晰

如果我没看错,看起来输出表格的循环为所有字段提供了相同的 id

<?php
$hc = mysql_query("SELECT * FROM platforms WHERE id_acc_ref='1' AND platform_type='os' ORDER BY platform_name ASC");
while($row = mysql_fetch_array($hc))
  {
  echo "<tr>";
  /* snipped */
  echo "<td><input id='first_scan_date' type='text' class='datepicker' value='".$row['first_scan_date']."' placeholder='0000-00-00' /></td>";
  /* snipped */
  echo "</tr>";
  }
?>

会生成这样的 HTML

  <tr>
  <td><input id='first_scan_date' type='text' class='datepicker' value='THE 1st DB VALUE HERE' placeholder='0000-00-00' /></td>";
  </tr>   
  <tr>
  <td><input id='first_scan_date' type='text' class='datepicker' value='THE 2nd DB VALUE HERE' placeholder='0000-00-00' /></td>";
  </tr>   
  <tr>
  <td><input id='first_scan_date' type='text' class='datepicker' value='THE 3rd DB VALUE HERE' placeholder='0000-00-00' /></td>";
  </tr>   

注意每个输入字段如何具有相同的 id,id 在页面上应该是唯一的

根据给定的信息,我会说 datepicker 插件在内部使用字段的 id,因此它使用第一次出现的 id 名称来设置字段的值;你排除了这个吗?我会给每个字段一个唯一的 ID,可以解决 datepicker 问题,编辑如果您发布代码或链接到您用于 datepicker 的库,我会知道更多

使用保存按钮功能,您是否可以只使用表单并将其提交给 php 处理脚本。我倾向于使用数组语法给字段名称,例如:

<input type='text' name='scan_freq[]' value='...' /> 

然后它将通过你的 _POST 作为一个数组

这有帮助吗?

-- 更多细节

修正循环 - 添加唯一 ID 的一种方法

<?php
$hc = mysql_query("SELECT * FROM platforms WHERE id_acc_ref='1' AND platform_type='os' ORDER BY platform_name ASC");

$counter = 0;
while($row = mysql_fetch_array($hc))
  {
  echo "<tr>";
  /* snipped */
  echo "<td><input id='first_scan_date_".$counter ."' type='text' class='datepicker' value='".$row['first_scan_date']."' placeholder='0000-00-00' /></td>";
  /* snipped */
  echo "</tr>";
  $counter++;
  }
?>

如果这没有帮助,那么发布生成源的http://jsfiddle.net/(例如右键单击并在浏览器中查看源)将是前进的方式

【讨论】:

  • CodeMonkey,感谢您的回答。好吧,涵盖日期选择器问题,我有三个 tr - 操作系统、中间件和网络设备。我在这些 tr 中有 td,这与获取的元素(平台)的数量有关,所以我唯一的 uniq id 可以在 tr 中为每个 td 设置,但是乘以平台数,那么它在一个 tr 中仍然是相同的 id .所以我想这仍然很难。我对你的理解正确吗?你能给我一些日期选择器的代码吗?也许我错过了什么。
  • 我已经编辑了我的回复,试图让它更清晰,我认为你已经有了 datepicker 的代码,你正在使用 $('.datepicker').datepicker({
  • CodeMonkey, [] 解决了在将数组发送到 mysql 之前获取数组的问题 :) Array ( [hc_convert_1_in] => [scan_freq] => Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 ) [first_scan_date] => 数组 ([0] => 0000-00-00 [1] => 0000-00-00 [2] => 0000- 00-00 [3] => 0000-00-00 ) [next_scan_date] => 数组 ( [0] => [1] => [2] => [3] => ) [频率] => 0 )
  • 现在我只是在使用 datepicker,它来自简单的 jquery plus jquery ui 库。
  • “我会给每个字段一个唯一的 id,这可能会解决 datepicker 问题” - 我该怎么做?我正在使用标准的最新 jquery/ui 库中的 jquery datepicker。
猜你喜欢
  • 2023-03-20
  • 2014-02-27
  • 1970-01-01
  • 2016-12-24
  • 2013-06-09
  • 1970-01-01
  • 2011-07-02
  • 2019-05-22
  • 1970-01-01
相关资源
最近更新 更多