2012-07-29 2 views
0

db 테이블에서 행을 편집하는 양식을 작성하려고합니다. (StackOverflow 페이지에서 가져온 일부 코드를 기반으로합니다.)양식을 사용하여 mysql 행을 편집 할 수 없습니다.

양식을 관련 데이터와 함께 채울 수 있지만 양식을 제출할 때 행이 업데이트되지 않습니다. 실제로 일부 열은 삭제됩니다.

내가 뭘 잘못 했니?

edit.php

<?php 

$UID = (int)$_GET['f']; 
$query = mysql_query("SELECT * FROM user_feeds WHERE feed_id = '$UID'") or die(mysql_error()); 

if(mysql_num_rows($query)>=1){ 
    while($row = mysql_fetch_array($query)) { 
     $feedtitle = $row['feed_title']; 
     $feedurl = $row['feed_url']; 
     $feedorder = $row['feed_order']; 
     $feedowner = $row['feed_owner']; 
    } 
?> 
<form action="update.php" method="post"> 
<input type="hidden" name="ID" value="<?=$UID;?>"> 
Title:<br /> <input type="text" name="ud_feedtitle" value="<?=$feedtitle?>"><br> 
URL: <br /> <input type="text" name="ud_feedurl" value="<?=$feedurl?>"><br> 
Order: <br /> <input type="text" name="ud_feedorder" value="<?=$feedorder?>"><br> 
Owner:<br /> <input type="text" name="ud_feedowner" value="<?=$feedowner;?>"><br> 
<input type="Submit"> 
</form> 
<?php 
}else{ 
    echo 'No entry found. <a href="javascript:history.back()">Go back</a>'; 
} 
?> 
</div> 
</body> 
</html> 

update.php

<?php 



$ud_ID = $_REQUEST["ID"]; 
$ud_feedtitle = $_POST["feed_title"]; 
$ud_feedurl = $_POST["feed_url"]; 
$ud_feedorder = $_POST["feed_order"]; 
$ud_feedowner = $_POST["feed_owner"]; 


$query = "UPDATE user_feeds SET feed_title = '$ud_feedtitle', feed_url = '$ud_feedurl', feed_order = '$ud_feedorder', feed_owner = '$ud_feedowner', WHERE feed_id = '$ud_ID'"; 


$res = mysql_query($query); 

if ($res) 
    echo "<p>Record Updated<p>"; 

else 
    echo "Problem updating record. MySQL Error: " . mysql_error(); 

?> 
+0

왜 'while'문을 사용하여 '$ feed ...'변수를 덮어 쓰는 지 알 수 없습니다. –

답변

2

이유 :

입력 필드의 이름 $ _POST가 채워질 때되는 동일한 이름이 . 현재 요청중인 변수 :

$_POST["feed_title"];, $_POST["feed_url"];, $_POST["feed_order"];, $_POST["feed_owner"]; 

은 모두 존재하지 않으므로 비어 있습니다. 업데이트 할 때 테이블의 값을 공백 값으로 바꿉니다.


해결 방법 : update.php,에서

대신이 있어야 다음과 같습니다.

$ud_ID = $_POST["ID"]; 
$ud_feedtitle = $_POST["ud_feedtitle"]; //corresponding to <input type="text" name="ud_feedtitle" ... 
$ud_feedurl = $_POST["ud_feedurl"]; //corresponding to <input type="text" name="ud_feedurl" ... 
$ud_feedorder = $_POST["ud_feedorder"]; //corresponding to <input type="text" name="ud_feedorder" ... 
$ud_feedowner = $_POST["ud_feedowner"]; //corresponding to <input type="text" name="ud_feedowner" ... 
+0

아무 것도하지 않는 것 같습니다. 이전처럼 DB에서 필드를 삭제했습니다. – Richard

+0

다시 확인하십시오. 또한'$ ud_feedtitle' 값과 PHP의 다른 변수를 반향 출력 해보십시오. –

+0

나는 조금 더 많은 코드를 업데이트했다. 솔루션을 다시 시도하십시오. –

관련 문제