foreach循环提交按钮问题

foreach loop submit button issue

首先我这周开始写php,可能会有不必要的台词:) 我只是想弄清楚逻辑。现在一切顺利(thx to Whosebug)。直到,

在我的 foreach 循环语句中,我放置了提交按钮,我在按钮名称后添加了数据库 ID。所以我也把 id 放在 $_POST 之后。但问题是只有第一个提交按钮有效。当我点击其他时没有任何反应。

感谢您的帮助。 (顺便说一句,我尝试了 foreach 按钮问题的所有其他答案。没有帮助)

if (isset($_POST['arama'])) {
    $ara = trim(strip_tags($_POST["ara"]));
    $duzelt = trim(strip_tags($_POST["duzelt"]));
    $id = $_SESSION["id"];

    if (!empty($ara)) {
        echo '<div class="form-style-10">';
        echo '<table><tr>';
        echo "<th>İsim</th><th>Cep Telefonu</th><th>Sabit Telefonu</th>        </tr>";

        $ara1 = '%'.$ara.'%';
        $sql = $db -> query("SELECT * FROM rehber WHERE k_id='".$id."' AND isim LIKE '%$ara%'");
        $yok = $sql->rowCount();;

        if ($yok != 0) {

            echo "<form action=''  method='POST'>";
        foreach ($sql as $dizi) {
            $iden=$dizi[id];
            echo "<tr><td><input type='text' name='isim1' value='$dizi[isim]'></td>";
            echo "<td><input type='text' name='cep1' value='$dizi[cepno]'></td>";
            echo "<td><input type='text' name='ev1' value='$dizi[evno]'></td>";
            echo "<input type='hidden' name='id2' value='$iden'>";
            echo "<td><input type='submit' name='duzelt".$iden."' value='duzelt'></td></form></tr>";
        }
        echo "</table>";

        echo "</div>";

    }else{
        echo '<div class="form-style-10" style="background-color:#f04"><div class="section" style="color:#FFFC00">'.$ara.' adında bir kullanıcı kayıtlı değildir.</div></div>';
        header("refresh:3;rehber.php?mr=arama");
    }
    }
    else{
        echo '<div class="form-style-10" style="background-color:#f04"><div class="section" style="color:#FFFC00">Arama kutusu boş. Lütfen aramak istediğiniz kişinin adını yazınız.</div></div>';
        header("refresh:3;rehber.php?mr=arama");

    }
}
$buton = "duzelt".$_POST["id2"];
if (isset($_POST[$buton]) && $_POST[$buton]) {
    $duz = $_POST[$buton];
    if (!empty($duz)) {
            echo $_POST["isim1"];
            echo $_POST["cep1"];
            echo $_POST["ev1"];
            echo $_POST["id2"];
            echo $buton;

            $sql1 = $db -> prepare("UPDATE rehber SET isim = ?, cepno = ?, evno = ? WHERE id = ?");
            $sql1 -> execute(array($_POST["isim1"], $_POST["cep1"], $_POST["ev1"], $_POST["id2"]));
            echo "Kayıt başarıyla tamamlanmıştır.";
            header("refresh:3;rehber.php?mr=duzen");
        }else{
            echo "kaydedilecek veri yok";
        }
        }

我能看到的唯一真正问题是初始表单构造函数是否出现在表单元素之外,而表单元素在 foreach 循环中关闭。我会将表单构造函数移动到 foreach 循环中。此外,作为辅助,您在 $iden 构造函数中使用 id 作为常量值。这很容易解决,但您似乎真的想要索引,您可以从 foreach 循环中获取它。

请注意:

    foreach ($sql as $iden => $dizi) { // <-- $iden is now the index
        //$iden=$dizi[id]; <- no longer required
        echo "<form action=''  method='POST'>"; // <--form created inside loop
        echo "<tr><td><input type='text' name='isim1' value='$dizi[isim]'></td>";
        echo "<td><input type='text' name='cep1' value='$dizi[cepno]'></td>";
        echo "<td><input type='text' name='ev1' value='$dizi[evno]'></td>";
        echo "<input type='hidden' name='id2' value='$iden'>";
        echo "<td><input type='submit' name='duzelt".$iden."' value='duzelt'></td></form></tr>";
    }

现在您已经在循环中构造了表单,索引也被正确地传递了。