<вибір> меню та PHP


0

Я використовую меню, щоб спробувати отримати дані в БД. Я це бачив,

<select name="exam" id="exam" style="background-color: #FFDDF4">
   <option></option>
   <?php foreach($exams as $key=>$option):
      $selected = ($exam == $key) ? 'selected' : '';
      echo "<option value='$key' $selected>$option</option>";
   endforeach; ?>
</select>

Без цього рядка

$selected = ($exam == $key) ? 'selected' : '';

чи можливо отримати вибране значення в БД? Чи є змінна $ exam справжньою назвою елемента вибору?

Спасибі, Шейн

Відповіді:


0

Так, можна отримати дані в базу даних - ви могли залишити цю лінію поза межами, і вона все одно буде передавати їх у базу даних.

Змінна "іспити" - це структура масиву, що містить усі параметри для відображення на екрані. Це не назва елемента вибору. Елемент вибору визначається в першому рядку name = "іспит", тобто це "іспит".

Я раніше не стикався з цією лінією, але цілком чітко встановлюється поле "вибране" на певний варіант. Це "вибране" поле потім використовується як за замовчуванням, окрім іншого, що відображає його як параметр за замовчуванням, воно не має значення, коли форма фактично подається.

Дозволяє розбивати елементи вашого коду, що стосуються веб-запиту:

На початку визначає, що поле є полем вибору. Поля імені, ідентифікатора та стилю використовуються для форматування вигляду сторінки, тому не мають відношення до повернення даних.

Це визначає параметр, що випадає в полі поля, яке спочатку буде порожнім. Імовірно, це використовується, якщо хтось раніше не намагався заповнити форму.

   <?php foreach($exams as $key=>$option):
      $selected = ($exam == $key) ? 'selected' : '';
      echo "<option value='$key' $selected>$option</option>";
   endforeach; ?>

Тут стає цікаво. $ іспити майже напевно буде масивом, тому змінна структура - нижче буде прикладом можливої ​​структури, яку я використаю для своєї відповіді.

$exams['English']='English 101';
$exams['Maths']='Calculus';
$exams['Science']='Lab Experiments';

"Foreach" повідомляє PHP пройти кожен елемент у масиві, визначивши значення ключа та опції.

Таким чином, перший раз, коли він циклічно (з огляду на мій масив) вище, перший раз через цикл, ключ $ буде "англійською", а значення буде "англійською 101". Другий раз, коли $ key буде "Maths", значення буде "Calculus" тощо.

echo "<option value='$key' $selected>$option</option>";

пише HTML-код, тож при перегляді браузера він буде виглядати як англійський 101 експериментальний аналіз обчислення

Потім у веб-переглядачі відображатимуться "Англійська 101", "Обчислення" та "Експерименти з лабораторією", але коли форма подається, вона надсилатиме значення "Англійська", "Математика" або "Наука", залежно від того, що було вибрано .

$ selected було б (я здогадуюсь) не використовуватиметься під час першого відображення сторінки, однак якщо сторінку переглянули та відображаються користувачеві - наприклад, якщо вона перевірила помилки та виявила помилки, але хоче щоб відобразити форму, яку вона отримала - тоді вибраний $ матиме значення "вибране" для параметра, який користувач раніше обрав, інакше він буде порожнім. Це дозволить браузеру показати відповідне поле.

Кінцевий проповідь, мабуть, закінчує ітерацію. (Синтаксис, що використовується тут, знову відрізняється від типового - зазвичай ви просто використовуєте дужки).


Привіт, спасибі за цю відповідь чудово. "Ви можете залишити цю лінію поза межами, і вона все одно подасть її в базу даних." це те, що мені справді потрібно було почути. Також дякую за уточнення, що $ exam - це масив, а не ім'я елемента. Блискуча відповідь, дуже цінується.
Шейн Г
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.