2012-07-13 94 views
0

我正在創建一個在線遊戲,並且在更新數據庫中的某些字段時遇到問題。 下面是表單和php代碼。無法更新數據庫中的某些字段

<form method='post'> 
       <div style="float: left; width: 630px; color: white;"> 
        <div style="float: left; width: 400px; background: #555; height: 20px;"> 
         <?php 
         if ($row['Protected'] == 1) 
         { 
          ?> 
          <img src="images/pass.png"></img> 
          <input type="password" name="pass" placeholder="Password" style="height: 18px;" /> 
          <?php 
         } 
         echo("<input type='submit' name='enter' style='background: #555; text-decoration: underline;' value='$row[Name]' />"); 
         ?> 
        </div> 
        <div style="float: right; width: 229px; background: #555; margin-left: 1px; height: 20px;"> 
         <?php 
         echo($row['NrPlayers']); 
         echo("/"); 
         echo($row['MaxPlayers']); 
         echo(" Players"); 
         ?> 
        </div> 
        <div style="clear: both;"> 
         <?php 
         echo($row['Descr']); 
         ?> 
        </div> 
        <div style="background: #ccc; font-size: 13px; margin-bottom: 2px; color: black;"> 
         <?php 
         echo($row['FName']); 
         echo(" "); 
         echo($row['LName']); 
         ?> 
        </div> 
        <input type="hidden" name="id" value="<?php$row['Id_Room']?>" /> 
       <input type="hidden" name="protect" value="<?php$row['Protected']?>" /> 
       <input type="hidden" name="password" value="<?php$row['Pass']?>" /> 
       <input type="hidden" name="nr" value="<?php$row['NrPlayers']?>" /> 
       </div> 
      </form> 
<?php 
       if (isset($_POST['enter'])) 
       { 
        if ($_POST['protect'] == 1) 
        { 
         if ($_POST['pass'] == $_POST['password']) 
         { 
          $nr = $_POST['nr'] + 1; 
          mysql_query("upadte users set Id_Room = '$_POST[id]' where Id_User = '$_SESSION[id]'"); 
          mysql_query("update rooms set NrPlayers = '$nr' where Id_Room = '$_POST[id]'"); 
          header("Location: game.php"); 
         } 
         else 
         { 
          ?> 
          <span style="color: red; text-align: center;">The password you entered is incorrect.</span> 
          <?php 
         } 
        } 
        else 
        if (($_POST['protect'] == 0)) 
        {*/ 
         $nr = $_POST['nr'] + 1; 
         mysql_query("upadte users set Id_Room = '$_POST[id]' where Id_User = '$_SESSION[id]'"); 
         mysql_query("update rooms set NrPlayers = '$nr' where Id_Room = '$_POST[id]'"); 
         header("Location: game.php"); 
        } 
       } 
      ?> 

有兩個更新和一個重定向。所以,更新不起作用,但重定向。

+1

「更新不起作用」<=請詳細說明。你有任何錯誤?你體驗到什麼樣的行爲? – Mahn 2012-07-13 14:17:42

+0

你也有一個錯字:) mysql_query(「upadte - > mysql_query(」更新 – Mahn 2012-07-13 14:19:32

+0

有另一個錯字:<?php $ row ['Id_Room']?>它應該讀取<?= $ row ['Id_Room'] ?>如果你有短標籤啓用 – 2012-07-13 14:22:05

回答

0

第1步:

提交表單模板,然後傾倒出從表格範圍內所有的值,以確保你得到你從表單需要通過什麼。

第2步:

使用一些測試值編寫查詢在像MySQL工作臺或php myAdmin一個查詢編輯器,讓你有工作的查詢。

第3步:

編寫PHP中生成的查詢代碼,但不是執行它傾倒出來給屏幕。做到這一點,直到outpu看起來你在步驟2

第4步設計查詢:

完成的頁面並執行查詢,尋找出錯別字,語法錯誤和安全漏洞。然後轉儲出查詢的結果。

事情你需要在你目前的代碼來檢查:

mysql_query("upadte users set Id_Room = '$_POST[id]' where Id_User = '$_SESSION[id]'"); 

錯別字 - 'UPADTE',內聯substition - Id_Room = '{$ _ POST [' 身份證 ']}'。

在發佈大量代碼並尋求幫助之前,請務必執行完整的調試步驟。