0

Ajaxとabc.php(以下のコード)を使用して2番目の選択タグの値を入力しましたが、2番目の選択タグの選択後に表示される3番目の選択タグを入力できません。任意の提案をいただければ幸いです

<?php
$q=$_GET["q"];
include "localhost.php";
$sql="SELECT * FROM books WHERE class = '".$q."'";
$result = mysql_query($sql);
if(mysql_num_rows($result) > 0)
{
  while($row = mysql_fetch_array($result))
  {
     echo "<select name=\"name\">
           <option>Select subject
           </option>";
    echo "<option>" . $row['name'] ."</option>";
    echo "</select>";
  }          
}
else
{
   echo "error";
}

mysql_close($con);
?>

私のHTMLコードは

<?php 
    include "menu.php";
    include "localhost.php";

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<script>
<!--Code for selecting class-->
function showUser(str)
{
if (str=="Select class:")
  {
  document.getElementById("txtHint").innerHTML="Select any class";
  return;
  }
  if (str=="Select cla:")
  {
  document.getElementById("txtHint1").innerHTML="Select any cla";
  return;
  }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
    }

  }
xmlhttp.open("GET","select11.php?q="+str,true);
xmlhttp.send();
}
<!--End of Code for selecting class-->








</script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>


        <link type="text/css" href="style.css" rel="stylesheet" />
</head>

<body>

        <div id="sn">

            <ul class="crumbs">
                <li class="first"><a href="iindex.php" style="z-index:9;"><span></span>Home</a></li>
                <li><a href="#" style="z-index:8;">Books</a></li>
                <li><a href="#" style="z-index:7;">Sale Books</a></li>
            </ul>

    </div>
    <div id="newad">
<fieldset>
    <legend><strong>Sale Books &amp; Stationary</strong></legend>
    <form >
      <table width="499" >
        <tr>
          <td width="96">Select Class:</td>
          <td width="139"><select required="required" x-moz-errormessage="Select the Class" name="class" id="select" onchange="showUser(this.value)">
            <option  selected="selected">Select class:</option> 

何とか何とか

そして、はい、私はwhileループが私に無数のselectタグを与えることを知っています。

4

3 に答える 3

1

そのはず

if(mysql_num_rows($result) > 0)
{
    echo "<select name=\"name\"><option>Select subject</option>";
    while($row = mysql_fetch_array($result))
    {         
         echo "<option>" . $row['name'] ."</option>";

    }
  echo "</select>";
}
于 2013-01-12T14:08:50.493 に答える
0

あなたのhtmlを表示できますか?

onchange="someFunction()"2 番目の select タグに追加してみてください。ここsomeFunction()で、 は ajax を使用して 3 番目の select タグに入力する JavaScript 関数です。

于 2013-01-12T14:08:06.243 に答える
0

あなたの質問は意味がありませんが、使用する前に変数が設定されていることを確認し、持っている sql-injection をクリーンアップすることをお勧めしますexample.com?q=' or '1=1。現在、コードが行うことは、返されるすべての結果に対して新しい選択ボックスを作成することです。ループの外側で選択を初期化し、ループ内にオプションを挿入する必要があります。

<?php
$q = !empty($_GET["q"])?$_GET["q"]:null;

include "localhost.php";

if($q != null){
    $sql="SELECT * FROM books WHERE class = '".mysql_real_escape_string($q)."'";

    $result = mysql_query($sql);

    $sel = '<select name="name"><option>Select subject</option>';
    if(mysql_num_rows($result) > 0){
        while($row = mysql_fetch_array($result)){
            $sel .= "<option>" . $row['name'] ."</option>";
        }
    }else{
        $sel .= '<option>No Books</option>';
    }
    $sel .= "</select>";


    echo $sel;
}
?>
于 2013-01-12T14:08:57.457 に答える