2015-08-04 9 views
0

Мне нужно добавить данные в базу данных из массива (таблица). но этот POST.php работает неправильно. так что, ребята, пожалуйста, дайте мне какое-нибудь решение для этого.Вставить данные в базу данных из массива

это ошибка, которую она дает.

Нелегальная строка смещения 'h_name' в C: \ WAMP \ WWW \ подтверждают \ post.php на линии 11

линии 11: ЗНАЧЕНИЯ ('$ строки [h_name]', «$ строка [номер] ', $ row [nors]', '$ row [nights]', '$ row [euro]', '$ row [date]', '09090') ";

все вставленное значение дает эту ошибку . Массив для преобразования строки Спасибо.

    </br> 
        <h4 id="italic">Hotel Details :</h4> 
        </br> 

         <div class="reqtable"> 
          <table> 
           <tr ><td>Hotel Name</td><td>Room Type</td><td>Number of Rooms</td><td>Nights</td><td>EURO</td><td>Date</td></tr> 
           <tr><td><?php 
            include "conn.php"; 
            $query = "SELECT h_id, h_name FROM hotels"; 
            $result = mysqli_query($conn, $query) or die(mysqli_error($conn)); // Run your query 

            echo '<select name="list[h_name]" id="h_name" ">'; 

            echo '<option value=""> Choose a Hotel </option>'; 
            while($row = mysqli_fetch_assoc($result)) { 
             echo '<option value="'.$row['h_id'].'">'.$row['h_name'].'</option>'; 
            } 

            echo '</select>';/ 

             ?> 
           </td> 

           <td> 
            <?php echo ' 
               <select name="list[room]" id="room" > 
                <option value="">Choose a Room Type</option> 
                <option value="1">Single Room</option> 
                <option value="2">Double Room</option>   
                <option value="3">Triple Room</option> 
                <option value="4">Family Room</option> 
                <option value="5">Custom Room</option> 
               </select>'; 
            ?> 
           </td> 
           <td><input type="text" name="list[nors]" placeholder="Number of Rooms"></td> 
           <td> <input type="text" class="zxc" nname="list[nights]" placeholder="Nights"></td> 
           <td><input type="text" name="list[euro]" placeholder="euro"></td> 
           <td><input type="date" name="list[date]" placeholder="Date"></td> 
           <td><pre> </pre></td> 
           <td><input type='button' class='AddNew' value='Add new item'></td></tr> 
           <tr><td>Total</td><td></td><td></td><td><input name="result" id="result"></td><td></td><td></td></tr> 
          </table>  
         </div> 
          </br> 

          <input type="submit" id="submit" name="submit" value="Register" color="red" style="width: 77px; height: 50px"></div> 

       </form> 





post.php(php process) 





<?php 
    include "conn.php"; 
    print_r($_POST['list']); 





     foreach ($_POST as $row) { 
      $query = "INSERT INTO reqhotels (reqh_h_name, reqh_rtype, reqh_nor, reqh_nights, reqh_euro, reqh_date, reqh_req_no) 
        VALUES ('$row[h_name]', '$row[room]', '$row[nors]', '$row[nights]', '$row[euro]', '$row[date]', '09090')"; 

      $result = mysqli_query($conn, $query) or die(mysqli_error($conn)); 

      if($result > 0) { 
       echo"successfull"; 
      } 
      else { 
       echo"fail"; 
      } 
     } 
?> 

EDIT: портирован от ответа на вопрос: Aug.05


это мой HTML-кода. (таблица html). здесь используется jquery, чтобы добавить некоторые дополнительные строки в эту таблицу. поэтому я хочу вставить все данные в базу данных.

столбцов таблицы: rq_h_name, rq_rtype, rq_nors, rq_nights, rq_euro, rq_date

<form action="post.php" method="POST" id="register-form" novalidate="novalidate"> 

        </br> 
        <h4 id="italic">Hotel Details :</h4> 
        </br> 

         <div class="reqtable"> 
          <table> 
           <tr > 
            <td>Hotel Name</td> 
            <td>Room Type</td> 
            <td>Number of Rooms</td> 
            <td>Nights</td> 
            <td>EURO</td> 
            <td>Date</td> 
           </tr> 

           <tr> 
            <td> 
            <?php 
             include "conn.php"; 
             $query = "SELECT h_id, h_name FROM hotels"; 
             $result = mysqli_query($conn, $query) or die(mysqli_error($conn)); // Run your query 

             echo '<select name="list[0][]" id="h_name" ">'; 

             echo '<option value=""> Choose a Hotel </option>'; 
             while($row = mysqli_fetch_assoc($result)) { 
              echo '<option value="'.$row['h_id'].'">'.$row['h_name'].'</option>'; 
             } 

             echo '</select>'; 

            ?> 
            </td> 

           <td> 
            <?php echo ' 
               <select name="list[0][]" id="room" > 
                <option value="">Choose a Room Type</option> 
                <option value="1">Single Room</option> 
                <option value="2">Double Room</option>   
                <option value="3">Triple Room</option> 
                <option value="4">Family Room</option> 
                <option value="5">Custom Room</option> 
               </select>'; 
            ?> 
           </td> 
           <td><input type="text" name="list[0][]" placeholder="Number of Rooms"></td> 

           <td> <input type="text" class="zxc" name="list[0][]" placeholder="Nights"></td> 

           <td><input type="text" name="list[0][]" placeholder="euro"></td> 

           <td><input type="date" name="list[0][]" placeholder="Date"></td> 

           <td><input type='button' class='AddNew' value='Add new item'></td></tr> 

           <tr> 
            <td>Total</td> 
            <td><input name="result" id="result"></td> 
           </tr> 
          </table>  
         </div> 
          </br> 
+1

Кажется ясным: массив не является строкой. Вам необходимо выяснить, как объединить этот массив значений в строку ИЛИ моделировать истинное отношение «один ко многим» и INSERT каждый элемент массива в таблицу с отношением внешнего ключа к ее родительскому элементу. – duffymo

+0

Кроме того, здесь есть несколько других вопросов: вы добавляете точно такое же значение 6 раз! Это не может быть вашим намерением. Также почему '$ row [0]' в одинарных кавычках? – arkascha

+0

то как исправить это? – Lakith

ответ

0

вероятно вы хотите сделать следующее

foreach ($_POST['list'] as $row) { 

или аналогичный вместо тока

foreach ($_POST as $row) { 

В вашем текущем виде у вас есть массив в массиве, поэтому и arra y не может быть заменена непосредственно на строку. Я не уверен, что это точно сработает, но такова идея, которую вы следите за нами и показывает, что у вас есть проблема. Ваш код немного грязный, поэтому я не гарантирую, что у вас нет других ошибок.

+0

Я пробовал оба пути, но не получал решения. – Lakith

+1

то, что я разместил, не является решением, оно показывает, где вы ошибаетесь и почему вы получаете эту ошибку ... никто не даст вам решения, потому что этот код беспорядок, и он не помещен в скрипт php ... так что у вас есть идея, где ваше узкое место ... попытайтесь улучшить код. – Reflective

+0

в этом контексте петля над списком полностью wrong: 'foreach ($ _POST ['list'] как $ row)'. @Lakith необходимо для вставки всех значений сразу. НЕ, с каждым проходом через цикл, другое значение. каждый цикл с этим единственным значением для создания допустимой вставки невозможно. Семь значений в массиве '$ _POST ['list']' означают семь INSERTS !! Каждая вставка имеет только одно допустимое значение. –

Смежные вопросы