2016-05-14 27 views
-5
<?php 
include 'connection.php'; 
?> 
<form action="update.php" method="post"> 
<?php 
$grp=$_GET['group_num']; 
$query = "SELECT * FROM lectures_table WHERE group_num=$grp"; 
$result = mysql_query($query); 

while($row=mysql_fetch_array($result)){ 

</div> 
<input type="hidden" name="group_num" value="<?php echo $grp; ?>" /> 
    <input type="text" placeholder="First Lecture" name="day[]" value="<?php    
echo $row['day']; ?>"></td> 
    <input type="text" placeholder="First Lecture" name="f[]" value="<?php  

echo $row['first']; ?>"></td><br> 

</tr> 

<?php 


} ?> 

</tbody> 
</table>   
    <input type="submit" class="btn btn-success" name="edit" value="save"> 
    &emsp;&emsp; 
</form> 
    </div> 
    </div> 
    </div> 
</div> ?> 
</body> 
    </html> 

update.php更新查詢只更新了最後一排,並影響到其他與它的價值

<?php 
    include 'connection.php'; 
    $i = 0; 
    while ($i < 5) { 
    // define each variable 
    $scoreaway = $_POST['f'][$i]; 

    // do the update and print out some info just to provide some visual feedback 
    echo $query = "UPDATE lectures_table SET first='".$scoreaway."' WHERE   
    group_num=1"; 
    mysql_query($query) or die ("Error in query: $query"); 

    $i++; 
    } 

    mysql_close(); 

    ?> 

更新詢問剛剛更新了最後一排。我該怎麼做我很重要。

當我提交我的表單時,所有的值都取最後一次輸入的值?

+0

'UPDATE'查詢將更新任何和所有'group_num = 1'的行,因爲這完全是*查詢中寫入的內容。 – David

+2

在查詢中使用'$ _POST ['group_num']'而不是'1'。 – Barmar

+0

不需要在'while()'循環內部放置隱藏的輸入,因爲它對每一行都是相同的值。在循環之外執行一次。 – Barmar

回答

0

您需要更改表格,以便每行都有一個隱藏的輸入,其中包含該行的ID。

while($row=mysql_fetch_array($result)){ ?> 
<tr> 
    <td><input type="hidden" name="id[]" value="<?php echo $row['id']; ?>" /></td> 
    <td><input type="text" placeholder="First Lecture" name="day[]" value="<?php echo $row['day']; ?>"></td> 
    <td><input type="text" placeholder="First Lecture" name="f[]" value="<?php echo $row['first']; ?>"></td> 

</tr> 
<?php } 

然後使用該ID在UPDATE聲明,不group_num

foreach ($_POST['id'] as $i => $id) { 
    $scoreaway = $_POST['f'][$i]; 
    $day = $_POST['day'][$i]; 
    $query = "UPDATE lectures_table 
       SET first='$scoreaway', day = '$day' 
       WHERE id = $id"; 
    mysql_query($query); 
} 

此外,您應該從廢棄的mysql擴展名切換到mysqli或PDO,並使用準備好的語句。您當前的代碼易受SQL注入攻擊。請參閱How can I prevent SQL injection in PHP?

+0

先生我試過但沒有改變我不知道爲什麼最後一行給它的其他行 –

+0

由於'UPDATE'語句對每個輸入使用相同的'WHERE group_num = $ _POST ['group_num']''。是否有行中的ID用於更新該行? – Barmar

+0

我得到錯誤信息 未定義指數:ID爲的foreach提供 無效的參數() 我應該怎麼辦 –