1

我想将用户值从 HTML 表单获取到数组,然后将其插入 mysql 数据库。它将正确的值插入数据库,然后给出以下错误:

注意:未定义索引:第 153 行 C:\wamp\www\Capturing System\All_Topics_widget.php 中的 TopicNum

以下内容位于页面顶部:

<?php 
include 'scripts/functions/init.php';
Restrict();

?>

$userid = $_SESSION['userid'];
$KM_Number = $_SESSION['C_KM'];
$query = "SELECT * FROM knowledge_modules where km_number = "."'".$KM_Number."'";
$Knowledge = mysql_query($query) or die(mysql_error);
$row = mysql_fetch_assoc($Knowledge);
$Module_type = 'Knowledge Modules';
$Purpose_M = $_SESSION['Purpose_KM'];
$KM = 'KM';
$NUM = $_SESSION['KM'];
$KT = 'KT';

if (empty($_POST)=== false)
    {
        $R_fields = array('Topic_Num','Title','Weight');
        foreach($_POST as $key=>$value)
        {
            if (empty($value) && in_array($key,$R_fields)=== true)
                {
                    $errors[] = 'fields marked with (*) are required';
                    break 1;
                }
        }

        if(empty($errors)=== true)
            {
                if(topic_exists($_POST['TopicNum']))
                    {
                        $errors[] = 'Sorry, the Topic already exist!';
                    }


            }
    }

?> 以下代码在 HTML 标签中:

<h2>Tools - </h2>

            <form action="All_Topics_widget.php" method="POST" enctype="multipart/form-data">
              <fieldset>
                <table border="0">
                    <tr>
                        <td><label for="TopicNum">Topic Number:*&nbsp<?php echo $KM.'-'.$NUM.'-'.$KT ?></label></td>
                        <td><input type="text" size="5" name="TopicNum" /></td>
                    </tr>
                    <tr>
                        <td><label for="Title">Title:*</label></td>
                        <td><input type="Text" size="35" name="Title"/></td>
                    </tr>
                    <tr>
                        <td><label for="Weight">Weight:*</label></td>
                        <td><input type="text" size="05" name="Weight" /></td>

                    </tr>

                </table>
            </fieldset>
              <fieldset>
                       <table border="0">
                            <tr>
                                <td><input id="Submit" type="submit" value="Capture" /></td>
                                <td><input id="Reset1" type="reset" value="reset" /></td>
                                 <td><a href="list_topics.php">Capture Topics</a></td>

                           </tr>
                        </table>
              </fieldset>
              <?php

                    $Topics = $KM.'-'.$NUM.'-'.$KT.$_POST['TopicNum'];//This is line 153
                    if(isset($_GET['success']) && empty($_GET['success']))
                        {
                            echo 'Succefully Captured';
                        }
                    else
                        {
                            if(empty($_POST) == false && empty($errors)== true)
                                {

                                    //Capture data from the fields to an array
                                    $capture_topic = array(
                                    'TopicNum' => $Topics,
                                    'Title'=>$_POST['Title'],
                                    'Weight'=>$_POST['Weight'],
                                    'Purpose_M'=>$Purpose_M,
                                    'userid'=>$userid);                                     

                                    //Submit the data into the database
                                    capture_topic($capture_topic);
                                    //redirect to the Modules widget page till the user press NEXT Page
                                    header('Location: All_Topics_widget.php?success');
                                    exit();

                                }

                            else if(empty($errors)== false)
                                {
                                    //Display errors

                                    echo output($errors);
                                }
                        }

              ?>
       </form>
4

2 回答 2

1

看这个

                            header('Location: All_Topics_widget.php?success');
                            exit();

成功处理 POST 数据后,将脚本重定向到自身。在此重定向之后,POST 数据不存在。

改写

          $Topics = $KM.'-'.$NUM.'-'.$KT.$_POST['TopicNum'];//This is line 153
            if(isset($_GET['success']) && empty($_GET['success']))
                {
                    echo 'Succefully Captured';
                }
            else
                {
                    if(empty($_POST) == false && empty($errors)== true)

作为

            if(isset($_GET['success']) && empty($_GET['success']))
                {
                    echo 'Succefully Captured';
                }
            else
                {
                    $Topics = $KM.'-'.$NUM.'-'.$KT.$_POST['TopicNum'];
                    if(empty($_POST) == false && empty($errors)== true)

禁止通知。

请注意必填字段数组中的内容

$R_fields = array('Topic_Num','Title','Weight');

您希望看到一个名为 Topic_Num 的文件,但在您的表单中它的名称是 TopicNum

于 2012-12-08T08:48:39.660 回答
1

Notice是因为您 $_POST['TopicNum']在第 153 行引用,此时$_POST[]不再设置此变量。

尝试在里面移动 153 行 if(empty($_POST) == false && empty($errors)== true) {}

 if(empty($_POST) == false && empty($errors)== true)
        {
        $Topics = $KM.'-'.$NUM.'-'.$KT.$_POST['TopicNum'];//This is line 153
         ...
         }

这就是为什么它导致Notice-

1=>您提交/发布表单,因此$_POST['TopicNum']在第 153 行设置和使用。
2=>您在第 172 行将值输入数据库capture_topic($capture_topic);
3=>您重定向到 174 上的页面header('Location: All_Topics_widget.php?success');,从而清除$_POST[]全局变量,所以当它在 153 上再次调用它现在未定义。通过将其移动到您的支票中,if(empty($_POST) == false && empty($errors)== true)它只会在表单已提交/发布时作为参考

于 2012-12-08T09:14:13.517 回答