2014-09-30 91 views
0

這段代碼運行但測試它..數據不正確我從數據庫中選擇數據,我在數組中做廣告通過選擇標記顯示它的標識,但是當選擇任何標識並提交時。我選擇5並點擊提交記錄將刪除是2不是5php:處理選擇標記

<?php 
require_once "config.php"; 
$qid="select id from info_user"; 
$arrayid=array(); 
$result=mysql_query($qid); 
while($res=mysql_fetch_array($result)){ 
$arrayid[]=$res['id']; 
} 
var_dump($arrayid); 
if(isset($_POST['sub'])){ 
$id=$_POST['id']; 
$q="delete from info_user where id=$id "; 
$qq=mysql_query($q); 
if($qq){ 
    echo "you delete record "; 
} 
else{ 
    echo "error in deleting"; 
}} 
?> 
<html> 
<head> 
<title>delete</title> 
</head> 
<form action="delete.php" method="post"> 
<select name="id"><?php for($i=0;$i<count($arrayid);$i++){?> 
<option value="<?php echo $i;?>"><?php echo $arrayid[$i];} ?></option></select> <br /> 
<input type="submit" name="sub" />  
</form> 
</html> 
+0

數組輸出是什麼? – Elasek 2014-09-30 12:35:24

+0

我明白英文不是你的主要語言,但是請儘量使用a來閱讀句子。或者, – winkbrace 2014-09-30 12:35:44

+0

好的謝謝winkbrace :) – hamdy 2014-10-01 14:23:27

回答

0

我認爲這個問題是值的選項。

試一試更改選項行

<option value="<?php echo $arrayid[$i];?>"><?php echo $arrayid[$i];} ?></option></select> <br /> 
+0

好吧,這是一個問題...非常感謝 – hamdy 2014-10-01 14:18:27

0

<option>標記是錯誤的。像這樣做你的標記;

<select name="id"> 
    <?php for ($i = 0; $i < count($arrayid); $i++) { ?> 
    <option value="<?php echo $i; ?>"><?php echo $arrayid[$i]; ?></option> 
    } ?> 
</select> 

提示:你會發現調試更加方便,如果你indent your code. IDE的一般有這個選項。 NetBeans是我的最愛。

0

不是發送id,而是發送與id關聯的數組鍵。例如,假定:$arrayid = array(10, 11, 12);

這相當於:$arrayid = array(0 => 10, 1 => 11, 2 => 12);

你會看到的選項10,11和12,但你會送爲0,11或12,因爲這是你設置的選項的值是什麼:

<select name="id"> 
    <option value="0">10</option> 
    <option value="1">11</option> 
    <option value="2">12</option> 
</select> 

如果選擇選擇「11」,該SQL語句刪除條目將是:

delete from info_user where id=1 

我沒有測試此代碼,我假設ID是整數,但嘗試:

<?php 
require_once "config.php"; 
$qid  = "select id from info_user"; 
$arrayid = array(); 
$result = mysql_query($qid); 
while($res = mysql_fetch_array($result)){ 
    $arrayid[] = $res['id']; 
} 

if(isset($_POST['sub'])){ 
    $id = (int)$_POST['id']; // make sure it's an integer to avoid SQL injections 
    $q = "delete from info_user where id=$id"; 
    $qq = mysql_query($q); 
    if($qq) { 
     $error = "you delete record "; 
    } else { 
     $error = "error in deleting"; 
    } 
} 
?> 
<!DOCTYPE html> 
<html> 
    <head> 
     <title>delete</title> 
    </head> 
    <body> 
     <?php 
     if(isset($error)) : 
      echo '<p>', htmlspecialchars($error), '</p>'; 
     elseif(!empty($arrayid)) : 
      var_dump($arrayid); 
     endif; 
     ?> 

     <form action="delete.php" method="post"> 
      <select name="id"> 
       <?php foreach($arrayid as $id): ?> 
       <option value="<?php echo (int)$id;?>"> 
        <?php echo (int)$id; ?> 
       <?php endforeach; ?> 
       </option> 
      </select> 
      <br /> 
      <input type="submit" name="sub" />  
     </form> 
    </body> 
</html>