PHP使用数组添加元素到数据库不起作用

时间:2015-02-20 12:10:23

标签: php mysql arrays checkbox

我有一个数组,可以获取用户之前邀请的所有电子邮件。我通过复选框检查选择了哪些电子邮件,然后将它们添加到表'zaproszenia'中。该数组保存记录。当我点击“Zapisz”按钮(SAVE)时出现错误:

Notice: Undefined offset: 1 in D:\xampp\xampp\htdocs\inzynierka\inzynierka\zaproszenia.php on line 91

这一行是:

 $tabMail=$mail_array[$i];

我希望保存到表'zaproszenia',通过复选框选择电子邮件。我不知道那是怎么回事。我正在努力尝试,没有任何事情。关于我的英语。我希望我能清楚地描述这个问题。

带文件的代码片段:zaproszenia.php - 列出它们的电子邮件和复选框:

<form method="post">
<table class="table table-striped">
  <thead>
  <tr>
    <th>Email_goscia</th>
    <th>Imię</th>
    <th>Nazwisko</th>
    <th>Kod_dostepu</th>
    <th>Data ważności kwest.</th>
  </tr>
  </thead>
<tbody>
<?php
$sqlc=mysqli_connect('127.0.0.1','root','');                        
if($sqlc)
{
$sql_q="USE aplikacja";
mysqli_query($sqlc,$sql_q);
//wyświetlanie listy gości dodanych przez uzytkownika globalnie tzn. to jest lista z ktrej uzytkownik wybiera ktrych gosci chce zaprosić do konkretnego kwestionariusza
$sql_q=mysqli_query($sqlc, "SELECT * FROM goscie g, uzytkownicy_goscie ug WHERE g.Email_goscia=ug.Email_goscia AND ug.Login='$log' ");
$lp=1;
if(mysqli_num_rows($sql_q) != 0)
{
  $licznik=0;
  while ($recordG=mysqli_fetch_array($sql_q))
    {
    ?><tr>
    <td> <?php echo $mail = $recordG['Email_goscia'];
               $mail_array=array($licznik => $mail);
               $licznik++; //$_SESSION['tablicaMail']=$mail_array; print_r($_SESSION); 
               print_r($mail_array);
    ?></td>
    <td> <?php echo $recordG['Imie'];?> </td>                                   
    <td> <?php echo $recordG['Nazwisko']; ?> </td>
    <td> <?php echo $recordG['Kod_dostepu'];?></td>
    <td> <?php echo '<input type="date" name="data_waznosci'.$lp.'" id="data_waznosci'.$lp.'">'; ?> </td> 
    <td> <?php echo '<td><input type="checkbox" name="zaznaczyc'.$lp.'" id="zaznaczyc'.$lp.'" class="ClassZaznacz" onchange = "zaznacz();"/>  <br /></td>'; ?> </td>
    </tr>
    <?php
    $lp++;
    }
}
else
{
  echo "Użytkownik nie dodał jeszcze żadnych gości";      
}   ?>                   
</tbody>
</table> 
  <input type="submit" class="btn btn-primary" name="zapros" id="zapros" value="Zapisz zmiany" />
</form>

通过复选框保存选定的电子邮件:

<?php
if (isset($_POST['zapros']))
{        
    $data_zaproszenia = date("Y-m-d");
    $liczba = count(preg_grep('/^data_waznosci[\d]*/', array_keys($_POST)));
    echo $liczba;
    if(mysqli_num_rows($sql_q) != 0)
    {
      for ($i=1; $i <= $liczba ; $i++) 
      {
      /*while ($recordG=mysqli_fetch_array($sql_q)) {
          $mail = $recordG['Email_goscia']; 
          $mail_array=array($mail);
        }   print_r($mail_array); //$mail = $recordG['Email_goscia']; //echo $mail; */
        if (isset($_POST["zaznaczyc".$i]))
        {
          $sql_wyniki = mysqli_query($sqlc, "INSERT INTO wyniki (Data_wypelnienia, ID_kwestionariusza) VALUES (NULL, $id)");
          $id_wyniku=mysqli_query($sqlc, "SELECT ID_wyniku FROM wyniki WHERE ID_kwestionariusza=$id");
          $id_wyniku2 = mysqli_fetch_assoc($id_wyniku);
          $data_waznosci = $_POST['data_waznosci'.$i];
          //$tablicaMail1 = $_SESSION['tablicaMail'][$i]; //print_r($_SESSION); // echo $tablicaMail1; 
          $tabMail=$mail_array[$i];
          $sql_zaproszenie=mysqli_query($sqlc, "INSERT INTO zaproszenia (Email_goscia, ID_kwestionariusza, ID_wyniku, Data_zaproszenia, Data_waznosci, Wynik, Ocena, Status) 
                                                VALUES ('$tabMail', $id, '$id_wyniku2[ID_wyniku]', '$data_zaproszenia', '$data_waznosci', NULL, NULL, 'Status')");  //dodawanie kolejnych odpowiedzi do bazy
          echo "<script type='text/javascript'>alert('Zaproszenie wysłano!');</script>";
        }
        else
        {
          echo "<script type='text/javascript'>alert('Zaproszenia NIE wysłano!');</script>";

        }
      }
    }
    mysqli_close($sqlc);        
  }
}
  else
  {
    echo mysqli_connect_errno();
  }    
?> 

1 个答案:

答案 0 :(得分:1)

  

替换下面的行。它每次都使用赋值运算符

创建新数组
$mail_array=array($licznik => $mail); 
//change this line to 
$mail_array[$licznik]=$mail;