$ _POST没有被阅读

时间:2010-07-08 13:51:06

标签: php html

我有一个表格,可以将书籍信息插入数据库。但是它没有读取$ _POST属性。

book.php中:

  <form action="books_manage.php" id="addbook_form" method="post">

     <div id="ab_wrapper">

         <div id="ab_leftcolumn">
                 <div id="bookinfo">
                 <fieldset>
                     <legend>Book Details</legend>
                         <div class="field">
                             <label>Book ID</label>
                             <input type="text" name="bid" id="bid"/>
                         </div>
                         <div class="field">
                             <label>Name</label>
                             <input type="text" name="bname" id="bname"/>
                         </div>
                          <div class="field">
                             <label>Author</label>
                             <input type="text" name="bauthor" id="bauthor"/>
                         </div>
                          <div class="field">
                             <label>Info</label>
                             <textarea name="binfo" id="binfo" cols="5" rows="5" ></textarea>
                         </div>
                         <div class="field">
                             <label>Date Added</label>
                             <input type="text" value="<?php echo date('D d M Y')?>" name="bdateadd" id="bdateadd"/>
                         </div>
                         <div class="field">
                             <label>Date Updated</label>
                             <input type="text" value="<?php echo date("D d M Y")?>" name="bdateupd" id="bdateupd"/>
                         </div>
                        <div>
                         <input type="hidden" name="action" value="save">
                         <input type="submit" value="Save">
                         <input type="button" id="addcontent" value="Add Content">
                         <input type="reset" value="Reset">
                        </div>
                 </fieldset>
                 </div>
         </div>

         <div id="ab_rightcolumn">
                <div id="bookcontents">
                <fieldset>
                     <legend>Book Content</legend>
                         <div class="field">
                             <label>Chapter</label>
                             <input type="text" id="bchapter" name="bchapter"/>
                         </div>
                         <div class="field">
                             <label>Sub-Chapter</label>
                             <input type="text" id="bsubchapter" name="bsubchapter"/>
                         </div>
                          <div class="field">
                             <label>Content</label>
                             <textarea id="bcontent" name="bcontent" rows="6" cols="8"></textarea>
                         </div>
                      <br />
                         <div>
                         <input type="hidden" name="action" value="addnext">
                         <input type="submit" value="Save and Add Next Chapter">
                         <input type="submit" name="action" value="Done">
                      </div>

                 </fieldset>
             </div>

         </div>

     </div>



  </form>

books_manage.php:

<?php
  if (isset($_POST['action']) && $_POST['action'] == 'save')
    {
         echo "You clicked the save button";
    }
  else {
    echo "Hello. The date is " .  date("D d M Y") ;

  }

?>

输出:

Hello. The date is Thu 08 Jul 2010

似乎没有读取隐藏按钮的值。它应显示“您单击了保存按钮”。我错过了什么吗?

6 个答案:

答案 0 :(得分:6)

首先,同一个<input>中具有相同<form>属性的多个name不会让您获得您正在寻找的行为。

相反,您需要为提交按钮提供一个名称,然后您可以检查按下了哪个按钮:

<input type="submit" name="save" value="Add Content">
<input type="submit" name="done" value="No more content">

<?php
if(isset($_POST['save'])) {
    echo "saved";
} else if(isset($_POST['done'])) {
    echo "done";
}
?>

请参阅Lèsemajesté下面的评论,了解HTML工作组如何解决这个问题。

答案 1 :(得分:4)

您在同一表单中有两个名为“action”的输入。确保您的表单字段名称是唯一的。

不要忘记您可以使用以下语法组织您的名字 -

<input name="form1['name']" value="".....
<input name="form2['name']" ..... etc

然后像这样访问这些变量:

$_POST['form1']['name']...

非常有用!

答案 2 :(得分:3)

这是因为你已经定义了 3次

的行动
<input type="hidden" name="action" value="save">
<input type="hidden" name="action" value="addnext">
<input type="submit" name="action" value="Done">

请关注您的books_manage.php

echo "<pre>";
print_r($_POST);
echo "</pre>";

你会看到你出错的地方。

答案 3 :(得分:2)

您需要将提交按钮命名为“操作”,并使用该按钮的值来确定操作。您的代码基本上有两个操作表单值,最后一个是优先级。

  <form action="books_manage.php" id="addbook_form" method="post">

 <div id="ab_wrapper">

     <div id="ab_leftcolumn">
             <div id="bookinfo">
             <fieldset>
                 <legend>Book Details</legend>
                     <div class="field">
                         <label>Book ID</label>
                         <input type="text" name="bid" id="bid"/>
                     </div>
                     <div class="field">
                         <label>Name</label>
                         <input type="text" name="bname" id="bname"/>
                     </div>
                      <div class="field">
                         <label>Author</label>
                         <input type="text" name="bauthor" id="bauthor"/>
                     </div>
                      <div class="field">
                         <label>Info</label>
                         <textarea name="binfo" id="binfo" cols="5" rows="5" ></textarea>
                     </div>
                     <div class="field">
                         <label>Date Added</label>
                         <input type="text" value="<?php echo date('D d M Y')?>" name="bdateadd" id="bdateadd"/>
                     </div>
                     <div class="field">
                         <label>Date Updated</label>
                         <input type="text" value="<?php echo date("D d M Y")?>" name="bdateupd" id="bdateupd"/>
                     </div>
                    <div>
                     <input type="submit" name="action" value="Save">
                     <input type="button" id="addcontent" value="Add Content">
                     <input type="reset" value="Reset">
                    </div>
             </fieldset>
             </div>
     </div>

     <div id="ab_rightcolumn">
            <div id="bookcontents">
            <fieldset>
                 <legend>Book Content</legend>
                     <div class="field">
                         <label>Chapter</label>
                         <input type="text" id="bchapter" name="bchapter"/>
                     </div>
                     <div class="field">
                         <label>Sub-Chapter</label>
                         <input type="text" id="bsubchapter" name="bsubchapter"/>
                     </div>
                      <div class="field">
                         <label>Content</label>
                         <textarea id="bcontent" name="bcontent" rows="6" cols="8"></textarea>
                     </div>
                  <br />
                     <div>
                     <input type="submit" name="action" value="Save and Add Next Chapter">
                     <input type="submit" name="action" value="Done">
                  </div>

             </fieldset>
         </div>

     </div>

 </div>


<?php
  if (isset($_POST['action']) && $_POST['action'] == 'Save')
{
     echo "You clicked the save button";
}
else if (isset($_POST['action']) && $_POST['action'] == 'Save and Add Next Chapter')
{
    echo 'You clicked the "Save and Add Next Chapter" button';
}
else if (isset($_POST['action']) && $_POST['action'] == 'Done')
{
    echo 'You clicked the done button';
}
else 
{
echo "Hello. The date is " .  date("D d M Y") ;
}
    ?>

答案 4 :(得分:2)

                     <input type="hidden" name="action" value="addnext">
                     <input type="submit" value="Save and Add Next Chapter">
                     <input type="submit" name="action" value="Done">

您有两个名为“action”的输入。你得到的行动可能是“完成”,而不是“保存”

答案 5 :(得分:2)

您有多个名为action的输入

<input type="hidden" name="action" value="save">
<input type="hidden" name="action" value="addnext">
<input type="submit" name="action" value="Done">

您需要删除隐藏的变量,并将首次“提交”的名称更改为“操作”

<input type="submit" name="action" value="Save">
<input type="submit" name="action" value="Done">