【问题标题】:PHP While loop post data to edit 1 rowPHP While 循环发布数据以编辑 1 行
【发布时间】:2013-07-03 03:33:49
【问题描述】:

我做了一个while循环,显示数据库中Ploegen中的所有用户我让它输出了应该隐藏的文本,但我正在测试它。无论如何,它只需要更新 1 行,它在页面上显示的文本和 id 是正确的,但是更新总是 ID 1,而我更改了很多选项值并且 valueid(名称)总是相同的。

如你所见,我不知道如何完成这项工作,希望你能解释一下。

我不需要反馈,因为代码不好,只需要解决问题的帮助。

<div class="content-module-main">
                        <?php if(isset($_POST['submit'])){
                        $idtje = $_POST['valueid'];
                        $valueid = $_POST['ploeg'];
                        $idtje = mysqli_real_escape_string($connect, $idtje);
                        $valueid = mysqli_real_escape_string($connect, $valueid);
    //$go = "UPDATE `ploegen` SET `ploeg`='$id' where `id`='$valueid'";
    //$go2 = mysqli_query($connect, $go);
                        echo "<di" . "v class=\"confirmation-box round\">Ploegentest var_dump($valueid); var_dump($idtje);</div>";
                        }
                        ?>
                        <table>
                            <thead>
                                <tr>
                                    <th>Ploeg</th>
                                    <th>Naam</th>
                                    <th>Tel</th>
                                    <th>Gas of Elektra</th>
                                    <th>Wijzig</th>
                                </tr>

                            </thead>
                            <tbody>

                                <tr>
                                    <form method="post" action="home_ploegen_b.php">
                                    <?php 
                                    $query = "SELECT naam, telefoonnummer, id, ploeg, gasofelektra FROM ploegen ORDER by naam DESC LIMIT 100";
                                    if ($result = mysqli_query($connect, $query)) {
                                    while ($get = mysqli_fetch_assoc($result)) {
                                    echo"<tr><td><center>" . $get['ploeg'] . "</center></td>";
                                    echo"<td>" . $get['naam'] . "</td>";
                                    echo"<td>" . $get['telefoonnummer'] . "</td>";
                                    echo"<td>" . $get['gasofelektra'] . "</td>";
                                    echo"<td><center><input type=\"text\" name=\"valueid\" value=\"" . $get['naam'] . "\" /><select name=\"ploeg\">
                                    <option value=\"1\">Ploeg 1</option>
                                    <option value=\"2\">Ploeg 2</option>
                                    <option value=\"3\">Ploeg 3</option>
                                    <option value=\"4\">Ploeg 4</option>
                                    <option value=\"5\">Ploeg 5</option>
                                    <option value=\"6\">Ploeg 6</option>
                                    <option value=\"7\">Ploeg 7</option>
                                    <option value=\"8\">Ploeg 8</option>
                                    <option value=\"9\">Ploeg 9</option>
                                    <option value=\"10\">Ploeg 10</option>
                                    </select><input type=\"submit\" name=\"submit\" value=\"UPDATE\"></center></td></tr>";

                                                                          }
                                    }
                                        ?>                  </td></form>

【问题讨论】:

  • 您的表结构错误。先检查并清除。
  • 对每一行使用单独的表格。
  • @monojit 我该怎么做?大声笑
  • 喜欢您的提交按钮。在循环中实现表单并传递表单 ID 或名称。
  • @monojitThanks, make an answer Ill rep u up it works 不敢相信我会这么愚蠢:)

标签: php html mysql loops while-loop


【解决方案1】:

我认为这就是您遇到的问题。

<input type=\"text\" name=\"valueid\" value=\"" . $get['naam'] . "\" />
<select name=\"ploeg\". 

您的文本字段和选择字段名称在所有行中都相同。请为每个字段设置一个动态名称或使用名称作为数组

参考链接:-

Array Name

Dynamic Naming

这是您使用数组命名的代码

while ($get = mysqli_fetch_assoc($result)) {
    echo"<tr><td><center>" . $get['ploeg'] . "</center></td>";
    echo"<td>" . $get['naam'] . "</td>";
    echo"<td>" . $get['telefoonnummer'] . "</td>";
    echo"<td>" . $get['gasofelektra'] . "</td>";
    echo"<td><center><input type=\"text\" name=\"valueid[]\" value=\"" . $get['naam'] . "\" />
    <select name=\"ploeg[]\">
    <option value=\"1\">Ploeg 1</option>
    <option value=\"2\">Ploeg 2</option>
    <option value=\"3\">Ploeg 3</option>
    <option value=\"4\">Ploeg 4</option>
    <option value=\"5\">Ploeg 5</option>
    <option value=\"6\">Ploeg 6</option>
    <option value=\"7\">Ploeg 7</option>
    <option value=\"8\">Ploeg 8</option>
    <option value=\"9\">Ploeg 9</option>
    <option value=\"10\">Ploeg 10</option>
    </select>
    <input type=\"submit\" name=\"submit\" value=\"UPDATE\"></center></td></tr>";
}

而这个是动态命名的

$row = 1;
while ($get = mysqli_fetch_assoc($result)) {
    echo"<tr><td><center>" . $get['ploeg'] . "</center></td>";
    echo"<td>" . $get['naam'] . "</td>";
    echo"<td>" . $get['telefoonnummer'] . "</td>";
    echo"<td>" . $get['gasofelektra'] . "</td>";
    echo"<td><center><input type=\"text\" name=\"valueid$row\" value=\"" . $get['naam'] . "\" />
    <select name=\"ploeg$row\">
    <option value=\"1\">Ploeg 1</option>
    <option value=\"2\">Ploeg 2</option>
    <option value=\"3\">Ploeg 3</option>
    <option value=\"4\">Ploeg 4</option>
    <option value=\"5\">Ploeg 5</option>
    <option value=\"6\">Ploeg 6</option>
    <option value=\"7\">Ploeg 7</option>
    <option value=\"8\">Ploeg 8</option>
    <option value=\"9\">Ploeg 9</option>
    <option value=\"10\">Ploeg 10</option>
    </select>
    <input type=\"submit\" name=\"submit\" value=\"UPDATE\"></center></td></tr>";
    $row ++;
}

【讨论】:

  • 你会怎么建议?
  • 既然你花了这么多时间回答,我喜欢这个答案一切正常,不感谢!
【解决方案2】:

mysqli_fetch_assoc :- 返回表示结果集中获取的行的字符串关联数组,其中数组中的每个键表示结果集列之一的名称,如果结果集中没有更多行,则返回 NULL。

要访问同名的其他列,您需要使用mysqli_fetch_row() 访问带有数字索引的结果,或者添加别名。

【讨论】:

  • 呃?它可以正确显示所有内容,哈哈,我只是在帖子中需要它,它没有正确传递信息。
  • 呃,我放了一张图片来说明按下更新时我想要什么我想要更新我选择的行
  • 是的,最好理解
  • 你能帮帮我吗?当按下更新时,我希望更新 if(isset($_POST[submit] 的行,但输出 ploeg 1 始终为 1 并且名称始终相同
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-31
  • 2017-10-08
  • 1970-01-01
  • 1970-01-01
  • 2015-12-21
  • 2021-02-09
相关资源
最近更新 更多