2017-12-02 212 views
0

我的目標填充一個WebForm的同桌是創建一個動態網頁,返回所有記錄在表中滿足給定的標準,並使用它們來填充網頁表單。然後,用戶可以更改按照自己的意願,並按下一個按鈕,更新整個表。更新多行中使用PHP和SQL

在下面我想列出所有事件的例子,開始時間將出現在一個可編輯的文本框,當我按下提交應更新所有的值。

我已經創建了一個樣本:

$query = "SELECT * FROM Events"; 
$result = mysqli_query($dbc, $query) ; 

if (mysqli_num_rows($result) > 0) 
    { 
    echo '<form action="update_events.php" method="post">>'; 
    echo '<table><tr>'; 

    while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) 
    { 

     echo '<td>' . $row['Event_Name'] .' </td>'. 
      '<td>' . $row['Event_Date'] .'</td>'. 
      '<td><input name="'. $row['Event_ID'] .'" type="text" value="'$row['Event_Start_Time'] .'"></td>'; 
     echo '</tr>'; 
    } 
    echo '</table>'; 
    echo ' <input type="submit" value="Submit"></form>'; 

    mysqli_close($dbc) ; 
} 
else 
{ 
    echo '<p>There are currently no events.</p>' ; 
} 

我找不出我們如何獲得的update_events.php的處理工作,任何幫助,將不勝感激。

foreach(????){ 
    $sql = "UPDATE Events SET Event_Start='$Event_Start' WHERE id='$Event_ID'"; 
    mysqli_query($dbc, $sql) 
} 
+0

一個簡單的開始將在update.php中再次獲取所有記錄,然後在循環中迭代它們,並且您可以從$ _POST ['$ id_from_db']中獲取所需的值,如 – RohitS

回答

1

你真的想保持你的POST變量是靜態的,它使生活更輕鬆。不要試圖用一個變量來存儲兩個值,他們每個人一個。

當你提交你要循環的話很有道理提交他們的陣列多個值到服務器上,所以這樣的事情:

$i=0; 
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) 
{ 
    echo '<td>' . $row['Event_Name'] .' </td>'. 
     '<td>' . $row['Event_Date'] .'</td>'. 
     '<td><input name="event['.$i.'][start]" type="text" value="'$row['Event_Start_Time'] .'"><input name="event['.$i.'][ID]" type="hidden" value="'. $row['Event_ID'] .'"></td>'; 
    echo '</tr>'; 
    $i++; 
} 

現在你的形式將提交所有的事件多維數組,你可以在$_POST['event']和遍歷檢索它做你的數據庫更新這樣的:

$stmt = $this->mysqli->prepare("UPDATE Events SET Event_Start=? WHERE id=?"); 
$stmt->bind_param('ss', $start, $id); 
foreach ($_POST['event'] as $event) { 
    $start = $event['start']; 
    $id = $event['ID']; 
    $stmt->execute(); 
} 

此代碼使用準備好的語句的數據庫插入,您所使用的方法是不安全的,讓你容易受SQL注入影響。你應該閱讀Mysqli準備好的陳述並開始使用它們。

+0

謝謝您,我將開始閱讀在準備好的報表上。 – user2956578