MySQL: изменение значения в столбце

Название почти само собой объясняется, если честно. Я пытаюсь изменить свой столбец Удалить с 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);
?>

Извините за относительно длинный пост. Я обычно могу исправить 99% неопределенных ошибок. Этот потерял меня.

Ура!

1

Решение

Используйте отключенное текстовое поле, чтобы отобразить его для пользователя.

Используйте другое скрытое поле для хранения идентификатора игроков.

Заполните их обоих своим сценарием, и тогда вы сможете использовать значение в скрытом поле, когда вам нужно удалить.

Для ясности я покажу вам, как может выглядеть ваш 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. Я также предпочитаю type="hidden" вместо того, чтобы положить hidden в конце <input ... hidden /> элемент — я не знаком с этим синтаксисом, поэтому я использую свой предпочтительный способ.

Очевидно, ваш скрипт должен будет обновлять КАЖДОЕ из этих полей индивидуально.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]