0

これどうやってするの。最初のドロップダウン ハンド スパで選択すると、ハンド マッサージは 2 番目のドロップダウンにのみ表示されます。

2 番目のドロップダウンの値が最初の値に依存するようにしたいのですが、現在のコードは次のとおりです。

<body>
<form method='index.php' action='post'>

    Category:  <select id="id" name="category">
    <?php
        $qry=mysql_query("SELECT * FROM categ",$con);
        while($rs = mysql_fetch_object($qry)){
            echo "<option id='".$rs->categid."'>" .$rs->categname."</option>";
        }
    ?>
    </select>
<br>
    sub categ:  <select id="id" name="subcategory">
    <?php
        $qry=mysql_query("SELECT * FROM serv",$con);
        while($rs = mysql_fetch_object($qry)){
            echo "<option id='".$rs->servid."'>" .$rs->servname."</option>";
        }
    ?>
    </select>

</form>
</body>

ここに私のデータベースがあります

CREATE TABLE IF NOT EXISTS `categ` (
  `categid` int(11) NOT NULL AUTO_INCREMENT,
  `categname` varchar(255) NOT NULL,
  PRIMARY KEY (`categid`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

--
-- Dumping data for table `categ`
--

INSERT INTO `categ` (`categid`, `categname`) VALUES
(1, 'hand spa'),
(2, 'foot spa');


CREATE TABLE IF NOT EXISTS `serv` (
  `servid` int(11) NOT NULL AUTO_INCREMENT,
  `servname` varchar(255) NOT NULL,
  `categid` int(11) NOT NULL,
  PRIMARY KEY (`servid`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

--
-- Dumping data for table `serv`
--

INSERT INTO `serv` (`servid`, `servname`, `categid`) VALUES
(1, 'haaaanndddd massage', 1),
(2, 'footssppaa', 2);
4

2 に答える 2

1

これは、必要に応じてカスタマイズできる例です。基本的に、jQuery / AJAX を使用してこれを実現できます。

次の例では、見つかった値が入力された 2 番目のドロップダウン ボックスを作成します。ロジックを 1 行ずつ追ってみると、実際には非常に単純であることがわかります。コメントアウトした行をいくつか残しました。コメントを外すと (一度に 1 行)、スクリプトが各段階で何を行っているかがわかります。

ファイル 1 -- TESTER.PHP

<html>
    <head>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
        <script type="text/javascript">
            $(function() {
//alert('Document is ready');

                $('#stSelect').change(function() {
                    var sel_stud = $(this).val();
//alert('You picked: ' + sel_stud);

                    $.ajax({
                        type: "POST",
                        url: "another_php_file.php",
                        data: 'theOption=' + sel_stud,
                        success: function(whatigot) {
//alert('Server-side response: ' + whatigot);
                            $('#LaDIV').html(whatigot);
                            $('#theButton').click(function() {
                                alert('You clicked the button');
                            });
                        } //END success fn
                    }); //END $.ajax
                }); //END dropdown change event
            }); //END document.ready
        </script>
    </head>
<body>

    <select name="students" id="stSelect">
        <option value="">Please Select</option>
        <option value="John">John Doe</option>
        <option value="Mike">Mike Williams</option>
        <option value="Chris">Chris Edwards</option>
    </select>
    <div id="LaDIV"></div>

</body>
</html>

ファイル 2 - another_php_file.php

<?php

//Login to database (usually this is stored in a separate php file and included in each file where required)
    $server = 'localhost'; //localhost is the usual name of the server if apache/Linux.
    $login = 'root';
    $pword = '';
    $dbname = 'test';
    mysql_connect($server,$login,$pword) or die($connect_error); //or die(mysql_error());
    mysql_select_db($dbname) or die($connect_error);

//Get value posted in by ajax
    $selStudent = $_POST['theOption'];
    //die('You sent: ' . $selStudent);

//Run DB query
    $query = "SELECT * FROM `category` WHERE `master` = 0";
    $result = mysql_query($query) or die('Fn another_php_file.php ERROR: ' . mysql_error());
    $num_rows_returned = mysql_num_rows($result);
    //die('Query returned ' . $num_rows_returned . ' rows.');

//Prepare response html markup
    $r = '  
            <h1>Found in Database:</h1>
            <select>
    ';

//Parse mysql results and create response string. Response can be an html table, a full page, or just a few characters
    if ($num_rows_returned > 0) {
        while ($row = mysql_fetch_assoc($result)) {
            $r = $r . '<option value="' .$row['id']. '">' . $row['name'] . '</option>';
        }
    } else {
        $r = '<p>No student by that name on staff</p>';
    }

//Add this extra button for fun
    $r = $r . '</select><button id="theButton">Click Me</button>';

//The response echoed below will be inserted into the 
    echo $r;

よくある質問に答えるには: 「1 番目のドロップダウン ボックスで選択したオプションにのみ関連するフィールドを 2 番目のドロップ ダウン ボックスに入力するにはどうすればよいですか?」

A. 最初のドロップダウンの.changeイベント内で、最初のドロップダウン ボックスの値を読み取ります。

$('#dropdown_id').change(function() {
var dd1 = $('#dropdown_id').val();
}

B. 上記のイベントの AJAX コードで.change()、2 番目の .PHP ファイル (この場合は「another_php_file.php」) に送信するデータにその変数を含めます。

C. その渡された変数を mysql クエリで使用しているため、結果が制限されている。success:これらの結果は AJAX 関数に返され、AJAX 関数の一部でアクセスできます。

D. その成功関数では、変更された SELECT 値を使用してコードを DOM に挿入します。


これは、上記の例がどのように機能するかです:

  1. ユーザーが学生の名前を選択すると、jQuery.change()セレクターが起動します

  2. ユーザーが選択したオプションを取得する行は次のとおりです。

    var sel_stud = $(this).val();

  3. この値はanother_php_file.php、AJAX コードの次の行を介して に送信されます。

    data: 'theOption=' + sel_stud,

  4. 受信ファイルanother_php_file.phpは、ここでユーザーの選択を受け取ります。

    $selStudent = $_POST['theOption'];

  5. Var $selStudent (AJAX 経由で投稿されたユーザーの選択) は、mysql 検索で使用されます。

    $query = " SELECT * FROM `category` WHERE `master` = 0 AND `name` = '$selStudent' ";

    (データベースに合わせて例を変更するとき、$selStudent への参照は削除されました。しかし、これ (ここ、上記) は、それを使用する方法です)。

  6. ここで新しい<SELECT>コード ブロックを作成し、HTML を という変数に格納します$r。HTML が完全にビルドされたら、カスタマイズしたコードをエコー バックするだけで AJAX ルーチンに戻します。

    echo $r;

  7. 受信したデータ (カスタマイズされた<SELECT>コード ブロック) は AJAX 内で使用でき、次のようsuccess: function() {//code block}に DOM に挿入できます。

    $('#LaDIV').html(whatigot);

そしてほら、最初のドロップダウン コントロールからの選択に固有の値でカスタマイズされた 2 番目のドロップダウン コントロールが表示されます。

Microsoft 以外のブラウザーのように動作します。

于 2013-09-27T20:46:31.277 に答える
0

私があなたの質問を明確に受け取った場合は、このコードを調べて、ニーズに合わせてカスタマイズしてください。シンプルで簡単です:

私たちの目的が映画を管理することだとしましょう

<label>Movie Category</label>
    <select name="movieCategory" id="movieCategory">
                <option value="">--- S e l e c t ---</option>
               <?php
    $movieCategory= array("Action","Romance","Horror","Comedy","Music","Interviews");

    reset($movieCategory);
    while (list($key ,  $value) = each($movieCategory)) {

         echo " <option id='".$value."' value='".$value."'>".$value."</option>";
    }
    ?>           
              </select>
              <br>
          <label>Movie SubCategory</label>
              <select name="subCategory" id="subCategory">
                <option value="">--- S e l e c t ---</option>
               <?php
    $subCategory= array("Action","Romance","Horror","Comedy","Music","Interviews");

    reset($subCategory);
    while (list($key ,  $subvalue) = each($subCategory)) {

         echo " <option id='".$subvalue."' value='".$subvalue."'>".$subvalue."</option>";
    }


    ?>

              </select>

    <script language="javascript" type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js" ></script>

    <script language="javascript" type="text/javascript">
    $(function () {

    $('select#movieCategory').change(function(){

    $('select#subCategory  option#'+$(this).val()).attr( "selected" , "selected"  )
    });


    });

</script>
于 2013-09-27T20:25:18.427 に答える