Для моей стажировки я создаю список табло для людей в перерыве, чтобы отслеживать все победы. Я использую MVC.
У меня есть следующие таблицы:
Игроки (p_id PK , имя)
Игры (game_id PK , p_id FK ) -> внешний ключ p_id с Players.p_id
Победители (game_id FK , p_id FK ) -> game_id FK с games.game_id, p_id FK с Players.p_id
Например, я создаю игру с Player1 & Player2. Теперь мне нужно добавить победителя. Я создал отдельную страницу, которая ссылается на форму, где вы можете выбрать одного из этих игроков и вставить его в таблицу победителя.
Моя форма выглядит так:
<form method="post" action="<?php echo ROOT ?>HomeController/winnerBilliard/" enctype="multipart/form-data">
<div class="form-group">
<label for="player_1">Select game number</label><br>
<select class="form-control" name="game_id">
<option selected value="<?php echo $selectedGame['id']; ?>"><?php echo $selectedGame[0]['id']; ?></option>
</select>
</div>
<div class="form-group">
<label for="player_1">Select winner</label><br>
<select class="form-control" name="option">
<option disabled selected value>Choose winner</option>
<option value="<?php echo $selectedGame['player_1']; ?>"><?php echo $selectedGame[0]['player_1']; ?></option>
<option value="<?php echo $selectedGame['player_2']; ?>"><?php echo $selectedGame[0]['player_2']; ?></option>
</select>
</div>
<button type="submit" class="btn btn-primary btn-block" name="create">Add winner</button>
</form>
Мой метод выглядит так:
public function winnerBilliard() {
if(isset($_POST["create"])) {
$game = $_POST['id'];
$option = $_POST['option'];
// var_dump($option); exit();
$query = "INSERT INTO billiard_winners (id,winner) VALUES ('$game','$option')";
$this->model->create($query);
Header('Location: ' . ROOT . 'HomeController/billiardGames');
}
}
Мой метод создания в моей модели выглядит следующим образом:
public function create($query)
{
$data = $this->db->insert($query);
return $data;
}
По какой-то причине он не читает значения. Если я сделаю запрос в моем методе создания, я увижу это на экране:
string (55) "INSERT INTO billiard_winners (id, winner) VALUES ('', '')"
Это означает, что по какой-то причине он не читает опцию $ game & $. Но почему?
Мне кажется, я знаю, где ошибка.
Мой метод вставки:
public function winnerGames() {
if(isset($_POST["create"])) {
$game = $_POST['id'];
$option = $_POST['option'];
$query = "INSERT INTO winners (id,winner) VALUES ('$game','$option')";
$this->model->create($query);
Header('Location: ' . ROOT . 'HomeController/Games');
}
}
Мой способ добраться до нужной страницы и заполнить опции значениями:
public function editGame($id) {
$getGame = "SELECT * FROM games WHERE id = $id";
$selectedGame = $this->model->readAll($getGame, $id);
include('app/views/editGame.php');
}
Я думаю, что мой метод пытается получить игры от $ selectedGame, но не может изучить этот метод. Это правда?