0

ページ内には、データリスト属性と選択メニュー (「ブランド」) を持つ入力 (「モデル」) があります。ユーザーがモデルからデータリストのオプションの 1 つを選択すると、ブランド選択メニューからオプションの値が動的に変更されます。Model と Brand の両方のオプション値がデータベースから呼び出されます。これが私がこれまでにコーディングしたものです。

<input type="text" name="type" id="type" list="datalist1" onchange="fw();"/>

    <datalist id="datalist1">

         <?php 

      $query9 = "SELECT DISTINCT model FROM server ORDER BY model ASC";
      $result9 = mysql_query($query9);

      while($row9 = mysql_fetch_assoc($result9)) 
      {

      echo '<option value="'.$row9['model'].'">';

     }              ?>

    </datalist>

 <select name="brand" id="test2"><option value="">-- Select Brand--</option></select>

脚本;

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
function fw()
{
var selname = $("#type").val();  
$.ajax({ url: "getBrand.php",

    data: {"brand":brand},

    type: 'post',

    success: function(output) {      

     document.getElementById('test2').options.length = 0;

     document.getElementById('test2').options[0]=new Option(output,output);
        // document.getElementById('test2').options[1]=new Option(output,output);       
    }

 });
}

</script>   

getBrand.php

<?php
define('DB_HOST1', 'localhost');
define('DB_NAME1', 'standby');
define('DB_USER1', 'root');
define('DB_PASS1', '');
$link = mysql_connect(DB_HOST1, DB_USER1, DB_PASS1);
if(!$link)
{
    exit('Cannot connect to server "' . DB_HOST1 . '"');
}

mysql_select_db(DB_NAME1, $link) or die('Cannot use database "' . DB_NAME1 . '"');


if (isset($_POST['brand'])) {   
$selname = $_POST['brand'];

$query = "SELECT * FROM server WHERE model='$brand'";
$res = mysql_query($query);
$aBrand= array();
while($rows = mysql_fetch_assoc($res)) {

$brand= $rows['brand'];

$aBrand[] = $brand; 

echo $aBrand[0];
echo $aBrand[1];
}

}    ?>

私がコード化したものから、選択メニューを動的に変更することに成功しましたが、問題が 1 つあります。getBrand.php から呼び出されるデータが複数ある場合、選択メニューの「出力」はすべてのデータを 1 行に結合します。例えば、データが「M3000」と「M4000」の場合、「M3000M4000」と表示されます。さて、それを分割して通常の選択オプションとして作成するにはどうすればよいですか?

私はまだ Javascript を学んでいます。ここにいる誰かが私を導いてくれることを願っています。

注 : datalist 属性のため、コードは Firefox でのみ機能します。

4

2 に答える 2

1

php から返された文字列に特殊文字を追加します

PHP

 elementcount=0;
  while($row9 = mysql_fetch_assoc($result9)) 
  {
   if(elementcount>0)
   echo '$<option value="'.$row9['model'].'">';//place a $ sign in start or you can for any special character
   else
   echo '<option value="'.$row9['model'].'">';

 }  

今はJavaScriptで

success: function(output) {      
     output = output.split("$");
     document.getElementById('test2').options.length = 0;
     //here now loop through the elements and add
     for(var i=0,i<output.length-1)
     document.getElementById('test2').options[0]=new Option(output[i],output[i]);
        // document.getElementById('test2').options[1]=new Option(output,output);       
    }
于 2012-06-12T07:50:04.633 に答える
1

getBrand.php からデータを次のように送信します。

echo implode(";", $aBrand);

これにより、M3000;M4000;M5000;M6000 のような文字列が生成されます

Javaスクリプトコードで、このコードを使用して文字列を配列に分割します。

StrArr = Str.split (";");

ここで、'Str' は getBrand.php によって与えられた出力であり、'StrArr' はブランドを含む配列です。

于 2012-06-12T07:51:03.623 に答える