对于我的实习,我正在为休息时间的人员创建一个记分板列表,以跟踪所有获胜情况。我正在使用MVC。
我有下表:
播放器(p_id PK ,名称)
游戏(game_id PK ,p_id FK )-> p_id与玩家的外键。p_id
获胜者(game_id FK ,p_id FK )-> game_id FK与games.game_id,p_id FK与玩家.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;
}
由于某种原因,它无法读取值。如果我在create方法中查询,我将在屏幕上看到以下内容:
字符串(55)“将inert插入billiard_winners(id,winner)值('','')”
这意味着由于某种原因它没有读取$ game和$ option。但是为什么呢?
我想我知道错误在哪里。
我的INSERT方法是:
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中获取游戏,但无法调查该方法。是真的吗?
答案 0 :(得分:0)
您应该使用$ _POST映射元素名称,然后重新检查,
您应避免将element标签用作元素的属性名称(例如,应避免将option作为select的名称)。
使用print_r调试php中发布的数据。
我认为您在这里缺少窍门,
$saveArr['id'] = $_POST['id'];
$saveArr['winner'] = $_POST['option'];
$this->model->create($saveArr);
现在创建方法中,
public function create($saveArr){
$data = $this->db->insert($saveArr);
}
这应该有效。