#php #mysql #database
#php #mysql #База данных
Вопрос:
У меня есть форма внутри таблицы, которая динамически создает строки на основе количества записей в базе данных. Форма служит для обновления записей. Он работает в отдельном тестовом файле, который я создал для тестирования, но не тогда, когда я объединяю его с реальным файлом.
<form role="form" id="edit_form" class="form-inline" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'])?>?action=edit_menu" method="post"></form>
<table class="table">
<thead>
<tr>
<th>Name</th>
<th>Price</th>
<th>Item 1</th>
<th>Item 2</th>
<th>Item 3</th>
<th>Item 4</th>
<th>Item 5</th>
<th>Item 6</th>
<th>Item 7</th>
<th>Item 8</th>
</tr>
</thead>
<tbody>
<?php
foreach($menu_items as $key => $value){
echo "
<tr>
<td>
<input type='text' name='name".$count."' form='edit_form' value=".$value["name"].">
</td>
<td>
<input type='text' name='price".$count."' form='edit_form' value=".$value["price"].">
</td>
<td>
<select form='edit_form' name='item1".$count."'>
<option>".$value["item1"]."</option>";
foreach ($db_items as $keys => $values) {
echo "<option value=".$values["name"].">".$values["name"]."</option>";
}
echo "
</select>
</td>
<td>
<select form='edit_form' name='item2".$count."'>
<option>".$value["item2"]."</option>";
foreach ($db_items as $keys => $values) {
echo "<option value=".$values["name"].">".$values["name"]."</option>";
}
echo "
</select>
</td>
<td>
<select form='edit_form' name='item3".$count."'>
<option>".$value["item3"]."</option>";
foreach ($db_items as $keys => $values) {
echo "<option value=".$values["name"].">".$values["name"]."</option>";
}
echo "
</select>
</td>
<td>
<select form='edit_form' name='item4".$count."'>
<option>".$value["item4"]."</option>";
foreach ($db_items as $keys => $values) {
echo "<option value=".$values["name"].">".$values["name"]."</option>";
}
echo "
</select>
</td>
<td>
<select form='edit_form' name='item5".$count."'>
<option>".$value["item5"]."</option>";
foreach ($db_items as $keys => $values) {
echo "<option value=".$values["name"].">".$values["name"]."</option>";
}
echo "
</select>
</td>
<td>
<select form='edit_form' name='item6".$count."'>
<option>".$value["item6"]."</option>";
foreach ($db_items as $keys => $values) {
echo "<option value=".$values["name"].">".$values["name"]."</option>";
}
echo "
</select>
</td>
<td>
<select form='edit_form' name='item7".$count."'>
<option>".$value["item7"]."</option>";
foreach ($db_items as $keys => $values) {
echo "<option value=".$values["name"].">".$values["name"]."</option>";
}
echo "
</select>
</td>
<td>
<select form='edit_form' name='item8".$count."'>
<option>".$value["item8"]."</option>";
foreach ($db_items as $keys => $values) {
echo "<option value=".$values["name"].">".$values["name"]."</option>";
}
echo "
</select>
</td>
<td>
<input type='hidden' name='id".$count."' form='edit_form' value=".$value["id"].">
<input type='submit' class='btn btn-xs green-haze' name='count".$count."' form='edit_form' value='Edit'>
</td>
</tr>";
if ($_SERVER['REQUEST_METHOD'] == 'POST' amp;amp; $_GET['action'] == 'edit_menu') {
if(isset($_POST['count'.$count.''])){
$update_menu = "UPDATE `menu`
SET `name`= '".$_POST["name".$count]."',`price`='".$_POST["price".$count]."',`item1`='".$_POST["item1".$count]."',`item2`='".$_POST["item2".$count]."',`item3`='".$_POST["item3".$count]."',`item4`='".$_POST["item4".$count]."',`item5`='".$_POST["item5".$count]."',`item6`='".$_POST["item6".$count]."',`item7`='".$_POST["item7".$count]."',`item8`='".$_POST["item8".$count]."'
WHERE `id`='".$_POST["id".$count]."'";
if ($conn->query($update_menu)) {
header('Location: '.$_SERVER['PHP_SELF']);
die;
}
}
}
$count ;
}
?>
</tbody>
</table>
Вот таблица вместе с формой, которую я создал в ней. С подключением к базе данных проблем нет (все остальные формы работают нормально).
Ошибки нет. $conn-> query() возвращает true и выполняет любой оператор, который я помещаю в if() с ним, но все равно он не обновляет базу данных.
Я могу поделиться остальной частью скрипта, если это поможет.
Спасибо
Комментарии:
1. Действительно ли форма отправляет что-либо, вы закрываете ее при открытии.
<form role="form" id="edit_form" class="form-inline" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'])?>?action=edit_menu" method="post"></form>
.2. Вы вводите sql самостоятельно?
3. @chris85 Забавно, я этого даже не заметил.
4. @jeroen Я не «резко отклонялся» вправо, ни lol
5. «Я могу поделиться остальной частью скрипта, если это поможет». — Вы имеете в виду, что есть еще что-то??