2012-05-05 18 views
0

ユーザーログインしているときに私の製品を更新したいです。ここに私のコードは、これは私もすでに私の名前、開発者、または価格を変更することはできませんなぜdoUpdate.phpPHPでデータベースを更新するには?

<?php 
$nama = $_POST['gameName']; 
$dev = $_POST['gameDeveloper']; 
$harga =$_POST['gamePrice']; 
$id= (int)$_REQUEST['id']; 

if($nama == "" || $dev == "" || $harga == "") 
{ 
    header("location:edit.php?err=1"); 
} 
else if(!is_numeric($harga)) 
{ 
    header("location:edit.php?err=2"); 
} 
else if($harga < 1 || $harga >10) 
{ 
    header("location:edit.php?err=3"); 
} 
else 
{ 
    $query = "UPDATE game SET gameName='".$nama."', gameDeveloper='".$dev."', gamePrice=".$harga." where gameId=".$id.""; 
    mysql_query($query); 
    header("location:product.php"); 
} 

?>

で私のコードです个人设定

   <?php 
       $id= (int)$_GET['id']; 

       $query = "SELECT * FROM game WHERE gameId=".$id.""; 
       $rs = mysql_query($query); 
       while($data = mysql_fetch_array($rs)) 
       { 
      ?> 
      <form action="doUpdate.php" method="post"> 
       <?php echo "<image src=\"images/".$id.".png\" alt=\"gameImage\" </image>"?> 

       <div class="cleaner"></div> 

       <div class="myLabel">Name</div><div>: <input type="text" value="<?php echo $data['gameName'];?>" name="gameName"/></div> 
       <div class="myLabel">Developer</div><div>: <input type="text" value="<?php echo $data['gameDeveloper'];?>" name="gameDeveloper"/></div> 
       <div class="myLabel">Price</div><div>: <input type="text" value="<?php echo $data['gamePrice'];?>" name="gamePrice"/></div> 

       <br/> 

       <div id="txtError" style="color:#D70005"> 
        <?php 
         if(isset($err)) 
         { 
          if($err==1) echo"All Fields must be filled"; 
          else if($err==2) echo"Price must be numeric"; 
          else if($err==3) echo"Price must be between 1-10"; 
         } 
        ?> 
       </div> 
       <input type="submit" value="Submit"/> 
       <a href="product.php"><input type="button" value="Cancel"/></span></a> 
       <?php 
       } 
       ?> 
      </form> 

にありますフォームで行動を起こす?なぜ、検証が有効かどうかを知るための名前、開発者、価格を削除すると、edit.php $ id =(int)$ _ GET ['id']の未定義インデックスとなります。 ?

+3

このコードをさらに詳しく調べる前に、 [SQLインジェクション攻撃](http://bobby-tables.com)と[SQLエラー](http://php.net/mysql_error)を参照する必要があります –

+0

詳細を変更できないと言うと、 どういう意味ですか?試してみるとどうなりますか?エラーメッセージが表示されるのですか、フォームは送信されますが、データベースは更新されませんか? – andrewsi

+0

エラーメッセージはありませんが、提出することはできますが、データベースは更新されません。 – greenthunder

答えて

0

doUpdate.phpで$_REQUEST['id']を取得しようとしていますが、そのようなフィールドはフォームにありません。
隠しフィールドとして追加する必要があります。

また、文字列を書式設定する必要があります。
あなたが入力するすべての文字列は、特殊文字をエスケープする必要があります。

関連する問題