2013-11-11 6 views
0

Я пытаюсь вставить несколько значений в одну таблицу. Во-первых, у меня есть пользователь, который выбирает номер instructors. На основе начального выбора jquery отображает количество отображаемых входов, соответствующих ему. Поэтому, если пользователь выбирает двух инструкторов, тогда появятся два поля ввода. Я бы хотел, чтобы два вставляли значения обоих полей ввода в базу данных mysql. Прямо сейчас ничего не вставлено, и я не уверен в этом. SITE.Вставка нескольких записей в одну таблицу - динамические значения

<script type="text/javascript"> 
      $(document).ready(function() { 
       $('#btnAdd').click(function() { 
        var num = $('.clonedSection').length; 
        var newNum = new Number(num + 1); 

        var newSection = $('#pq_entry_' + num).clone().attr('id', 'pq_entry_' + newNum); 

        newSection.children(':first').children(':first').attr('id', 'inst_fname_' + newNum).attr('name', 'inst_fname_' + newNum).attr('placeholder', 'Instructor #' + newNum + ' First Name'); 

        newSection.children(':nth-child(2)').children(':first').attr('id', 'inst_lname_' + newNum).attr('name', 'inst_lname_' + newNum); 

        newSection.insertAfter('#pq_entry_' + num).last(); 

        $('#btnDel').prop('disabled', ''); 

        if (newNum == 5) $('#btnAdd').prop('disabled', 'disabled'); 
       }); 

       $('#btnDel').click(function() { 
        var num = $('.clonedSection').length; // how many "duplicatable" input fields we currently have 
        $('#pq_entry_' + num).remove(); // remove the last element 

        // enable the "add" button 
        $('#btnAdd').prop('disabled', ''); 

        // if only one element remains, disable the "remove" button 
        if (num - 1 == 1) $('#btnDel').prop('disabled', 'disabled'); 
       }); 

       $('#btnDel').prop('disabled', 'disabled'); 
      }); 
</script> 
</head> 
<body> 
<form action="index.php" method="post"> 
Instructor: 
      <ul id="pq_entry_1" class="clonedSection"> 
       <li> 
        <input id="inst_fname_1" name="inst_fname_1" placeholder="Instructor #1 - First Name" type="text" /> 
       </li> 
       <li> 
        <input id="inst_lname_1" name="inst_lname_1" placeholder="Last Name" type="text" /> 
       </li> 
      </ul> 

      <input type='button' id='btnAdd' value='add another instructor' /> 
      <input type='button' id='btnDel' value='delete instructor' /> 
</br> 
<input value="SAVE" type="submit"> 
<?php 

$db_con = new mysqli(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE); 
if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 
$db_insert3 = "INSERT INTO instructor (`instructor_fname`, `instructor_lname`)"; 
$db_insert3 .= " VALUES ('" . $_POST['inst_fname_1'] ."', '" . $_POST['inst_lname_1'] ."')"; 
     mysqli_query($db_con, $db_insert3); 
?> 
</form> 

ответ

1

Хранить входные значения в качестве array.Like этом:

<input id="inst_fname_1" name="inst_fname_1[]" placeholder="Instructor #1 - First Name" type="text" /> 

<input id="inst_lname_1" name="inst_lname_1[]" placeholder="Last Name" type="text" /> 

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

foreach($_POST['inst_fname_1'] as $fname){ 
// insert query 
} 

Примечание: Добавленное запрос должен быть вне формы и использовать isset, чтобы проверить, если форма отправлена ​​или нет.

Обновлено HTML:

<form action="" method="post"> 
Instructor: 
     <ul id="pq_entry_1" class="clonedSection"> 
      <li> 
       <input id="inst_fname_1" name="inst_fname_1[]" placeholder="Instructor #1 - First Name" type="text" /> 
      </li> 
      <li> 
       <input id="inst_lname_1" name="inst_lname_1[]" placeholder="Last Name" type="text" /> 
      </li> 
     </ul> 

     <input type='button' id='btnAdd' value='add another instructor' /> 
     <input type='button' id='btnDel' value='delete instructor' /> 
</br> 
<input value="SAVE" type="submit" name="submit"> 

</form> 

Примечание: Здесь я оставил форму action поле пустым, потому что мой PHP код находится на верхней части той же странице.

Обновлено JavaScript:

newSection.children(':first').children(':first').attr('id', 'inst_fname_' + newNum) 
.attr('name', 'inst_fname_1[]').attr('placeholder', 'Instructor #' + newNum + ' First Name'); 

newSection.children(':nth-child(2)').children(':first'). 
attr('id', 'inst_lname_' + newNum).attr('name', 'inst_lname_1[]'); 

Обновлено PHP:

<?php 
if(isset($_POST['submit'])){ 
$db_con = new mysqli(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE); 
if ($db_con->connect_errno) { 
printf("Connect failed: %s\n", $db_con->connect_error); 
exit(); 
} 
for($i=0;$i<count($_POST['inst_fname_1']);$i++){ 
    $db_insert3 = "INSERT INTO instructor (instructor_fname,instructor_lname) 
      VALUES ('".$_POST['inst_fname_1'][$i]."','".$_POST['inst_lname_1'][$i]."')"; 
    $db_con->query($db_insert3); 

    } 
    } 
?> 
+0

Сделано изменения, но ничего не вставляется в базу данных. –

+0

Дайте мне минутку .. Я выложу свой обновленный ответ. –

+0

Alright Ill wait. –

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