簡體   English   中英

從選擇框中獲取值

[英]Getting values from select box

對於我的實習,我正在為休息時間的人員創建一個記分板列表,以跟蹤所有獲勝情況。 我正在使用MVC。

我有以下表格:

玩家(p_id PK ,名稱)

游戲(game_id PK ,p_id FK->與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');
    } 
}

我在模型中的create方法如下所示:

public function create($query)
{   

    $data = $this->db->insert($query);

    return $data;
}

由於某種原因,它沒有讀取值。 如果在我的create方法中查詢,我將在屏幕上看到以下內容:

字符串(55)“ INSERT INTO billiard_winners(id,winner)VALUES('','')”

這意味着由於某種原因它沒有讀取$ 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中獲取游戲,但是無法研究該方法。 真的嗎?

您應該使用$ _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);
}

這應該工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM