簡體   English   中英

php:處理選擇標記

[英]php:process the select tag

此代碼運行,但是當測試它..數據不正確時,我從數據庫中選擇數據,並在數組廣告中將其顯示為通過選擇標簽顯示ID,但是當選擇任何ID並提交時。例如,我選擇5並單擊提交記錄將刪除的是2而不是5

<?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>

我認為該問題對於期權具有價值。

嘗試將選項行更改為

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

您的<option>標記是錯誤的。 使您的標記像這樣;

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

提示:如果縮進代碼,您會發現調試會更容易 IDE通常具有此選項。 NetBeans是我的最愛。

而不是發送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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM