【问题标题】:insert datestamp if condition is satisfied如果满足条件,则插入时间戳
【发布时间】:2013-02-13 10:12:39
【问题描述】:

一旦满足 if 条件,我想将日期时间戳插入变量中。但我收到以下错误:

注意:未定义索引:第 55 行 C:\wamp\www\business\edit_log_widget.php 中的状态

以下是php代码:

<?php
    include 'scripts/init.php';
    include 'html/header.php';
    $page = 'servers';

    $id =$_SESSION['logid'];
    $query = "SELECT *FROM log WHERE logid = $id";
    $query_submit = mysql_query($query) or die(mysql_error);
    $row = mysql_fetch_assoc($query_submit);
?>

<div class="article">
    <h2><span>Edit Logs</span></h2>
    <div class="clr"></div>
    <form action="" method="POST" >
    <p>
        <table border="0">
            <tr>
                <td><label for="Task Name">Task Name:*</label></td>
                <td><input type="text" name="task_name" size="45" value="<?php echo $row['task_name'] ?>"/></td>
            </tr>
            <tr>
                <td><label for="description">Problem Description:*</label></td>
                <td><textarea name="description" cols="33" rows="10" ><?php echo $row['description'] ?></textarea></td>
           </tr>
           <tr>
                <td><label for="solution">Solution Description:*</label></td>
                <td><textarea name="solution" cols="33" rows="10" ><?php echo $row['solution'] ?></textarea></td>
           </tr>
           <tr>
                <td><label for="status">Status:*</label></td>
                <td>
                    <select id="Select2" name="status">
                        <option>-Select-</option>
                        <option>Resolved</option>
                        <option>Un-resolved</option>
                        <option>In-Progress</option>
                    </select>
                </td>
           </tr>
        </table>
    </p>
    <p>
        <td><input id="Submit" type="submit" value="Submit" /></td>
        <td><input id ="Clear and Restart" type ="reset" value= "Clear and Restart" /></td>
    </p>
    <?php 
        if($_POST['status']== 'Resolved')
        {
            $today = DateTime::createFromFormat('!Y-m-d',date('Y-m-d')); // This is Line 55
        }

        if(isset($_GET['success']) && empty($_GET['sucess']))
        {
            echo 'the log has been captured';
        }
        else
        {
            if(empty($_POST) === false && empty($errors)=== true)
            {
                //Update Log details
                $update_log = array(
                                'task_name'=>$_POST['task_name'],
                                'description' => $_POST['description'],
                                'solution' =>$_POST['solution'],
                                'status'=>$_POST['status'],
                                'closed_date'=>$today,
                                'userid' =>$_SESSION['userid']);
                update_log($update_log);
                //redirect
                header('Location: edit_log_widget.php?success');
                exit();
            }
            else if(empty($errors) === false)
            {
                //output errors if the errors array is not empty
                echo output($errors);
            }
        }
    ?>
    </form>  
    <?php
        include 'html/side_menu.php';
        include 'html/footer.php';
    ?>

更新:edit_log.php。

<?php
    include 'scripts/init.php';
    include 'html/header.php';
    $page = 'servers';

    $id = $_GET['logid'];
    $_SESSION['logid'] = $id;
    $query = "SELECT *FROM log WHERE logid = $id";
    $query_submit = mysql_query($query) or die(mysql_error);
    $row = mysql_fetch_assoc($query_submit);
?>

<div class="article">
    <h2><span>Edit Logs</span></h2>
    <div class="clr"></div>
    <form action="edit_log_widget.php" method="POST" >
    <p>
        <table border="0">
            <tr>
                <td><label for="Task Name">Task Name:*</label></td>
                <td><input type="text" name="task_name" size="45" value="<?php echo $row['task_name'] ?>"/></td>
            </tr>
            <tr>
                <td><label for="description">Problem Description:*</label></td>
                <td><textarea name="description" cols="33" rows="10" ><?php echo $row['description'] ?></textarea></td>
            </tr>
            <tr>
                <td><label for="solution">Solution Description:*</label></td>
                <td><textarea name="solution" cols="33" rows="10" ><?php echo $row['solution'] ?></textarea></td>
            </tr>
            <tr>
                <td><label for="status">Status:*</label></td>
                <td>
                    <select id="Select2" name="status">
                        <option>-Select-</option>
                        <option value="Resolved">Resolved</option>
                        <option value="Un-resolved">Un-resolved</option>
                        <option value="In-Progress">In-Progress</option>
                    </select>
                </td>
            </tr>
        </table>
    </p>
    <p>
        <td><input id="Submit" type="submit" value="Submit" /></td>
        <td><input id ="Clear and Restart" type ="reset" value= "Clear and Restart" /></td>
    </p>
