2017-02-21 6 views
0

Я студент, работающий над php-приложением. Я в основном заполняю два тега select, которые заполнены из mysql, используя следующий код:Заполнение двух тегов select в PHP от MySQL и отмена записи, выбранной в первом теге

У меня есть еще один тег select, который касается местоположения прибытия.

Вот изображение:

x

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

<?php 
// perform database query 
$query = "SELECT id, municipality FROM airports"; 

$result = mysqli_query($connection, $query); 

if(!$result){ 
    die("Database query failed."); 
} 
// only for syntax errors 
// Select query for arrival 
echo "<select name='arrival'>"; 
while($row = mysqli_fetch_assoc($result)){ 
    unset($id, $name); 
    $id = $row['id']; 
    $name = $row['municipality']; 
    echo '<option value="'.$name.'">'.$name.'</option>'; 
} 
echo "</select>"; 
// release returned data 
mysqli_free_result($result); 
?> 
+0

Используйте JS и проверьте, прибывает ли пункт назначения ==, если это так, предложите пользователю изменить. – chris85

+0

Я бы предпочел, чтобы запись, выбранная в первом теге, не отображалась во втором теге – Sid

+0

Затем вы могли либо удалить его с помощью JS ... или сделать запрос ajax для заполнения второго списка параметрами, которые не являются первыми. 'SELECT id, муниципалитет FROM airport, где id <>?' И передать 'id' не' name', из 'option'. – chris85

ответ

0

Если бы я тебя, я буду использовать javascript/jquery' сек Ajax для легкой игры с такой ситуацией. Мои решения для первого элемента select, вы просто извлекаете все данные, поступающие из базы данных, и помещаете их в элемент 1st select. Тогда эта часть, ajax поможет вам.

Течение:

  1. Fetch все данные из PHP и заселяющих данных в 1 выберите элемент. Сделать это значение сохранить идентификатор данных
  2. Зарегистрировать onChange событие в 1-ом окне выбора, прослушать событие и получить значение (ID).
  3. Внутри onChange событие снова, сделайте POST Ajax request, отправив данные (ID) вместе с кодом на стороне сервера.
  4. Выполнение операции с базой данных при выборе данных, которые не включают идентификатор отправки. например: select *from tableName where id NOT IN(Id_that_we_sent)
  5. Передача данных (ответ) обратно, и заполнение данных на второе выберите элемент

Я бет, есть еще один обходной путь вы можете реализовать. Но вот подход, который вы можете использовать. Выбор ваш. :)

+0

Привет, он решил проблему. Большое спасибо! – Sid

+0

Рад это услышать, и вы приветствуете друга –

+0

Это ответ OK, но более быстрый способ, если вы используете Javascript для управления списками, - это получить весь набор аэропортов один раз в начале, сохранить его как JSON а затем используйте jQuery для добавления и удаления элементов опции, а не для повторного запроса базы данных каждый раз. Кроме того, я ненавижу людей, которые пишут о таких вещах, как я собираюсь это сделать, но ваша школа действительно должна научить вас использовать PDO для подготовки инструкций вместо mysqli. Я этого не понимаю. – joshstrike