2014-02-03 1 views
1

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

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

$result = mysqli_query($con,"SELECT student_id, admin_no, name, GPA, gender FROM student_details WHERE jobscope1= 'Information Technology' ORDER BY `GPA` DESC; "); 
$result2 = mysqli_query($con,"SELECT job_title FROM job_details WHERE jobscope='Information Technology' ORDER BY `job_title` ASC;"); 

      /*options sections start*/ 
      $options= ''; 
      while ($row2 = mysqli_fetch_assoc($result2)) 
      { 
       $options .='<option value="'. $row2['job_title'] .'"> '. $row2['job_title'] .'</option>'; 
      } 
      /*options sections end*/ 

      //return the array and loop through each row 
      while($row = mysqli_fetch_assoc($result)) 
      { 


      $adminno = $row['admin_no']; 
      $name = $row['name']; 
      $gpa = $row['GPA']; 
      $gender = $row['gender']; 

        echo "<tr>"; 
        echo '<input type=hidden name=admin_no value='. $adminno . '/>'; 
        echo "<td>" . $adminno . "</td>"; 
        echo "<td>" . $name . "</td>"; 
        echo "<td>" . $gpa . "</td>"; 
        echo "<td>" . $gender . "</td>"; 
        echo "<td><select name='ddl' { myform.submit('') }'>".$options."</select></td>"; 
       } 
        echo "</tr>"; 

Форма PHP действие:

$query = mysqli_query($con, "SELECT * FROM student_details WHERE jobscope1 = 'Information Technology';"); 
while ($row = mysqli_fetch_assoc($query)) 

    $complist = $_POST['ddl']; 

$result4 = mysqli_query($con, "UPDATE `student_details` SET `company`= '" . $complist . "' WHERE `jobscope1` = 'Information Technology';"); 
+0

Очевидно, что многие строки будут обновлены, так как вы не указали в своем запросе 'update', для которого ученик должен быть обновлен. Является ли 'student_id' основным ключом' student_details'? –

+0

admin_no - это первичный ключ student_details – Angelica

+0

Еще один вопрос, в настоящее время он обновляется, когда вы выбираете опцию из выпадающего списка? Или вы выбираете значения в нескольких выпадающих меню, а затем отправляете? –

ответ

1

Попробуйте это:

//return the array and loop through each row 
while($row = mysqli_fetch_assoc($result)) 
{ 

    $adminno = $row['admin_no']; 
    $name = $row['name']; 
    $gpa = $row['GPA']; 
    $gender = $row['gender']; 

    echo "<tr>"; 
    //changed here (this is called an input array which makes it hold multiple 
    //values with same name) 
    echo "<input type='hidden' name='admin_no[]' value='". $adminno ."'/>"; //edited 
    echo "<td>" . $adminno . "</td>"; 
    echo "<td>" . $name . "</td>"; 
    echo "<td>" . $gpa . "</td>"; 
    echo "<td>" . $gender . "</td>"; 
    //changed here too 
    echo "<td><select name='ddl[]' >".$options."</select></td>"; //edited 
} 

В вашем PHP:

if(isset($_POST['ddl'])){ 
    foreach($_POST['ddl'] as $index => $val) //edited extra { here 
    { 
    $result4 = mysqli_query($con, "UPDATE `student_details` 
            SET `company`= '" . $val . "' 
            WHERE `jobscope1` = 'Information Technology' 
            AND `admin_no` = '".$_POST['admin_no'][$index]."';"); 
    } 
} 

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

+0

отредактировал необходимые изменения, так как теперь ничего не отображается в базе данных. – Angelica

+0

@ Angelica Я отредактировал некоторый код, пожалуйста, проверьте сейчас. –

+0

Его не показывая :( – Angelica

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