Я строю поверх существующего приложения на PHP, чтобы обновлять имя и цены пунктов меню.Пронумеруйте значения формы из динамической формы php
Я создал динамическую форму, заполненную результатами из базы данных. Идея состоит в том, что пользователь может обновить имя или цену элемента для обновления информации в базе данных.
Форма работает нормально, но у меня возникла проблема с куполом, чтобы получить информацию из формы. каждый элемент имеет отдельный идентификатор, поэтому мне нужно по существу сделать foreach через форму и каждый раз вызывать функцию обновления с соответствующим идентификатором элемента.
Я могу обрабатывать сторону БД вещей хорошо, но приложение, на котором я основано, имеет функцию getInput для проверки ввода и получения формы ввода формы, и я хотел бы использовать это.
Это функция getInput:
public static function exists($type = 'post') {
switch($type) {
case 'post':
return (!empty($_POST)) ? true : false;
break;
case 'get';
return (!empty($_GET)) ? true : false;
break;
default:
return false;
break;
}
}
public static function get($item) {
if(isset($_POST[$item])) {
return $_POST[$item];
} else if(isset($_GET[$item])) {
return $_GET[$item];
}
return '';
}
}
Проблема у меня есть, при вызове этой функции она возвращает только последний элемент образует форму. Есть ли способ, которым я могу перебирать форму и получать каждый элемент?
Это динамическая форма и код getInput до сих пор:
$menuItems = DB::getInstance()->get('menu_items', array('cat_id', '=', $cat_id));
if($menuItems->count()) {
echo '<form class="updateMenu" action="" method="post">';
echo '<table class="gridtable gridtableMenu">';
echo '<tr><th>Item Name</th><th>Item Price</th></tr>';
foreach($menuItems->results() as $item) {
echo '<tr>';
echo '<td class="menu-name"><input type="text" name="itemName" value="' . $item->item_name . '" required></td>';
echo '<td class="menu-price"><input type="number" step="any" name="itemPrice" value="' . $item->item_price . '" required></td>';
echo '<input type="hidden" name="id" value="' . $item->id . '">';
echo '</tr>';
}
echo '</table>';
echo '<input type="submit" name="updateMneu" value="Update Menu">';
echo '</form>';
} else {
echo '<div class="error">No items have been added to this menu</div>';
}
} // close categories foreach
} // close if category set
if(isset($_POST['updateMneu'])) {
echo Input::get('id'), '</br>';
echo Input::get('itemName'), '</br>';
echo Input::get('itemPrice'), '</br>';
} //close if isset updateMenu If
Так что я хотел бы Еогеасп я думаю, что вокруг этого раздела:
if(isset($_POST['updateMneu'])) {
echo Input::get('id'), '</br>';
echo Input::get('itemName'), '</br>';
echo Input::get('itemPrice'), '</br>';
//update ite in the database, and move to gthe next item.
} //close if isset updateMenu If
Я буду обрабатывать проверки данных и что не позже.
из названия вашего текста ввода типа я предполагаю несколько 'имя =«ITEMNAME»', 'имя =«itemPrice»и' имя = «идентификатор» ' – noobHere
Привет, да жаль, что я должен упомянули об этом. поэтому id, itemName и itemPrice, очевидно, являются отдельными элементами, их будет несколько в форме. и моя текущая функция, чтобы получить вход, просто вытягивает последний из формы. – chinds
это можно сделать, если имя является массивом 'name =" itemName [] "' – noobHere