【问题标题】:Php Drop Down and Date functionphp下拉和日期功能
【发布时间】:2013-06-10 10:56:02
【问题描述】:

我是 php 新手。我正在使用以下代码开发一个表单:

<td>Severity:</td>
<td>
    <?php $dbc = mysql_connect('localhost', 'root', ''); // root connection
    mysql_select_db('ticket', $dbc); // db selection
    $query = "SELECT id, severity FROM severity" ; // retrieving value from table severity in db
    $result = mysql_query($query, $dbc); // 
    echo'<select name="sever">';
    echo '<option value="Default"> Please Select Severity </option>';
    while($row = mysql_fetch_assoc( $result ))
    {
        echo '<option value="'.$row['id'].'">' . $row['severity'] . '</option>';
    }
    echo '</select>';
?>
</td>

在数据库中,我创建了 3 个严重级别,其值如下:

表严重性(ID、严重性、小时)值 (1, '关键', '12'), (2, '主要', '24'),(3, '次要', '36');

我有一个日期函数的形式

<td> Expected Completed Date: </td>
        <td> <input name="exc_date" style="width:150px" type="text" /> </td>

一旦我选择了严重性,我希望根据选择的严重性自动生成预期的完成日期。

对于我需要如何以预期完成日期的形式生成 php 代码,我有点模棱两可。

请帮助我,并提前感谢您的建议。

【问题讨论】:

  • 如果您是 PHP 新手,请不要浪费时间学习 mysql_...() 库。它已被弃用且未维护,并且可能会在未来的 PHP 主要版本中被删除。有关详细信息,请参阅Choosing an API
  • 使用 javascript/jquery 进行选项选择数据更改
  • 如果你想让某些东西立即工作,而不需要表单执行操作,那么你必须使用 ajax。 w3schools 上可以找到相当不错的教程:w3schools.com/ajax
  • @MarkoĆilimković "pretty good" 和 "w3schools" 在同一个句子中是一个错误。原因见w3fools.com

标签: php date


【解决方案1】:

纯 Javascript 解决方案(无 jQuery)

jsFiddle demo

使用data-hours 属性输出每个选项的小时数:

echo '<option data-hours="'.$row['hours'].'" value="'.$row['id'].'">' . $row['severity'] . '</option>';

同时给出&lt;select&gt;server 的ID,然后使用Javascript 进行更改:

window.onload = function(){
    document.getElementById("server").onchange = function(){
        var timeObj = document.getElementById("exc_date");
        if(this.value != 'Default'){
            var hours = this.options[this.selectedIndex].getAttribute('data-hours');

            var now = new Date();
            now.setHours(now.getHours() + (hours*1));
            var nowStr = now.getDate() + "/" + (now.getMonth()+1) + "/" + now.getFullYear();
            timeObj.value = hours + " hours, " + nowStr; 

        } else {
            timeObj.value = '';   
        }
    };
};

这会将 ID 为 exc_date 的元素更新为小时数。

【讨论】:

  • 感谢 MrCode 您的代码已解决。有什么办法可以和你保持联系吗?如果我有任何疑问,我想与您分享,这将有助于我获得知识。
  • 先生,我有另一个问题。我希望 JS 向我显示相应日期的日期,比如如果选择了严重程度,则表示次要日期显示为 36,但我希望它显示 2013 年 6 月 14 日和相应的时间。我尝试了以下代码,但我无法做到。 var currentDate = new Date(); timeObj.value = currentDate + this.options[this.selectedIndex].getAttribute('data-hours');
  • 查看我更新的演示和代码,我添加了显示完成日期的功能。
  • 感谢您的代码。有没有办法我可以得到月份名称而不是月份编号?
  • 是的,看看这个答案:stackoverflow.com/questions/1643320/…
【解决方案2】:

把PHP部分改成这个

<td>Severity:</td>
<td>
    <?php $dbc = mysql_connect('localhost', 'root', ''); // root connection
    mysql_select_db('ticket', $dbc); // db selection
    $query = "SELECT id, severity, hours FROM severity" ; // retrieving value from table severity in db
    $result = mysql_query($query, $dbc); // 
    echo'<select name="sever">';
    echo '<option value="Default"> Please Select Severity </option>';
    while($row = mysql_fetch_assoc( $result ))
    {
        echo '<option value="'.$row['id'].'" data-hours="'.$row['hours'].'">' 
             . $row['severity'] . '</option>';
    }
    echo '</select>';
?>
</td>

并添加 JavaScript – http://jsfiddle.net/8YCwb/

【讨论】:

  • Gedrox 您提供的代码不起作用。即使在 jsfiddle 我也没有得到日期。
  • 在 SQL 中将“小时”更改为“小时”。你试过改变严重程度吗?你遇到了什么 JS 错误?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-31
  • 1970-01-01
  • 1970-01-01
  • 2019-10-13
相关资源
最近更新 更多