0

ここの初心者...ここからコードを適応させようとしました

リストは適切に入力されていますが、事前に選択することはできません。私は何を間違っていますか?前もって感謝します!

$q = "SELECT cat_id FROM category_user WHERE cat_id=$d";
        while ($row = mysqli_fetch_array($q)) {
            $cat = (int)$row['cat_id'];
        }
        $q = "SELECT cat_id, cat FROM category";        
        $r = mysqli_query ($dbc, $q);
        if (mysqli_num_rows($r)> 0) {
            while ($row = mysqli_fetch_array ($r, MYSQLI_NUM)) {
                echo "<option value=\"$row[0]\"";
                $selected = '';
                $cid=(int)$row[0];
                if ($cid=$cat) {
                    $selected='selected="selected"';
                    echo $selected;
                echo ">$row[1]</option>\n";
                }else{


                //Check for stickyness
                if (isset($_POST['category'])&&($_POST['category']== $row[0])) 
                echo 'selected="selected"';
                echo ">$row[1]</option>\n";
            }
            }
        }

 category
 ---------------
 |cat_id | cat  |
 ---------------


 category_user
 -------------------------
 |cu_id | user_id | cat_id|
 -------------------------
4

3 に答える 3

0

理解した。foreach ループは、ドロップダウン メニューのすべてを事前に選択します。問題は、ほとんどの場合、mysql テーブルから配列を取得して、選択したとおりに反復することでした。パズルの最後のピースは、$cats の後の括弧 [] でした。

ご協力いただきありがとうございます。また、何を達成しようとしているのかがよくわかりませんでした。私の悪い。

<p><select class=\"box\" name=\"wkType[]\" multiple=\"multiple\">";
$q = "SELECT cat_id FROM category_user WHERE user_id=$d";
$r = mysqli_query ($dbc, $q);
    while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { 
    $cats[]=$row['cat_id'];                     
}
    $q = "SELECT cat_id, cat FROM category";        
    $r = mysqli_query ($dbc, $q);
    if (mysqli_num_rows($r)> 0) {
        while ($row = mysqli_fetch_array ($r, MYSQLI_NUM)) {
            echo "<option value=\"$row[0]\"";
            foreach ($cats as $key =>$cat) {
        if ($row[0]==$cat){
        echo 'selected="selected"';
                    //Check for stickyness
        if (isset($_POST['category'])&&($_POST['category']== $row[0])) 
            echo 'selected="selected"';
        }
                  }
        echo ">$row[1]</option>\n";
          }
}else{
echo '<p>Please select a category.</p>';    
}   
echo "</select></p>";
于 2013-08-21T03:55:20.020 に答える
0

コードを過度に複雑にする理由。このようなものを試すことができます

<?php
    $result = mysqli_query($dbc, "SELECT cat_id, cat FROM category");
    if ($result) {
        echo "<select name='whatever_you_want'>";
        while ($row = mysqli_fetch_array($result)) {
            echo "<option value='{$row[0]}'";
            if (intval($row[0]) == intval($cat_id)) {
                echo " selected";
            }
            echo ">{$row[1]}</option>";
        }
        echo "</select>";
    }
?>
于 2013-08-20T16:15:19.157 に答える