Название почти само собой объясняется, если честно. Я пытаюсь изменить свой столбец Удалить с 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% неопределенных ошибок. Этот потерял меня.
Ура!
Используйте отключенное текстовое поле, чтобы отобразить его для пользователя.
Используйте другое скрытое поле для хранения идентификатора игроков.
Заполните их обоих своим сценарием, и тогда вы сможете использовать значение в скрытом поле, когда вам нужно удалить.
Для ясности я покажу вам, как может выглядеть ваш 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 />
элемент — я не знаком с этим синтаксисом, поэтому я использую свой предпочтительный способ.
Очевидно, ваш скрипт должен будет обновлять КАЖДОЕ из этих полей индивидуально.
Других решений пока нет …