2012-05-05 5 views
0

사용자 로그인이있을 때 제품을 업데이트하고 싶습니다. 다음은이 doUpdate.php 내 코드가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 내 코드는

<?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"); 
} 

?> 이미 심지어 이름, 개발자, 또는 가격을 변경할 수없는 이유

형태로 행동을 줄래? 왜 이름, 개발자 및 가격을 삭제하면 유효성 검사가 작동하는지 여부를 알 수 없으므로 edit.php $ id = (int) $ _ GET [ 'id']의 정의되지 않은 색인이 표시됩니다. ?

+3

이 코드를 더 자세히 설명하기 전에 다음을 수행하십시오. [SQL injection attacks] (http://bobby-tables.com) 및 [SQL 오류] 처리 (http://php.net/mysql_error) –

+0

세부 사항을 변경할 수 없다고 말하면 , 무슨 뜻이야? 시도 할 때 어떻게됩니까? 오류 메시지가 나타나거나 양식이 제출 되나 데이터베이스가 업데이트되지 않습니까? – andrewsi

+0

제출할 수 있지만 데이터베이스가 업데이트되지 않는다는 오류 메시지는 없습니다. – greenthunder

답변

0

doUpdate.php에서 $_REQUEST['id']을 얻으려고하고 있지만 해당 필드가 양식에 없습니다.
숨겨진 필드로 추가해야합니다.

또한 문자열의 서식을 지정해야합니다.
검색어에 넣을 모든 문자열을 특수 문자를 이스케이프 처리해야합니다.

관련 문제