php - 对不同的操作使用多个表单元素是好的做法吗?

标签 php html mysql sql forms

我想知道您是否可以拥有包含多个操作的 HTML 表单。好吧,我并不是说要指定多个 action="" 属性。假设我有一个简单的表单:

form.html

<form action="action.php" method="post">
  <label><input type="radio" value="r1" id="r1" name="r" />Insert in table1</label><br/>
  <label><input type="radio" value="r2" id="r2" name="r" />Insert in table2</label><br/>
  <label>Value 1<input type="text" id="t1" name="t1" /></label><br/>
  <label>Value 2<input type="text" id="t2" name="t2" /></label><br/>
  <label><input type="submit" value="Submit" /></label><br/>
</form>

action.php

$con = mysqli_connect("example.com","user","pwd","db");
$r = $_POST["r"];
$t1 = $_POST["t1"];
$t2 = $_POST["t2"];
switch($r):
  case 'r1':
    if($q = $con -> prepare("INSERT INTO table1 VALUES (?, ?)")):
      $q -> bind_param("ss",$t1,$t2);
      if($q -> execute()):
        echo 'Successfully updated table1.';
        $q -> close();
      endif;
    endif;
    break;
  case 'r2':
    if($q = $con -> prepare("INSERT INTO table2 VALUES (?, ?)")):
      $q -> bind_param("ss",$t1,$t2);
      if($q -> execute()):
        echo 'Successfully updated table2.';
        $q -> close();
      endif;
    endif;
    break;
endswitch;
mysqli_close($con);

因此,我根据 radio 输入以及用户提交的值更新了 table1table2。请注意,我已经阻止了 SQL 注入(inject)。所以我的问题是,这是好的做法,还是我应该制作两种形式,每种形式都有不同的 action=""(使用 query string 在它们之间切换,比如 /main.php?form=form1/main.php?form=form2)?

最佳答案

你做的很好。另一种方法是使用多个 Submit 按钮。提交按钮可以使用 formaction 属性来指定不同的 URL:

<input type="submit" formaction="main.php?action=form1" value="Insert in table1"/>
<input type="submit" formaction="main.php?action=form2" value="Insert in table2"/>
当您点击该提交按钮时,

formaction 会覆盖表单的 action 属性。

然后您可以在 PHP 中使用 switch($_GET['action'])

关于php - 对不同的操作使用多个表单元素是好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23927416/

相关文章:

php - 将 javascript 变量传递到 php 代码中

PHP 核心警告 - yii\base\ErrorException - Yii2

html - iPad 按钮没有获得自定义 CSS

mysql查询第二个单词以字母开头

javascript - 使用 html 和 php 日期和手机号码

php - 从本地主机发送邮件到 Gmail

php - 如何在分类页面显示帖子精选图片?

Javascript:在 IE6/7/8 中切换 z-indexed DIV 可见性

javascript - 使用 ajaxified 内容 (jQuery)

mysql - 从硬编码列表 MySql 中查询