我在这里遇到一个奇怪的问题。我有一个数据库,其中存储有关事件的已发送邀请的信息以及该请求的答案。喜欢:
event_id | event | attendee | invited | response
1 1 1 yes no
2 1 2 yes yes
3 2 1 no no
接下来,我通过mysqli和php在带有单选按钮的表格中显示结果,以便简单地编辑信息。但是,如果我发送表单经常(并非总是)发生,错误的POST变量将被移交,因此数据库通过更新错误信息而搞砸了。 被邀请甚至接受邀请的人,然后被视为未经邀请或被拒绝。
有谁可以告诉我,问题可能是什么?
//creates an empty array for the results of the database
sec_session_start();
$i = 0;
$_SESSION['i'] = array();
$_SESSION['email'] = array();
$_SESSION['ida'] = array();
$_SESSION['pid'] = array();
//db infortmaiton gets stored in the session
while ($row = $res->fetch_assoc()) {
$_SESSION['i'][] = $i;
$_SESSION['email'][] = $row["email"];
$_SESSION['pid'][] = $row["idperson"];
$_SESSION['ida'][] = $row["anmeldungsid"];
//radiobuttons with db info get displayed
<td>
<label>
<input type="radio" name="<? echo 'eingeladen'.$i?>" id="<? echo 'einja'.$i?>" value="Ja" <?php echo ($row["eingeladen"]=='Ja')?'checked':'' ?> onclick="showinvite('<? echo 'einja'.$i?>','<? echo 'link'.$i?>')"/>Ja</label><br/>
<label>
<input type="radio" name="<? echo 'eingeladen'.$i?>" id="<? echo 'einnein'.$i?>" value="Nein" <?php echo ($row["eingeladen"]=='Nein')?'checked':'' ?> onclick="showinvite('<? echo 'einja'.$i?>','<? echo 'link'.$i?>')"/>Nein</label>
</td>
//i gets counted up
<? $i++; ?> }
发送表单后,将打开一个脚本,其中foreach循环将通过会话来更新数据库
session_start();
foreach ($_SESSION['i'] as $i) {
$ida = $id[$i];
$idp = $pid[$i];
$email = $emaila[$i];
$eingeladen = $_POST['eingeladen'.$i];
$zusage = $_POST['zugesagt'.$i];
if ($update_stmt->bind_param("sssii", $eingeladen, $zusage, $bewilligt, $ida, $idp))
{
// Update des Teilnahmestatus
$update_stmt->execute();
echo "<p style = 'color:green'>neuer Status: ".$bewilligt." - ".$eingeladen." - ".$zusage."</p><br/>";
$inhaltn .= "neuer Status: ".$bewilligt." - ".$eingeladen." - ".$zusage."\n\n";
}
else {
echo "<p style = 'color:red'>Vorbereitung des Update Befehls klappt nicht! TeilgenommenID: ".$idteilgenommen."</p><br/>";
}
}
正如我所说,它似乎有效,但不是经常......