使用php在循环中生成按钮

时间:2014-09-10 20:39:32

标签: php sql loops button dynamically-generated

我目前正在编写Web应用程序以捕获联系人数据。

它可以显示mysql数据库中的表(请参阅SELECT语句)。 现在我想动态生成用于从数据库中删除特定行的按钮。 它可以显示按钮,但它们无法正常工作。

我使用变量$ id来命名不同的按钮“rowButton1”,“rowButton2”等等。 在下一步中,如果单击该按钮,我想删除该行。

如何在下面的if语句中找到特定行中的按钮?

            $res = mysql_query("SELECT id, type_id, title, visible FROM field ORDER BY step, pos");
            echo '<table border="1">';
            while ($row = mysql_fetch_assoc($res)) {
                $id = $row['id'];
                echo "<tr>";
                echo "<td>" . $row['id'] . "</td>";
                echo "<td>" . $row['type_id'] . "</td>";
                echo "<td>" . $row['title'] . "</td>";
                echo "<td>" . $row['visible'] . "</td>";
                echo('<td><input type="submit" name="rowButton'.$id.'" value="Delete"/> </td>');
            }
            echo "</table>";

            if(post('rowButton'.$id) =="Delete"){
                    $del = mysql_query("DELETE FROM field WHERE id=$id");
                    echo'<p>Entry was succesfully deleted</p>';
            }

5 个答案:

答案 0 :(得分:0)

基本上你必须通过javascript指定当按钮被触发时会发生什么(即获取按钮的id,然后ajax调用你的php脚本),然后在单独的脚本中处理删除。现在我认为你正在混合你网站的前端和后端。 A brief explanation of frontend vs backend

答案 1 :(得分:0)

您需要移动if内的while以及其他一些调整...

        $res = mysql_query("SELECT id, type_id, title, visible FROM field ORDER BY step, pos");
        echo '<table border="1">';
        while ($row = mysql_fetch_assoc($res)) {
            if(post('rowButton'.$row['id']) =="Delete"){
                $del = mysql_query("DELETE FROM field WHERE id=" . $row['id']);
                $deleted = '<p>Entry ' . $row['id'] . ' was succesfully deleted</p>';
            } else {
                echo "<tr>";
                echo "<td>" . $row['id'] . "</td>";
                echo "<td>" . $row['type_id'] . "</td>";
                echo "<td>" . $row['title'] . "</td>";
                echo "<td>" . $row['visible'] . "</td>";
                echo '<td><input type="submit" name="rowButton'. $row['id'] .'" value="Delete"/> </td>';
                echo "</tr>";
            }
        }
        echo "</table>";
        echo $deleted;

答案 2 :(得分:0)

要点:

1)您发布的代码有一个起始<tr>标记,但它永远不会结束

2)如果你使用按钮生成行和列,那么按钮应该由JavaScript,jQuery处理什么操作。

3)你没有提到你的post()正在做什么,所以不清楚它为什么或如何返回一个字符串&#34;删除&#34;

你应该做什么?

1)在创建它们时给每个按钮一个唯一的id,在你的情况下,你将从{mysql}获得id

2)还在按钮标记中插入onmousedown = "some_function(this.id)"

3)在函数中获取要删除的行的id

4)通过jQuery $.post()

将其发送到php

5)获取php中的id将其插入到sql查询中以删除行

你完成了!! 希望你明白了

答案 3 :(得分:0)

在PHP中,提交输入类型将执行一个知道<form>标记的php文件。 See

您要发送到将要执行的php文件的所有数据必须位于表单标记之间。 例如:

<html>
<body>

<form action="extraction.php" method="post">
    Number 1: <input type="text" name="en1"><br>
    Number 2: <input type="text" name="en2"><br>
    <input type="submit">
</form>

<form action="sum.php" method="post">
    Number 1: <input type="text" name="sn1"><br>
    Number 2: <input type="text" name="sn2"><br>
    <input type="submit">
</form>


</body>
</html>

在第一个块中,form标签将执行extract.php文件并传递en1和en2。 在第二个表单块中,标记将通过传递sn1和sn2来执行sum.php文件。

你不能将en1或en2值传递给sum.php,同样也不能将sn1和sn2传递给extract.php。

因此,基本上您需要每行的表单标记或使用JavaScript onclick触发器。

答案 4 :(得分:0)

为什么不使用

 if(isset($_POST['rowButton'.$id]))
 {    }

取代

if(post('rowButton'.$id) =="Delete")
{   }