簡體   English   中英

使用PHP從HTML表單中輸入數據庫中的多個值

[英]Inputting multiple values in database from HTML form using PHP

我正在嘗試使用HTML中的PHP將多個值添加到數據庫中。 但是,我不能僅引用HTML表單的name屬性,因為表單中的每個字段都是由PHP腳本生成的。 我已經嘗試了Googling,但是由於我不知道自己在尋找什么,因此搜索一直沒有用。

這是我用來生成HTML表單的代碼:

<form action="input_points.php" method="post">
<?php
    while($row = mysql_fetch_array($result)) {
        echo $row['Name'] . ' <input type="text" name="userpoints">';
    }
?>
<button type="submit" name="add_points">Add Points </button>
</form>

我不知道目錄中當前有什么名稱,因此我需要這段PHP來確定數據庫中的名稱。 之后,我希望有一堆盒子供人們輸入點(因此是表格)。 我在弄清楚如何將特定的文本框與用戶鏈接時遇到麻煩。

例如,如果我有一個Bob的文本框,我該如何鏈接輸入文本字段,其中包含Bob賺取的點數與Bob在數據庫中的條目的分數?

我知道您可以使用常規表單字段執行此操作:

$userpoints = $_POST['userpoints'];

UPDATE members SET points = $userpoints where $user = "Bob";

但是,由於我有多個用戶,如何與正確的用戶鏈接正確的數據庫條目? 另外,我將如何確定哪些框是空的,哪些框是用值更新的?

你正在嘗試做的更新是不是安全的,除非你請客的值以防止SQL注入......但如果你真的想要,而不是mysql_fetch_array()請嘗試使用mysql_fetch_assoc()

使用mysql_fetch_assoc()您可以使用array_keys()提取鍵(數據庫字段名稱array_keys() 鍵將是您表單字段的name屬性,而的值將是字段的值。

希望能幫助到你。

您可以使用數組來存儲所需的所有數據,並添加一個包含缺失數據的隱藏字段:

<form action="input_points.php" method="post">
<?php
    for($i=0; $row = mysql_fetch_array($result); $i++ ) {
        echo ' <input type="hidden" name="user[0]['name'] value ='". $row['name'] ."'">';
        echo $row['Name'] . ' <input type="text" name="user[$i]['points'] ">';
    }
?>
<button type="submit" name="add_points">Add Points </button>
</form>

如果要更新多個字段,則使用數組

請更改一些代碼

<form action="input_points.php" method="post">
<?php
    $userCount=mysql_num_rows($result);
    echo '<input type="hidden" name="userCount" value="' .$userCount. '">';
    while($row = mysql_fetch_array($result)) {
        echo '<input type="hidden" name="userid[]" value="' .$row['id']. '">'; //Give the uniq id
        echo $row['Name'] . ' <input type="text" name="userpoints[]">';
    }
?>
<button type="submit" name="add_points">Add Points </button>
</form>

PHP代碼-

$userCount = $_POST['userCount'];
   for($i=1; $i=$userCount; $i++){
        $userpoints = $_POST['userpoints'];
        $userid = $_POST['userid'];
        //UPDATE members SET points = $userpoints where $user = $userid;
        //YOUR CODE HERE
   }

當你點擊提交userpoints 問題只包含最后一個值前面的所有值都將被覆蓋解決方案的名稱=“userpoints”每次都必須是不同的,為什么不是你在數據庫中定義它,然后把它拿來就像你取$行[“名稱”]?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM