2016-06-08 3 views
0

У меня есть две таблицы: event_title перечисляет Event_title_ID, название и дату предстоящих событий, а event_reg хранит данные из представленной формы.Сохраните второе значение как переменную, основанную на выпадающем меню выбора

Я использую цикл WHILE, чтобы получить данные из event_title таблицы для заполнения выпадающего меню:

<select id="title" name="Event_title_ID"> 
<option value="0">Please Select One</option> 
<?php 
$q = "SELECT Event_title_ID, title, date FROM event_title ORDER BY date ASC"; 
    $r = mysqli_query($connection, $q); 
    if (mysqli_num_rows($r) > 0) { 
     while ($row = mysqli_fetch_array ($r, MYSQLI_ASSOC)) 
     { 
      echo '<option value="' . $row['Event_title_ID'] . '">' . $row['title'] . '</option>'; 
     } 
    } else { 
     echo '<option>No event to register for at this time</option>'; 
    } 
?> 
</select> 

После выполнения проверки, я устанавливаю $ строки [ «Event_title_ID»], как $ Event_title_ID и вставки в таблицу event_reg.

Основываясь на выборе выпадающего списка, мне нужно также сохранить $row['title'] как переменную $title, чтобы ее можно было вызвать в электронном письме, отправленном администратору.

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

**** **** UPDATE

Спасибо @shut за ответ. Вот мой код:

В форме:

<select id="title" name="Event_title_ID"> 
<option value="0">Please Select One</option> 

<?php // retrieve all the events from the event_title table 
$q = "SELECT Event_title_ID, title, date FROM event_title ORDER BY date ASC"; 
$r = mysqli_query($connection, $q); 

if (mysqli_num_rows($r) > 0) { 
    while ($row = mysqli_fetch_array ($r, MYSQLI_ASSOC)) 
    { 
     echo '<option value="' . $row['Event_title_ID'] .'-'.$row['title']. '">' . $row['title'] . '</option>'; 
    } 
} else { 
    echo '<option>No event to register for at this time</option>'; 
} 
?> 
</select> 

В проверке:

<?php 
    $errors = array(); 
    if (isset($_POST['Event_title_ID']) && $_POST['Event_title_ID'] == '0') 
     { 
      $errors[] = '<p id="eventErr">Please select an event.</p>'; 
     } else { 
      $event = explode('-' , $_POST['Event_title_ID']); 
      $Event_title_ID = $event[0]; 
      $title = $event[1]; 
     } 
?> 
+0

Вы пробовали использовать [скрытые поля] (http://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_input_type_hidden) ? –

+0

Да, я пытался использовать скрытые поля - я должен был упомянуть об этом. Однако, пытаясь добавить его в синтаксис, результаты не вернулись, как надеялись. Например, добавление скрытого поля непосредственно после тега закрытия в цикле while приводило к тому, что в раскрывающемся списке отображался только один параметр, а остальные - за пределами раскрывающегося списка. Знаете ли вы, как разметить раскрывающийся список, используя скрытые поля, чтобы это поведение было исправлено? – Coleen

+0

Довольно уверен, что вам нужно будет поместить свое скрытое поле вне выпадающего списка. Затем вы можете обновить значение скрытого поля каждый раз, когда выпадающее меню 'selectedIndex' изменяется или что-то подобное. –

ответ

1

Вы можете использовать как EVENT_TITLE и event_title_id на отборное значении опции и после проверки взрывается это значение. Пример

echo '<option value="' . $row['Event_title_ID'] .'-'.$row['title']. '">' . $row['title'] . '</option>'; 

и после использования проверки

$event = explode('-' , $_POST['Event_title_ID']); 
$Event_title_ID=$event[0]; 
$title=$event[1]; 
+0

Это сделало трюк! Я отправлю свой код ниже. Спасибо огромное! – Coleen

+0

Я часто использую функцию spam_scrubber и следующий синтаксис в моей проверке: $ title = mysqli_real_escape_string ($ connection, trim ($ scrubbed ['title'])); Есть ли способ добавить это в код, который вы указали выше? – Coleen

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