我最费力的是要弄清楚我认为应该很简单的东西。我需要使用一个提交按钮更新数据库中的多行。我现在正在处理每一行的提交,但是我需要将其合并。这就是我正在尝试的。我哪里出问题了? (我从网上找到的多个教程中脱颖而出,我认为所有事情都混在一起了)。

形式如下:

<?php foreach ($teams as $team):
$id[]=$team['id'];?>


<form action="?update" method="post">
    <div class="team-box">
        <h2><?php echo $team['name'] ?></h2>

        <label for="name">Name:</label>
        <input type="text" name="name" value="<?php echo $team['name'] ?>" />

        <label for="name">Match Wins:</label>
        <input type="text" name="mwins" value="<?php echo $team['mwins'] ?>" />

        <label for="name">Match Losses:</label>
        <input type="text" name="mlosses" value="<?php echo $team['mlosses'] ?>" />

        <label for="name">Match Ties:</label>
        <input type="text" name="mties" value="<?php echo $team['mties'] ?>" />

        <label for="name">Game Wins:</label>
        <input type="text" name="gwins" value="<?php echo $team['gwins'] ?>" />

        <label for="name">Game Losses:</label>
        <input type="text" name="glosses" value="<?php echo $team['glosses'] ?>" />

        <input type="hidden" name="id" value="<?php echo $team['id'] ?>" />
    </div>


 
       

这是处理UPDATE的PHP:

try
{
foreach($_POST['id'] as $id) {
$sql = 'UPDATE teams SET
    name = "' . $_POST['name'.$id] . '",
    mwins = "' . $_POST['mwins'.$id] . '",
    mlosses = "' . $_POST['mlosses'.$id] . '",
    mties = "' . $_POST['mties'.$id] . '",
    gwins = "' . $_POST['gwins'.$id] . '",
    glosses = "' . $_POST['glosses'.$id] . '"
    WHERE id = "' . $_POST['id'.$id] . '"';
$pdo->exec($sql);
}

}
catch (PDOException $e)
{
    $error = 'Error adding submitted team: ' . $e->getMessage();
    include 'error.html.php';
    exit();
}

header('Location: .');
exit();


提前致谢!

最佳答案

有几件事需要修复。


表格必须在foreach之外。
同意_POST代码的'... name =“ name” value =“ ...'应该改为:
     ... name =“名称” value =“ ...


这样,单个POST将提交,例如,

  name123="Rangers"
  mwins174="123"


然后,您需要所有ID。您可以通过在foreach中发出以下命令来做到这一点:

 <input type="hidden" name="id[]" value="<?php print $team['id']; ?>" />


这将产生HTML:

 <input type="hidden" name="id[]" value="123" />
 ...
 <input type="hidden" name="id[]" value="456" />


并且$ _POST ['id']是包含123、456等的数组。

您还可以输入HTML:

 <input type="text" name="name[<?php print $team['id']; ?>]" value="...


因此$ _POST ['name']将是一个具有与id值相同的键的向量,因此:

foreach($id as $team_id)
{
    // Pseudocode
    UPDATE... SET name=$name[$team_id]... WHERE id = $team_id;
}


这样,您就有一个提交和多个更新。

10-05 21:08
查看更多