【问题标题】:foreach loop submit button issueforeach 循环提交按钮问题
【发布时间】:2015-09-25 02:19:44
【问题描述】:

首先我这周开始写php,可能会有不必要的行:) 我只是想弄清楚逻辑。现在一切都很好(感谢stackoverflow)。直到,

在我的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";
        }
        }

【问题讨论】:

  • 你也应该在这里使用准备好的语句,$sql = $db -&gt; query("SELECT * FROM rehber WHERE k_id='".$id."' AND isim LIKE '%$ara%'");

标签: php pdo foreach submit-button


【解决方案1】:

我能看到的唯一真正的问题是初始表单构造函数是否出现在表单元素之外,而表单元素在 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>";
    }

现在您已经在循环中构建了表单,并且索引正在正确传递。

【讨论】:

  • 嗨,谢谢您的快速回答。您的解决方案解决了我的问题的一半:) 现在按钮正在工作,但我需要数据库 id 的确切值,因为我正在更新数据库中的行。使用您的解决方案 $iden 获取从 0 到结束的值。我仍然不明白为什么按钮不起作用。是因为表单标签在循环之外还是因为 $iden.再次感谢
  • 唯一的问题是在循环中创建表单。现在我发现当表单创建结束时,它只创建一个表单,它是第一个表单,因此我无法激活其他按钮。感谢您的帮助@ohgodwhy。
猜你喜欢
  • 1970-01-01
  • 2018-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-29
  • 2017-09-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多