对于每个选定的表单选项,添加到 mysql
For each form option selected, add to mysql
我有多个 select 表格:
<form method="post" action="register_results.php" name="registerform" class="form-horizontal" role="form">
<div class="label">Select Name:</div>
<select name="names" multiple="yes" size="15">
<option value = "">---Select---</option>
<?php
while ( $row=mysqli_fetch_assoc($result)) {
echo "<option value='".$row['registrant_name']."'>".$row['registrant_name']."</option>";
}
mysqli_close($con);
?>
</select>
</form>
register_results.php 文件如下所示:
$registrant_name = $_POST['names'];
$event_result = $_POST['result'];
$query = "UPDATE events_regged SET result = $event_result WHERE event_name='event10' AND registrant_name=('$registrant_name') ";
$result = mysqli_query($con, $query);
如果表单中有多个名称 select,我希望能够添加多个 mysql 行(每个用户名一行)。我该怎么做?
将表单 select 元素名称从 "names" 更改为 "names[]",然后您可以访问一组已发布的值 - 然后您可以对其进行迭代。
您的代码需要进行一些更改,因为
<select name="names" multiple="yes" size="15">
^^^^^
应该是
<select name="names[]" multiple size="15">
这将生成一个数组,因此
的结果
$registrant_name = $_POST['names']
将是一个数组
使用
<select name="names[]" multiple="yes" size="15">
而不是
<select name="names" multiple="yes" size="15">
并使用 foreach
foreach($_POST['names'] as $value)
{
//your query goes here
}
首先把你的表格改成下面这样(在Sql中用Id代替name(string)更优雅和快速):
<select name="ids[]" multiple size="15">
<option value = "">---Select---</option>
<?php
while ( $row=mysqli_fetch_assoc($result)) {
echo "<option value='".$row['registrant_id']."'>".$row['registrant_name']."</option>";
}
mysqli_close($con);
?>
</select>
并在您的 PHP 中使用 foreach:
$registrant_ids = $_POST['ids'];
$event_result = $_POST['result'];
foreach($registrant_ids as $id)
{
$query = "UPDATE events_regged SET result = $event_result WHERE event_name='event10' AND registrant_id=".$id;
$result = mysqli_query($con, $query);
}
我有多个 select 表格:
<form method="post" action="register_results.php" name="registerform" class="form-horizontal" role="form">
<div class="label">Select Name:</div>
<select name="names" multiple="yes" size="15">
<option value = "">---Select---</option>
<?php
while ( $row=mysqli_fetch_assoc($result)) {
echo "<option value='".$row['registrant_name']."'>".$row['registrant_name']."</option>";
}
mysqli_close($con);
?>
</select>
</form>
register_results.php 文件如下所示:
$registrant_name = $_POST['names'];
$event_result = $_POST['result'];
$query = "UPDATE events_regged SET result = $event_result WHERE event_name='event10' AND registrant_name=('$registrant_name') ";
$result = mysqli_query($con, $query);
如果表单中有多个名称 select,我希望能够添加多个 mysql 行(每个用户名一行)。我该怎么做?
将表单 select 元素名称从 "names" 更改为 "names[]",然后您可以访问一组已发布的值 - 然后您可以对其进行迭代。
您的代码需要进行一些更改,因为
<select name="names" multiple="yes" size="15">
^^^^^
应该是
<select name="names[]" multiple size="15">
这将生成一个数组,因此
的结果$registrant_name = $_POST['names']
将是一个数组
使用
<select name="names[]" multiple="yes" size="15">
而不是
<select name="names" multiple="yes" size="15">
并使用 foreach
foreach($_POST['names'] as $value)
{
//your query goes here
}
首先把你的表格改成下面这样(在Sql中用Id代替name(string)更优雅和快速):
<select name="ids[]" multiple size="15">
<option value = "">---Select---</option>
<?php
while ( $row=mysqli_fetch_assoc($result)) {
echo "<option value='".$row['registrant_id']."'>".$row['registrant_name']."</option>";
}
mysqli_close($con);
?>
</select>
并在您的 PHP 中使用 foreach:
$registrant_ids = $_POST['ids'];
$event_result = $_POST['result'];
foreach($registrant_ids as $id)
{
$query = "UPDATE events_regged SET result = $event_result WHERE event_name='event10' AND registrant_id=".$id;
$result = mysqli_query($con, $query);
}