【问题标题】:PHP Adding elements with the array to database not workingPHP将带有数组的元素添加到数据库不起作用
【发布时间】:2015-02-20 20:44:48
【问题描述】:

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

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();
  }    
?> 

【问题讨论】:

  • $mail_array=array($licznik => $mail);将此行更改为 $mail_array[$licznik]=$mail;
  • 耶!谢谢谢谢谢谢!!
  • 您可以投票/接受答案

标签: php mysql arrays checkbox


【解决方案1】:

替换下线。每次都用赋值运算符创建新数​​组

$mail_array=array($licznik => $mail); 
//change this line to 
$mail_array[$licznik]=$mail;

【讨论】:

    猜你喜欢
    • 2014-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多