2017-12-02 154 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