2014-11-06 7 views
4

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

<form class="form-horizontal" role="form" action="add.php" enctype="multipart/form-data" method="post"> 
     <div class="form-group"> 
      <label class="col-lg-4 control-label">Name</label> 
       <div class="col-lg-6"> 
        <input class="form-control" value="" type="text" name="name" > 
       </div> 
     </div> 

     <div class="form-group"> 
      <label class="col-lg-4 control-label">Address</label> 
       <div class="col-lg-6"> 
        <input class="form-control" value="" type="text" name="address" > 
       </div> 
     </div> 

     <div class="form-group"> 
      <?php 
      $servername = "localhost"; 
      $username = "root"; 
      $password = ""; 
      $dbname = "db"; 

      // Create connection 
      $con = mysqli_connect($servername, $username, $password, $dbname); 
      // Check connection 
      if (!$con) { 
       die("Connection failed: " . mysqli_connect_error()); 
      } 
      echo "<label class='col-lg-4 control-label'>Student</label>"; 
      echo "<div class='col-lg-6'>"; 
      $sql = "SELECT student FROM student"; 
      $result = $con->query($sql); 

      echo "<select class='form-control' name='student' multiple>"; 
      while($row = $result->fetch_assoc()) { 
      echo "<option value='" . $row['student'] . "'>" . $row['student'] . "</option>"; 
      } 
      echo "</select>"; 
      echo"</div>"; 
     ?> 
     </div> 

     <div class="form-group"> 
      <?php 
       $servername = "localhost"; 
       $username = "root"; 
       $password = ""; 
       $dbname = "db"; 

       // Create connection 
       $con = mysqli_connect($servername, $username, $password, $dbname); 
       // Check connection 
       if (!$con) { 
        die("Connection failed: " . mysqli_connect_error()); 
       } 
       echo "<label class='col-lg-4 control-label'>Subject</label>"; 
       echo "<div class='col-lg-6'>"; 
       $sql = "SELECT subject FROM subject"; 
       $result = $con->query($sql); 

       echo "<select class='form-control' name='subject' multiple>"; 
       while($row = $result->fetch_assoc()) { 
       echo "<option value='" . $row['subject'] . "'>" . $row['subject'] . "</option>"; 
       } 
       echo "</select>"; 
       echo"</div>"; 
      ?> 
     </div> 

     <div class="form-group"> 
      <?php 
       $servername = "localhost"; 
       $username = "root"; 
       $password = ""; 
       $dbname = "db"; 

       // Create connection 
       $con = mysqli_connect($servername, $username, $password, $dbname); 
       // Check connection 
       if (!$con) { 
        die("Connection failed: " . mysqli_connect_error()); 
       } 
       echo "<label class='col-lg-4 control-label'>Hobby</label>"; 
       echo "<div class='col-lg-6'>"; 
       $sql = "SELECT hobby FROM hobby"; 
       $result = $con->query($sql); 

       echo "<select class='form-control' name='hobby' multiple>"; 
       while($row = $result->fetch_assoc()) { 
       echo "<option value='" . $row['hobby'] . "'>" . $row['hobby'] . "</option>"; 
       } 
       echo "</select>"; 
       echo"</div>"; 
      ?> 
     </div> 

     <div class="form-group"> 
      <label class="col-md-3 control-label"></label> 
       <div class="col-md-8"> 
        <input class="btn btn-primary" value="Save Changes" type="submit" name="submit"> 
       </div> 
     </div> 
</form> 

add.php

<?php 
include('admin_session.php'); 

$con=mysqli_connect("localhost","root","","db"); 
// Check connection 
if (mysqli_connect_errno()) { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 


$name = mysqli_real_escape_string($con, $_POST['name']); 
$address = mysqli_real_escape_string($con, $_POST['address']); 
$student = mysqli_real_escape_string($con, $_POST['student']); 
$subject = mysqli_real_escape_string($con, $_POST['subject']); 
$hobby = mysqli_real_escape_string($con, $_POST['hobby']); 


$sql="INSERT INTO class (name,address,student,subject,hobby) VALUES ('$name','$address','$student','$subject''$hobby')"; 

if (!mysqli_query($con,$sql)) { 
    die('Error: ' . mysqli_error($con)); 
} 
header("Location: list.php"); 
mysqli_close($con); 


    exit; 
?> 

я хочу, что после выбора нескольких значений из выпадающего списка, они должны получить сохраненный в базе данных, имеющий таблица с именем class. вид таблицы с именем класса

id name address student subject hobby 
1 a  s  t  y  j 
2 b  d  i  g  d 

проблема в том, что, хотя я могу выбрать несколько значений, но только одно значение становится хранится в базе данных

PS я думаю, что я должен объяснить, на мой вопрос в лучшую сторону поэтому я обновил мой пост

ответ

1

хранить значение в массиве в выберите опцию

echo "<select class='form-control' name='student[]' multiple>"//it will store selected value in array 

Выполнить запрос внутри цикла

foreach ($_POST['student'] as $students) 

{ 
$student = mysqli_real_escape_string($con, $students);//use mysqli escape here 

$sql="INSERT INTO class (students) VALUES ('$student')";   

} 

добавить эту строку, прежде чем закрыть form и после того, как ваш while loop

<input type="submit" name="submit" value="submit"> 

и помните, как вы используете mysqli использовать bindparam, а также mysqli не autmatically защитить вас.

Проверить ссылку MySQL vs MySQLi when using PHP

+0

, если у меня есть еще два ниспадающих меню, как это наряду с простыми полями ввода, то и будет следовать той же процедура ?? – user3732711

+0

не работает. – user3732711

+0

Я получаю сообщение об ошибке Недействительный аргумент, предоставленный foreach() – user3732711

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