【问题标题】:PHP isset for a submit form didn't return any value提交表单的 PHP isset 没有返回任何值
【发布时间】:2017-03-09 07:02:54
【问题描述】:

按照网上的一些例子,我设法制作了一个表格来插入用户。

我将 isset 用于提交功能。当表单完全填写并提交时,结果将回显以显示状态消息。不幸的是,表单根本不起作用,当点击提交按钮时,表单被重置。

由于我使用的是存储过程,ReturnStatusReturnMessage都会根据表单的输入值自动调用。

这是代码。

<?php
include "config.php";
if(isset($_POST['sub']))
{

ini_set('error_reporting', E_ALL);

error_reporting(-1);

$RegType="D";
$UserId=$_POST["UserId"];
$UserPwd=$_POST["UserPwd"];
$UserNm=$_POST["UserNm"];

$stmt=odbc_exec($conn,"CALL UserInsert ('".$RegType."','UserId','UserPwd','UserNm')");

if (!$stmt) {
"Error : " . odbc_errormsg();
}

if (odbc_fetch_row($stmt)) {
$ReturnStatus=odbc_result($stmt,'ReturnStatus');
$ReturnMessage=odbc_result($stmt,'ReturnMessage');
}

if($ReturnStatus==1) {
echo $ReturnMessage=odbc_result($stmt,'ReturnMessage');
}        
}  
?>

<table>
<form class="form"  method="post">

<tr>
<td class = "nama">Nama Pengguna<span class="required">&nbsp; * &nbsp;</span></td>
<td><input type="text" name="UserNm" value=""></td>
</tr>

<tr>
<td class = "userid">Id Pengguna<span class="required">&nbsp; * &nbsp;</span></td>
<td><input type="text" name="UserId" value=""></td>
</tr>

<tr>
<td class = "password">Kata Laluan<span class="required">&nbsp; * &nbsp;</span></td>
<td><input type="password" name="UserPwd" value=""></td>
</tr>

<tr><td>
<input type="submit" value="Save">
</td></tr>
</table> 

我确定我错过了什么。请指导我。谢谢。

更新

修复了以下问题:

- Fix the name of the button
- PHP error reporting
- Isset

【问题讨论】:

  • 您需要在提交按钮中将name属性设置为submit
  • 为您的按钮添加一个名称,您正在检查一个名为 submit 的 POST,但您的表单中没有名为 submit 的元素
  • 有两种解决方案,1 - add name attribute for button input2 - use if(count($_POST) &gt; 0)
  • 错误,为什么在isset检查中使用&lt;form&gt;
  • 我的一个粗心的错误。添加按钮的name后,表单被定向到一个空白页面。

标签: php html forms post isset


【解决方案1】:

几个重要的建议:

首先在您的代码中启用PHP error reporting,这将帮助您找到实际错误:

// Same as error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);

// Report all PHP errors
error_reporting(-1);

其次,不知道你为什么在isset()检查中使用&lt;form&gt;&lt;/form&gt;,这不会在页面刷新时返回任何内容。

第三,非常重要,正如每个人在答案中提到的那样,您在按钮输入中缺少名称属性。

<input type="submit" value="Simpan" name="submit">  

第四个,假设如果你修复了这个错误,你将在$ReturnStatus的失败情况下得到未定义的变量。您必须在顶级声明中定义为 0,因为如果 odbc_fetch_row($stmt) 失败,这将返回 Undefined Variable Warnings

【讨论】:

  • 谢谢@devpro。我根据您的回答修复了我的代码。你能告诉我更多关于在顶级声明中定义为0吗?
  • @Mint:只需将if($ReturnStatus==1) { 替换为if(isset($ReturnStatus) &amp;&amp; $ReturnStatus==1) {
  • 我仍然有这些错误odbc_fetch_row(): supplied argument is not a valid ODBC result resource@devpro
  • 好吧,我设法摆脱了这个错误。谢谢你的时间:) @devpro
【解决方案2】:

检查以下行:

<input type="submit" value="Simpan">

并且您正在尝试通过以下方式访问它:

if(!isset($_POST['submit']))

这里你忘记在输入中添加name="submit",所以让它像:

<input type="submit" value="Simpan" name="submit">

解释“$_POST['index']这里index是标签的名字

【讨论】:

    【解决方案3】:

    如果您在input 中添加name 属性,请输入submit,那么我希望您的代码能够正常工作。 所以在 html 编辑中:

    <input type="submit" value="Simpan">
    

    作为

    <input type="submit" name='submit' value="Simpan">
    

    【讨论】:

      【解决方案4】:

      我修复了一些错误并且它工作正常

      <table>
      <form class="form"  method="post">
      
      <tr><td class = "nama">Name : <span class="required">&nbsp; * &nbsp;</span></td>
      <td><input type="text" name="UserNm" value=""></td></tr>
      
      <tr><td class = "userid">Id : <span class="required">&nbsp; * &nbsp;</span></td>
      <td><input type="text" name="UserID" value=""></td></tr>
      
      <tr><td>
      <input type="submit" value="Simpan" name="submit">
      </td></tr>
      
      </form>
      </table>
      <?php 
      if(isset($_POST['submit'])){
      $RegType="D";
      $UserId=$_POST["UserID"];
      $UserNm=$_POST["UserNm"];
      echo $UserId;
      echo $UserNm;
      $stmt=odbc_exec($conn,"CALL UserInsert ('".$RegType."','UserId','UserNm')");
      
      if (!$stmt) {
      "Error : " . odbc_errormsg();
      }
      
      if (odbc_fetch_row($stmt)) {
      $ReturnStatus=odbc_result($stmt,'ReturnStatus');
      $ReturnMessage=odbc_result($stmt,'ReturnMessage');
      }
      
      if($ReturnStatus==1) {
      echo $ReturnMessage=odbc_result($stmt,'ReturnMessage');
      } 
      
      }   
      ?>
      

      【讨论】:

      • 如果您说出您已修复的内容,将对 OP 非常有帮助
      【解决方案5】:

      在提交按钮上使用 name="submit"

      那么邮车就可以访问了

      【讨论】:

        【解决方案6】:

        请更改

        <input type="submit" value="Simpan"> // you are not added name attribute here
        

        <input type="submit" value="Simpan" name="submit">  
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多