Как удалить строку с помощью кнопки в php, используя mysql - PullRequest
0 голосов
/ 20 февраля 2019

У меня проблема с удалением строки из таблицы.Когда я нажимаю на кнопку «удалить», я перехожу на следующую страницу с надписью «Удалено 0 строк из плеера».В основном, это выполняется правильно, но я не могу удалить выбранную строку.Я смог отобразить и добавить в таблицу.

Player.php

<table id="table table-bordered">
<tr>
    <th>Id#</th>
    <th>Player(s)</th>
    <th>Position</th>
</tr>

if(!($stmt = $mysqli->prepare("SELECT id_Player, name_Player, position_Player FROM player s ORDER BY position_Player ASC"))){
echo "Prepare failed: "  . $mysqli->connect_errno . " " . $mysqli->connect_error;
}

if(!$stmt->execute())
{
echo "Execute failed: "  . $mysqli->connect_errno . " " . $mysqli->connect_error;
}
if(!$stmt->bind_result($id_Player, $name_Player, $position_Player))
{
 echo "Bind failed: "  . $mysqli->connect_errno . " " . $mysqli->connect_error;   
}

    while($stmt->fetch()){
    echo "<tr><td>  $id_Player </td> <td>  $name_Player </td><td>  $position_Player  </td>";

    ?>
        <td>
            <form id="delete" method="post" action="deletePlayers.php">

                <input type="submit" name="id_Player" value="Delete!"/>    

            </form>
        </td>
    </tr>

deletePlayers.php

if(!($stmt = $mysqli->prepare("DELETE FROM player WHERE id_Player  = ?"))){
    echo "Prepare failed: "  . $stmt->errno . " " . $stmt->error;}
if(!($stmt->bind_param("s",$_POST['id_Player']))){
    echo "Bind failed: "  . $stmt->errno . " " . $stmt->error;}
if(!$stmt->execute()){
    echo "Execute failed: "  . $stmt->errno . " " . $stmt->error;}     
else {
    echo "Removed " . $stmt->affected_rows . " row from player. <br/><br/><strong> Returning to 'Add Players'</strong>";}

1 Ответ

0 голосов
/ 20 февраля 2019

Проблема заключается в этой строке кода,

if(!($stmt->bind_param("s",$_POST['id_Player']))){}

Здесь значение $POST['id_player'] равно Delete!, потому что вы передаете имя типа ввода, отправленного в вашем HTML-коде, и я думаю,что у вас нет идентификатора, равного Delete! в вашей базе данных.

Решение

Что вам нужно сделать, это то, что вам нужно использоватьскрытый ввод, который будет содержать значение id_Player, как это,

if(!($stmt = $mysqli->prepare("SELECT id_Player, name_Player, position_Player FROM player s ORDER BY position_Player ASC"))){
echo "Prepare failed: "  . $mysqli->connect_errno . " " . $mysqli->connect_error;
}

if(!$stmt->execute())
{
echo "Execute failed: "  . $mysqli->connect_errno . " " . $mysqli->connect_error;
}
if(!$stmt->bind_result($id_Player, $name_Player, $position_Player))
{
 echo "Bind failed: "  . $mysqli->connect_errno . " " . $mysqli->connect_error;   
}

    while($stmt->fetch()){
    echo "<tr><td>  $id_Player </td> <td>  $name_Player </td><td>  $position_Player  </td>";

    ?>
        <td>
            <form id="delete" method="post" action="deletePlayers.php">
                <input type="hidden" name="id_Player" value="<?= $id_Player ?>"/>
                <input type="submit" value="Delete!"/>    

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