首页 > 解决方案 > 提示验证并在取消时返回 false

问题描述

我正在开发一个 PHP Web 应用程序。
在显示所有类别的类别页面上,我想放置一个编辑提交按钮,单击事件将打开一个带有类别名称的提示按钮,以便在用户需要时更改它。

我还想对提示框(min-length='5')进行一些验证,如果用户单击取消按钮返回 false(现在返回 null)并且不提交表单,否则如果验证正常并单击确定以提交具有类别 id 的表单和新的类别名称(提示值)来更新数据。

代码示例:

echo "<table>";
$strCats=$con->query("SELECT * FROM categories ORDER BY catName");
$CatsRows=$strCats->rowCount();
if ($CatsRows==0) {
  echo "NO DATA FOUND";
}else{
  while($CatsRow = $strCats->fetch()){
    echo "<tr><td>$CatsRow[catName]</td>
    <td><button type='submit' name='btnEditCategory' value='$CatsRow[catId]' onclick='return prompt(\"Rename category\",\"$CatsRow[catName]\");'>EDIT</button></td></tr>";
  }
}
echo "</table>";

标签: javascriptphphtml

解决方案


最后我解决了。

if(isset("cmdEditCategory")){
  $catName = str_replace('"',"`",str_replace("'","`",$_POST['txtCatName']));
  $catId = $_POST['cmdEditCategory'];
  $sqlEditCategory=$con->prepare("UPDATE categories SET catName=? WHERE catId=?");
  $sqlEditCategory->bindParam(1, $catName, PDO::PARAM_STR, 25);
  $sqlEditCategory->bindParam(2, $catId, PDO::PARAM_INT, 11);
  if ($sqlEditCategory->execute()) {
    echo "<script type='text/javascript'>notif('success','". MSG_SUCCESS ."','". MSG_UPDATED ."');</script>";
  }else{
    echo "<script type='text/javascript'>notif('error','". MSG_WARNING ."','". MSG_ERROR ."');</script>";
  }
}
$strCats=$con->query("SELECT * FROM categories ORDER BY catName");
$CatsRows=$strCats->rowCount();
if ($CatsRows==0) {
  echo "<div class='alert alert-danger'>". MSG_NO_DATA_FOUND ."</div>";
}else{
  echo "<form action='/..$_SERVER[REQUEST_URI]' method='post'>
    <table>";
    while($CatsRow = $strCats->fetch()){
      echo "<tr><td>$CatsRow[catName]</td>
        <td>
          <button type='submit' name='cmdEditCategory' value='$CatsRow[catId]' onclick='return editCategory(\"$CatsRow[catName]\");'>". EDIT ."</button>
        </td>
      </tr>";
    }
    echo "</table>
    <div style='display:none'>
      <input type='text' id='txtCatName' name='txtCatName' />
    </div>
  </form>
  <script type='text/javascript'>
    function editCategory(catName){
      var msg = prompt('Rename category',catName);
      if(msg != null){
        document.getElementById('txtCatName').value=msg;
        return true;
      }else{
        return false;
      }
    }
  </script>";
}

如果有其他更好的解决方案,请回复。


推荐阅读