Получение неверной переменной POST - PullRequest
0 голосов
/ 04 мая 2018

Я борюсь со странной проблемой, здесь. У меня есть база данных, в которой хранится информация о отправленных приглашениях на событие и ответы на эти запросы. как:

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/>";
     }
}

Как я уже сказал, похоже, что работает, но не постоянно ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...