1

互いに変更する複数のドロップダウン メニューを含むフォームを作成する必要があります。メニュー/データベース テーブルは次のとおりです。

カテゴリ、スタイル、タイプ、およびメカニズム

私は Ajax に関する限られた知識でこれを実行しようとしましたが、MySQL に (最初のページで) 1 回しかアクセスできず、次の結果セットをクエリして Styles テーブルを更新することなく、Categories テーブルにデータを入力することができませんでした。データベースが空であることを示すエラーが表示されます。

また、ループ クエリでカテゴリとスタイルの両方を処理するために、オプション グループを介してドロップダウンを設定しようとしましたが、カテゴリの見出しのみが表示され、すべてのスタイル サブ値が空白で表示されます。私のコードは次のとおりです。

                $query1="SELECT categories.category_id, categories.Category_Name ";
                $query1.="FROM categories ";
                $query1.="ORDER BY categories.Category_Name ASC";
                $category_result=mysql_query($query1, $connection);

                if(!$category_result){
                    die("Database query failed: " . mysql_error());
                }

                $options="";

                $con=0;

                while ($category_row=mysql_fetch_array($category_result)) {
                    $category_name=$category_row["Category_Name"];
                    $CategoryID=$category_row["category_id"];

                    $options.="<OPTGROUP LABEL=\"$category_name\"> <br />";

                    $query2="SELECT categories.category_id, categories.Category_Name, ";
                    $query2.="styles.style_id, styles.Style_Name ";
                    $query2.="FROM categories, styles ";
                    $query2.="WHERE styles.Category_ID = $CategoryID ";
                    $style_result=mysql_query($query2, $connection);

                    if(!$style_result){
                        die("Database query failed: " . mysql_error());
                    }

                    while ($style_row=mysql_fetch_array($style_result)) {
                        $style_name=$row["Style_Name"];
                        $id=$row["style_id"];

                        $options.="<OPTION VALUE=\"$id\" <a href=\"#\" onClick=\"javascript:swapContent('$style_name');\" >".$style_name.'</OPTION>';
                    }
                    $options.='</OPTGROUP> <br />';
                }
            ?>

            <SELECT NAME="category_id">
                <OPTION VALUE=0></OPTION>
                <?php echo $options ?>choose
            </SELECT>

私が間違っていることについての洞察は大歓迎です!

4

2 に答える 2

0

オプションは配列でなければなりません。

$options[]="<OPTGROUP LABEL=\"$category_name\"> <br />";
<SELECT NAME="category_id">
   <?php foreach ($options as $value) 
           echo $value?>
</SELECT>
于 2012-10-28T19:57:19.050 に答える
0

最終的には自分で解決する必要がありましたが、助けようとした人に感謝します。

クラス/カテゴリ/スタイル/タイプ カスケード テーブルからミドル テーブルを投稿します。まず、以下のような関数を作成します。

 <?php //Category Selection
    function Category_Selection($link) {
        global $connection;
        $options="";
        if(isset($_GET["class_id"])) {
            $query="SELECT categories.category_id, categories.Category_Name ";
            $query.="FROM categories ";
            $query.="ORDER BY categories.Category_Name ASC";
            $result=mysql_query($query, $connection);
            $class_id=$_GET['class_id'];

            if(!$result){
                die("Database query failed: " . mysql_error());
            }
            while ($row=mysql_fetch_array($result)) {
                $name=$row["Category_Name"];
                $id=$row["category_id"];
                $link2=$link."&category_id={$id}";
                $options.="<OPTION VALUE=\"$link2\" ";
                if(isset($_GET["category_id"])) {
                    $category_id = $_GET['category_id'];
                    if($id==$category_id) {
                        $options.=" selected=\"selected\" ";
                    }
                }
                $options.=" >".$name.'</OPTION>';
            }
        } else {
            $options.="<OPTION selected=\"selected\" VALUE=0>First Select Class</OPTION>";
        }
        return($options);
    }
?>

次に、メイン ページに配置します。

<?php session_start() ?>
    //Category
    if(isset($_GET['category_id'])) {
        $category_id=$_GET['category_id'];
        setcookie('category_id',$category_id);
        $link.="&category_id={$category_id}";
    }elseif(isset($_COOKIE['category_id'])) {
        $_GET['category_id']=$_COOKIE['category_id'];
        $category_id=$_COOKIE['category_id'];
        $link.="&category_id={$category_id}";
    }

次に、ドロップダウンを選択します。

<?php //Category Selection
                $options=Category_Selection($link);
            ?>
            <center>
            <SELECT NAME="category_id" ONCHANGE="location = this.options[this.selectedIndex].value;">
                <OPTION VALUE=0></OPTION>
                <?php echo $options ?>
            </SELECT>
            </center>

必要なドロップダウンごとに上記を繰り返します。

幸運を祈ります...もちろん、上記の MYSQL ではなく MYSQLi を使用してサイトを保護してください...

于 2012-12-24T22:26:54.443 に答える