У мене є кілька кнопок на моїй сторінці, але я не впевнений, як визначити, яку з них натиснули. Ось розмітка для моїх двох кнопок:
<input type="submit" id="btnSubmit" value="Save Changes" />
<input type="submit" id="btnDelete" value="Delete" />
У мене є кілька кнопок на моїй сторінці, але я не впевнений, як визначити, яку з них натиснули. Ось розмітка для моїх двох кнопок:
<input type="submit" id="btnSubmit" value="Save Changes" />
<input type="submit" id="btnDelete" value="Delete" />
Відповіді:
За допомогою HTML-форми, наприклад:
<input type="submit" name="btnSubmit" value="Save Changes" />
<input type="submit" name="btnDelete" value="Delete" />
Використовуваний PHP-код виглядатиме так:
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Something posted
if (isset($_POST['btnDelete'])) {
// btnDelete
} else {
// Assume btnSubmit
}
}
Завжди слід передбачати або за замовчуванням відображати першу кнопку подання у вихідному коді HTML форми . На практиці різні браузери надійно надсилають ім’я / значення кнопки подання з даними публікації, коли:
Існують інші способи подання форми, і деякі браузери / версії вирішують не надсилати ім’я / значення будь-яких кнопок подання у деяких із цих ситуацій. Наприклад, багато користувачів подають форми, натискаючи Enterклавішу, коли курсор / фокус знаходиться на текстовому полі. Форми також можна надсилати через JavaScript, а також деякі незрозумілі методи.
Важливо звернути увагу на цю деталь, інакше ви дійсно можете розчарувати своїх користувачів, коли вони подають форму, але "нічого не відбувається", і їх дані втрачаються, оскільки ваш код не виявив подання форми, оскільки ви не передбачали факту що ім’я / значення кнопки надсилання не можуть надсилатися разом із даними повідомлення.
Крім того, вищевказану пораду слід також використовувати для форм з однією кнопкою надсилання, тому що ви завжди повинні приймати за замовчуванням кнопку надсилання .
Мені відомо, що Інтернет наповнений безліччю підручників з обробки форм, і майже всі вони роблять не що інше, як перевірку на ім’я та значення кнопки подання. Але вони просто помиляються!
У HTML:
<input type="submit" id="btnSubmit" name="btnSubmit" value="Save Changes" />
<input type="submit" id="btnDelete" name="btnDelete" value="Delete" />
У PHP:
if (isset($_POST["btnSubmit"])){
// "Save Changes" clicked
} else if (isset($_POST["btnDelete"])){
// "Delete" clicked
}
Все, що вам потрібно, щоб надати атрибут name кожній кнопці. І вам потрібно звернутися до кожного натискання кнопки зі сценарію PHP. Але будьте обережні, даючи кожній кнопці унікальну назву. Оскільки сценарій PHP більшу частину часу піклується лише про ім’я
<input type="submit" name="Submit_this" id="This" />