2015-03-08 102 views
1

標題幾乎可以說明自己是誠實的。我試圖將我的刪除列從0更改爲1,具體取決於從我的列表播放器中選擇了哪個播放器。MySQL:更改列中的值

我的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%的未定義錯誤。這一個讓我失去了。

乾杯!

+0

*「這是否會發生,因爲我的playersID文本框被禁用?」* - 嘗試沒有禁用,看看你會得到什麼結果。 – 2015-03-08 17:43:07

+0

有道理。它可以工作,但是不允許編輯文本框。任何方式我可以離開文本框啓用,但仍然不允許用戶編輯它們? – BudgieBr0phy 2015-03-08 17:45:34

+0

您可以隨時嘗試使用隱藏屬性。 – 2015-03-08 17:46:35

回答

0

使用禁用的文本框爲用戶顯示它。

使用另一個隱藏字段來保存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",而不是把放在<input ... hidden />元素的末尾 - 我不熟悉那種語法,所以我使用我的首選方式。

很明顯,您的腳本將不得不單獨更新每個這些字段。

+0

好吧,非常好的主意。我現在寫出來,以便我有兩個輸入框,如下所示。但是,當我點擊刪除,我現在得到我的SQL語法錯誤。用的問題的「第1行,但線之一具有我的開口的PHP標籤 '<形式名稱=‘myForm的’行動=‘deletePlayer.php’方法=‘POST’>

' – BudgieBr0phy 2015-03-08 18:23:12

+0

當SQL報告錯誤,它不是來自腳本的行#,而是來自SQL查詢的行#你得到的具體錯誤是什麼? – 2015-03-08 18:25:31

+0

'你的SQL語法有錯誤;檢查對應於你的MySQL服務器版本的行1' 它顯示在deletePlayer.php這個錯誤文件 – BudgieBr0phy 2015-03-08 18:26:40