使用按钮从php表单更新mysql datarow

时间:2017-09-12 17:49:45

标签: php mysql

我正在尝试更新包含几行mysql数据的php表单。我在每一行旁边都有一个按钮,当我点击它时我想要更新该行。我在下面的问题是ID仅被设置为最后一行。如何将ID推送到按钮?所以基本上无论按什么按钮我总是得到相同的ID,这是最后一个加载。

    if($result){
        while($row = mysqli_fetch_array($result)){
            $id = $row["ID"];
            $beername = $row["BeerName"];
            $beertype = $row["BeerType"];
            $beerpercent = $row["BeerPercent"];
            $beerdescription = $row["BeerDescription"];
            $nowpouring = $row["NowPouring"] =='0' ? '' : 'checked=\"checked\"';
            $glutenreduced = $row["GlutenReduced"] =='0' ? '' : 'checked=\"checked\"';
            $beertogo = $row["BeerToGo"] =='0' ? '' : 'checked=\"checked\"';

            echo "<form action='' method='POST'>";
            echo "<tr><td><h6><input type=\"text\" size=\"5\" name=\"id\" value=\"$id\"></h6></td>";
            echo "<td><h6><input type=\"text\" size=\"30\" name=\"BeerName\" value=\"$beername\"></h6></td>";
            echo "<td><h6><input type=\"text\" size=\"30\" name=\"BeerType\" value=\"$beertype\"></h6></td>";
            echo "<td><h6><textarea size=\"90\" style=\"width:250px;height:150px;\" name=\"BeerDescription\" value=\"\">$beerdescription</textarea></h6></td>";
            echo "<td><h6><input type=\"text\" size=\"5\" name=\"Percent\" value=\"$beerpercent\"></h6></td>";
            echo "<td><h6><input type=\"checkbox\" name=\"NowPouring\" value=\"true\" $nowpouring></h6></td>";
            echo "<td><h6><input type=\"checkbox\" name=\"GlutenReduced\" value=\"true\" $glutenreduced></h6></td>";
            echo "<td><h6><input type=\"checkbox\" name=\"BeerToGo\" value=\"true\" $beertogo></h6></td>";
            #echo "<td><h6> <a href=\". $_SERVER["PHP_SELF"] .?id=".mysql_result($result,$j,'id')."\" onclick=\"\"></h6></td>";
            echo "<td><h6> <button name=\"submit\" type=\"submit\" value=\"$id\">Save</button></h6></td>";
            echo "</tr>";
            echo "</form>";
        }
    }



if (isset($_POST['submit'])) {
    $user = $_POST['submit'];
    echo "<p style=\"color:#ffffff\">$id</p>";
    #$delet_query = mysqli_query($mysqli, "UPDATE NowPouring SET NowPouring = '1' WHERE ID = '4'") or die(mysql_error());

    if ($delet_query) {
        echo '<p style="color:#ffffff">Beer with id '.$id.' is updated. To refresh your page, click ' . ' <a href=' . $_SERVER["PHP_SELF"] . ' > here </a></p>';
    }
}


?>

4 个答案:

答案 0 :(得分:0)

您的表单标记位于错误的位置。 它应该在:

之内
while($row = mysqli_fetch_array($result)){
   $id = $row["ID"];
   //....
   //....
   echo "<form action='' method='POST'>";
   echo"<tr>";
     echo "<td>" . $id . "</td>";
     //....
     //....
     echo "<td><button type='submit' name='submit'>Save</button></td>";
   echo"</tr>";
   echo "</form>";
 }

答案 1 :(得分:0)

您看到这个结果是因为每个输入的“名称”是相同的,所以基本上您有一个包含一堆具有相同名称的元素的表单。您需要为每个名称添加动态方面。

例如,您可以将输出更新为以下内容:

 echo "<tr><td><h6><input type=\"text\" size=\"5\" name=\"id_$id\" value=\"$id\"></h6></td>";

每行添加当前id。然后,当您检索表单数据时,可以将提交的ID附加到要更新的字段。

您是否考虑过使用AJAX方法,以便只提交相关行,而不必每次都重新加载页面并返回整个数据集?

答案 2 :(得分:0)

为每个提交按钮设置<form>。在<form>中添加while()

if($result){
  while($row = mysqli_fetch_array($result)){
    echo "<form action='' method='POST'>";
    //...
    echo "</form>";
  }
}

答案 3 :(得分:0)

我在这里看到的主要问题是代码的while循环为输入生成了相同的名称......

你所有的&#34; <button name=\"submit\" type=\"submit\" value=\"$id\">Save</button>&#34;将具有相同的名称,这就是为什么它总是将最后一个id作为值。

也许你应该尝试一些诸如......

<button name=\"$id_submit\" type=\"submit\" value=\"$id\">Save</button>

或者如果你想要,你可以将它存储在数组中..

<button name=\"submit[]\" type=\"submit\" value=\"$id\">Save</button>