Обновление определенной одной или нескольких строк MySQL с повторяющимися именами атрибутов HTML - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь обновить 1 или несколько строк MySQL в PHP, в то время как имена ввода и выбора тегов HTML имеют одно и то же имя атрибута.

Форма отображается в формате HTML.

Я пытался задать имена тегов HTML в виде массива, передавая скрытый первичный ключ, чтобы идентифицировать каждую строку и, следовательно, обновить эту конкретную строку.

Помимо циклов foreach и циклов для просмотра результатов массива, но, к счастью, строки MySQL не обновляются.

Файл modal.php:

<div class="form-group">
                  <label>Recipe name</label>
                  <input type="text" class="form-control" name="recipe_name" value="<?php echo $row['recipe_name']; ?>" />
                </div> 
                <div class="form-group">
                  <label>Crop</label>
                  <input type="text" class="form-control" name="recipe_crop" value="<?php echo $row['recipe_crop']; ?>" />
                </div> 

<?php 
                $query1 = mysqli_query($mysqli,"SELECT * FROM recipes WHERE recipe_name = '" . $row['recipe_name'] . "' AND recipe_crop = '" . $row['recipe_crop'] . "';");
                while ($row2 = mysqli_fetch_array($query1)){            
              ?>
              <input type="hidden" name="recipe_id[]" value="<?php $row2['recipe_id']; ?>" readonly>
                <hr />
                <div class="form-group">
                  <label>Hardware</label>
                  <select name="hardware[]" class="form-control">
                    <option value="<?php echo $row2['recipe_hardware']; ?>">CURRENTLY: <?php echo $row2['recipe_hardware']; ?></option>
                    <option value="LIGHTS">LIGHTS</option>
                    <option value="WATER_PUMP">WATER PUMP</option>
                  </select>
                </div>
                <div class="form-group">
                  <label>Action</label>
                  <select name="action[]" class="form-control">
                    <option value="<?php echo $row2['recipe_action']; ?>">CURRENTLY: <?php echo $row2['recipe_action']; ?></option>
                    <option value="ON">ON</option>
                    <option value="OFF">OFF</option>
                  </select>
                </div>
                <?php } ?>

Код обновления PHP:

$rid = $_POST['recipe_id'];
$recipe_hardware = $_POST['hardware'];
$recipe_action = $_POST['action'];
foreach ($rid as $key => $id) {
                $sql = "UPDATE recipes SET recipe_hardware = '" . $recipe_hardware[$key] . "', recipe_action = '" . $recipe_action[$key] . "' WHERE recipe_id = '" . $id . "';";
                $query1 = $this->db_connection->query($sql);
                if ($query1) {

                    $this->messages[] = "Recipe edited successfully.";

                } else {
                    $this->errors[] = "Recipe not updated.";
                }
            }

Ожидаемый результат - возможность обновлять только указанные строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...