2010-09-01 66 views
3
$html=""; 
$sql="SELECT * FROM tiger;"; 
$rs=mysql_query($sql); 
while($row=mysql_fetch_array($rs)){ 

    $html.= 
      '<tr><td align="left"><img src="'.$row['image'].'" width="200" height="150" /></td> 
       <td align="center" style="font:bold">'.$row['name'].' </td> 
      <td align="center"><input type="submit" name="Submit" value="Delete" /> 
      <input name="id" type="hidden" value="'.$row['id'].'" /> </td> 

      </tr>' 
      ; 
    } 
if($_REQUEST['Submit']){ 

$sql1="delete image from tiger where id='".$_REQUEST['id']."'"; 
$query=mysql_query($sql1); 
} 

現在這個$ html被迴應後。所以在輸出即時獲得第一個圖像,然後d圖像的名稱,然後按鈕。現在我想要的是我單擊刪除按鈕相應的行從數據庫中刪除。這在上面的代碼中沒有發生,因爲它無法獲取相應的id。所以pleaser幫助我該怎麼做?想要刪除特定的行。如何獲取ID?

回答

2

您是否已將表單元素添加到此表中?我用$_POST替換了$_REQUEST,儘量避免使用$_GET。知道您的刪除網址的惡意用戶可能會誘使您點擊一個鏈接(例如tinyurl),該鏈接會打開另一組鏈接:刪除所有記錄的頁面。試試這個:

$html=""; 
$sql="SELECT * FROM tiger;"; 
$rs=mysql_query($sql); 
if(!$rs){ 
    echo 'Query failed...'; 
    // and log the error, mysql_error() 
} 
while($row=mysql_fetch_array($rs)){ 

    $html .= 
      '<tr><td align="left"><img src="'.urlencode($row['image']).'" width="200" height="150" /></td> 
       <td align="center" style="font:bold">'.htmlentities($row['name']).' </td> 
      <td align="center"><form action="" method="post"><input type="submit" name="Submit" value="Delete" /> 
      <input name="id" type="hidden" value="'.$row['id'].'" /></form> </td> 

      </tr>' 
      ; 
    } 
if($_POST['Submit'] && isset($_POST['id']) && ctype_digit($_POST['id'])){ 

$sql1="delete image from tiger where id='".$_POST['id']."'"; 
$query=mysql_query($sql1); 
if(!$query){ 
    echo 'Error....'; 
    //and log mysql_error() somewhere 
} 
else{ 
    echo 'Deletion succesful'; 
} 
+0

非常感謝!有效.... – champ 2010-09-01 08:04:53

0

在您的HTML中,您擁有與數據庫中的行一樣多的隱藏字段,所有行都帶有名稱「id」。

要快速修復,請使用常規鏈接並使用GET參數,如<a href="' . $_SERVER['PHP_SELF'] . '?id=' . $row['id'] . '">delete</a>

如果您確實想使用按鈕,則必須在附近添加一個form標籤,每個都是按鈕。