0

さて、私のゲームのユーザーにはページがあります。他のユーザーはページにコメントできます。ユーザーが壁にコメントできる場所、または無効になっている場合に設定できるスクリプトを作成しました。データベースを手動で変更すると機能しますが、ラジオ ボタンを使用して設定したのに更新されません。これがフォームです。

<form action="settings" method="post">
Comments: <br />
Enabled:  
<input type="radio" name="change_wall" id="change_wall" value="no" checked="checked" />
<br />
Disabled: 
<input type="radio" name="change_wall" id="change_wall" value="yes" />
<br />
<input type="submit" value="Change" />
</form>

この下に、データベース更新の SQL があります。

    <?php
    if ( isset ( $_POST['change_wall'] ) )
        {
        $change_wall = mysql_real_escape_string($_POST['change_wall']); 
        if ($cash >= 5000) {
        $sql = "UPDATE users SET disable_wall='".$change_wall."' , cash=(cash - 5000) WHERE id='".$id."'";
        $res = mysql_query($sql);
            echo  
            '<table width="800" align="center" class="SettingsTable">
              <tr>
                <td>You sucessfully changed your comment settings!</td>
              </tr>
            </table>
            <br />';
        }
        else  {
            echo 
            '<table width="800" align="center" class="SettingsTable">
              <tr>
                <td>You don\'t have enough cash to change your comment settings!</td>
              </tr>
            </table>
            <br />'; 
        }
        }
?> 

ユーザーのページにコメントを表示するためのコーディング、またはコメントが無効になっている場合のコーディングは次のとおりです。

  <?php 
      if ($disable_wall = 0) { 
        include 'users_wall.php';
      }
      elseif ($disable_wall = 1) {
          echo 
          '<table width="800" align="center" class="DisabledWall">
          <tr>
            <td>' . $userp['name'] . '\'s ' . 'Comments Disabled!</td>
          </tr>
        </table>';
      }
    ?>
4

2 に答える 2

1

まず、SQLクエリが実行されていることを確認してください-$cashは実際には>= 5000であり、$id変数は適切な値で構成されています

次に、テーブルフィールド'disable_wall'にはどのようなタイプがありますか?varcharまたはenum?intではありませんか?

上記の手順で問題が解決しない場合は、スクリプトの最後の行の後に次のように入力してください。

die("error: ".mysql_error());

フォームを送信して、テーブルの更新中にどのようなエラーが発生したかを確認してください

于 2012-12-13T23:09:11.160 に答える
1

ブール値 (yes/no) の応答が必要なため、安全のために単純に 0 または 1 に設定できます。
あなたの質問に答えるには、

 
  $sql = "UPDATE users SET disable_wall='1' , cash=(cash - 5000);
 

そして、壁を無効にするには

 
  $sql = "UPDATE users SET disable_wall='0' , cash=(cash - 5000);
 

さらに良いのは、ブール列を使用することです。

また、$idが有効な値であり、現在テーブルに少なくとも 1 行あることを確認してください。

さらに重要なことは、PDO または MySQLi を使用することです。MySQL 拡張機能は既に非推奨です。

お役に立てれば。

于 2012-12-13T23:11:25.550 に答える