同一个 html 表单有多个提交按钮
Many Submit buttons for the same html form
希望你一切都好,
我有以下形式:
<form class="hidden-print" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<table class="table table-bordered">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
</tr>
</thead>
<tr>
<?php
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * from persons";
$i=0;
foreach ($pdo->query($sql) as $row) {
echo '<tr>';
echo '<td>'. $row['id'] . '</td>';
echo'<input type="hidden" name="id[]" value="' . $row['id'] . ' ">';
echo '<td>'. $row['Name'] . '</td>';
echo'<input type="hidden" name="name[]" value="' . $row['Name'] . ' ">';
$i++;
}
Database::disconnect();
?>
</tr>
</table>
<input class="btn btn-primary" type="submit" value="Send" >
</form>
让我解释一下这里发生的事情,我的表单是 PHP_SELF 所以我 post 数据到同一页,我在包含 ID 和名称的表单中创建了一个 table ,我循环遍历所选数据,table 中的每一行都将包含 id 和人名,如您所见,我将输入名称和 id 定义为数组,例如。 name[] 和 id[] ,我在表单末尾有一个提交按钮 post 数组 id[] 和 name[].
现在我想要的是在每一行中放置一个提交输入!因此,当我单击提交按钮时,它将 post 只有此行中人员的 ID 和姓名!
这可能吗?!
问候。
您已经在名称中使用关联数组,例如name[]
使用计数器:
name[<?php echo $i;?>]
并添加相同的提交按钮
<input type="submit" name="submit[<?php echo $i;?>]"/>
在PHP中循环$_POST
。
并使用 foreach
循环检查提交按钮的索引。
对 name
、id
等使用相同的索引
希望对您有所帮助。
答案更新为代码:
<form class="hidden-print" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<table class="table table-bordered">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
</tr>
</thead>
<tr>
<?php
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * from persons";
$i=0;
foreach ($pdo->query($sql) as $row) {
echo '<tr>';
echo '<td>'. $row['id'] . '</td>';
echo'<input type="hidden" name="id['.$row['id'].'" value="' . $row['id'] . ' ">';
echo '<td>'. $row['Name'] . '</td>';
echo'<input type="hidden" name="name['.$row['id'].'" value="' . $row['Name'] . ' ">';
?>
<td>
<input class="btn btn-primary" type="submit" value="Send" name="send<?php echo $rowp['id'];?>" >
</td>
</tr>
<?php
++$i;
}
Database::disconnect();
?>
</tr>
</table>
</form>
<?php
if (! empty($_POST['send'])) {
foreach ($_POST['send'] as $key => $posted) {
$id = isset($_POST['id'][$key]) ? $_POST['id'][$key] : '';
$name = isset($_POST['name'][$key]) ? $_POST['name'][$key] : '';
// Do your SQL here.
}
}
?>
Note: HTML mark ups are used as it is, please correct it as per your needs.
希望你一切都好,
我有以下形式:
<form class="hidden-print" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<table class="table table-bordered">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
</tr>
</thead>
<tr>
<?php
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * from persons";
$i=0;
foreach ($pdo->query($sql) as $row) {
echo '<tr>';
echo '<td>'. $row['id'] . '</td>';
echo'<input type="hidden" name="id[]" value="' . $row['id'] . ' ">';
echo '<td>'. $row['Name'] . '</td>';
echo'<input type="hidden" name="name[]" value="' . $row['Name'] . ' ">';
$i++;
}
Database::disconnect();
?>
</tr>
</table>
<input class="btn btn-primary" type="submit" value="Send" >
</form>
让我解释一下这里发生的事情,我的表单是 PHP_SELF 所以我 post 数据到同一页,我在包含 ID 和名称的表单中创建了一个 table ,我循环遍历所选数据,table 中的每一行都将包含 id 和人名,如您所见,我将输入名称和 id 定义为数组,例如。 name[] 和 id[] ,我在表单末尾有一个提交按钮 post 数组 id[] 和 name[].
现在我想要的是在每一行中放置一个提交输入!因此,当我单击提交按钮时,它将 post 只有此行中人员的 ID 和姓名!
这可能吗?!
问候。
您已经在名称中使用关联数组,例如name[]
使用计数器:
name[<?php echo $i;?>]
并添加相同的提交按钮
<input type="submit" name="submit[<?php echo $i;?>]"/>
在PHP中循环$_POST
。
并使用 foreach
循环检查提交按钮的索引。
对 name
、id
等使用相同的索引
希望对您有所帮助。
答案更新为代码:
<form class="hidden-print" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<table class="table table-bordered">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
</tr>
</thead>
<tr>
<?php
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * from persons";
$i=0;
foreach ($pdo->query($sql) as $row) {
echo '<tr>';
echo '<td>'. $row['id'] . '</td>';
echo'<input type="hidden" name="id['.$row['id'].'" value="' . $row['id'] . ' ">';
echo '<td>'. $row['Name'] . '</td>';
echo'<input type="hidden" name="name['.$row['id'].'" value="' . $row['Name'] . ' ">';
?>
<td>
<input class="btn btn-primary" type="submit" value="Send" name="send<?php echo $rowp['id'];?>" >
</td>
</tr>
<?php
++$i;
}
Database::disconnect();
?>
</tr>
</table>
</form>
<?php
if (! empty($_POST['send'])) {
foreach ($_POST['send'] as $key => $posted) {
$id = isset($_POST['id'][$key]) ? $_POST['id'][$key] : '';
$name = isset($_POST['name'][$key]) ? $_POST['name'][$key] : '';
// Do your SQL here.
}
}
?>
Note: HTML mark ups are used as it is, please correct it as per your needs.