MySQL: 更改列中的值

MySQL: Changing a value in a column

老实说,标题几乎说明了一切。我正在尝试将我的删除列从 0 更改为 1,具体取决于从我的列表播放器下拉列表中选择的播放器。

我的 listPlayers.php 文件工作 100%。玩家在下拉列表中显示良好。 我应该补充一点,错误发生在我的 $sql 变量中。

<?php
include 'dbconnect.php';
$sql = "UPDATE players SET Delete = 1 WHERE playersID = $_POST[playersIDHidden]";

if(! mysql_query($sql, $conn))
{
    echo "Error " . mysql_error();
}

else
{
    if(mysql_affected_rows() != 0)
    {
        echo $_POST[pName] . " has been deleted <br>";
        echo "Person ID: " . $_POST ['playersID'] . "<br>";
        echo "Players Name: " . $_POST ['pName'] . "<br>";

        echo "Deletion complete";
    }

    else
    {
        echo "No records were changed";
    }
}

mysql_close($conn);
?>

<form action = "viewPlayers.php" method = "POST" />
    <input type = "submit" value = "View Players">
</form>

最后是我的 listPlayers.php,它在下拉列表中显示了我的球员姓名。

<?php
include "dbconnect.php"; //Opening Database Connection

$sql = "SELECT * FROM `players` WHERE `Delete` = 0;";

if (!$result = mysql_query($sql, $conn))
{
    die('Error in querying the database' . mysql_error());
}

echo "<br><select name = 'listPersons' id = 'listPersons' onclick = 'populate()'>";

while ($row = mysql_fetch_array($result))
{
    $id = $row['playersID'];
    $pName = $row['playersName'];
    $dob = $row['playersDateOfBirth'];
    $dob = date  ("d-m-Y", strtotime($dob));

    $allText = "$id, $pName, $dob";
    echo "<option value = '$allText'> $pName </option>";
}

echo "</select>";
mysql_close($conn);
?>

抱歉,相对较长 post。我通常能够修复 99% 的未定义错误。这个让我迷路了。

干杯!

使用禁用的文本框为用户显示它。

使用另一个隐藏字段来保存 playersID。

用您的脚本填充它们,然后您可以在需要删除时使用隐藏字段中的值。

为清楚起见,我向您展示了您的 HTML 可能的样子 - 这是脚本:

<script>
    function populate()
    {
        var select = document.getElementById("listPersons"); 
        var result = select.options[select.selectedIndex].value;

        var personDetails = result.split(", ");
        document.getElementById("playersID_display").value = personDetails[0];
        document.getElementById("playersID").value = personDetails[0];
        document.getElementById("pName_display").value = personDetails[1];
        document.getElementById("pName").value = personDetails[1];
....

和 html:

<form name = "myForm" action = "deletePlayer.php" method = "POST">    
    <p>
        <label for> Players ID:
            <input type = "text" name = "playersID_display" id = "playersID_display" disabled/>
            <input type = "hidden" name = "playersID" id = "playersID" />
        </label>
    </p>

    <p>
        <label for> Players Name:
            <input type = "text" name = "pName_display" id = "pName_display" disabled/>
            <input type = "hidden" name = "pName" id = "pName" />
        </label>
    </p>

    <p>
        <label for> Date of Birth:
            <input type = "date" name = "DoB_display" id = "DoB_display" disabled/>
            <input type = "hidden" name = "DoB" id = "DoB" />
        </label>
    </p>

    <input type = "Submit" value = "Delete" class = "button" onClick = "return confirm('Are you sure you want to delete this player?')"/>

</form>     

请注意,我维护了字段的唯一名称和 HTML 输入元素的唯一 ID。我也更喜欢 type="hidden" 而不是将 hidden 放在 <input ... hidden /> 元素的末尾 - 我不熟悉该语法,所以我使用我喜欢的方式。

显然,您的脚本必须单独更新这些字段中的每一个。