</form>  
<?php
    include 'html/side_menu.php';
    include 'html/footer.php';
?>

【问题讨论】:

标签: php mysql datetime


【解决方案1】:

您没有为您的选项指定任何值;)

<option value="Resolved">Resolved</option>

【讨论】:

    【解决方案2】:

    PHP 代码在表单提交之前执行,因此 $_POST['status'] 尚未定义。

    【讨论】:

    • 以上代码用于edit_log_widget.php。初始表单在edit_log.php上完成,然后通过
      传递给edit_log_widget.php,因此我认为状态应该在php执行之前有一个值
    • 如何传递给edit_log_widget.php?也许那里有问题?如果我在这里没有遗漏任何东西,我会使用
      来传递值?
    • 是的!这就是我通过它的方式,我只是没有附上edit_log.php的代码。以上代码仅适用于edit_log_widget.php
    • 能否也附上edit_log.php的代码,这样更容易看出传递值是否有问题。
    • 您确定要从选择框中发送值吗?如果您在 edit_log.php 上提交表单,并选择了“-Select-”-选项,则不会定义 $_POST['status'],因为该选项中没有任何值。如果您从 edit_log_widget.php 提交表单,则所有选项都没有值,并且永远不会定义状态。
    【解决方案3】:
    $_POST['status']
    

    数组$_POST的入口状态未定义

    您正在尝试访问尚未设置的变量。

    为避免您可以先检查表单是否在之前提交,例如

    <?php 
            if(!empty($_POST['Submit'])){
    
                        if($_POST['status']== 'Resolved')
                            {
                                $today = DateTime::createFromFormat('!Y-m-d',date('Y-m-d')); // This is Line 55
    
                            }
    
    
                        if(isset($_GET['success']) && empty($_GET['sucess']))
                            {
                                echo 'the log has been captured';
                            }
                        else
                            {
                                if(empty($_POST) === false && empty($errors)=== true)
                                    {
                                                                                //Update Log details
                                        $update_log = array(
                                        'task_name'=>$_POST['task_name'],
                                        'description' => $_POST['description'],
                                        'solution' =>$_POST['solution'],
                                        'status'=>$_POST['status'],
                                        'closed_date'=>$today,
                                        'userid' =>$_SESSION['userid']);
    
    
                                        update_log($update_log);
                                        //redirect
                                        header('Location: edit_log_widget.php?success');
                                        exit();
    
                                    }
                                else if(empty($errors) === false)
                                    {
                                        //output errors if the errors array is not empty
                                        echo output($errors);
                                    }
                            }
                        }
                ?>
    

    【讨论】:

    • 检查表单是否之前发送过
    • 我认为表格已发送
    • 表单发送后,您将不会再看到“通知:未定义索引:状态”的通知。
    【解决方案4】:

    您缺少一些 html 道具,您的 &lt;option&gt; 必须有一个 value 道具,如下所示:

    <td>
       <select id="Select2" name="status">
          <option value="0">-Select-</option>
          <option value="1">Resolved</option>
          <option value="2">Un-resolved</option>
          <option value="3">In-Progress</option>
        </select>
    </td>
    

    您收到该错误是因为您在第一个 html sn-p 中丢失了它,而您在第二个中却有它,所以 PHP 没有什么可以得到的

    【讨论】:

      【解决方案5】:

      我将所有的 php 移到了 html 表单的顶部,现在它可以正常工作了。谢谢大家帮助我

      【讨论】:

        猜你喜欢
        • 2019-03-01
        • 2023-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-09
        • 2011-03-19
        • 1970-01-01
        • 2013-10-26
        相关资源
        最近更新 更多