gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 23:01:05 25 4
gpt4 key购买 nike

我想知道您是否可以拥有包含多个操作的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com