0

Basically I have three dynamic dropdowns

The first one shows the categories

The second one displays the sub category under the category that I chose on the first dropdown

The third one displays the topics under the sub category that I chose on the second dropdown. This file is called testdropdown.php

<?php
    $con = mysqli_connect("localhost","root","","imetrics");
?>
<form name="form1" action="" method="POST">
    <table>
        <tr>
            <td>Select Category</td>
            <td>
                <select id="categorydd" onChange="change_category()">
                    <option>--None Selected--</option>
                    <?php
                        $query=mysqli_query($con, "SELECT category_id, categoryname FROM category WHERE ParentCategoryID IS NULL");
                        while($row=mysqli_fetch_array($query)) {
                    ?>
                    <option value="<?php echo $row["category_id"]; ?>"><?php echo $row["categoryname"]; ?></option>
                    <?php
                        }
                    ?>
                </select>
             </td>
          </tr>
          <tr>
             <td>Select Subcategory</td>
             <td>
                <div id="subcategory">
                    <select>
                        <option>-- None Selected--</option>
                    </select>
                </div>
             </td>
          </tr>
          <tr>
             <td>Select Topic</td>
             <td>
                <div id="topic">
                   <select>
                      <option>-- None Selected--</option>
                   </select>
                </div>
             </td>
         </tr>
     </table>
 </form>
 <script type="text/javascript">
    function change_category() {
       var xmlhttp=new XMLHttpRequest();
       xmlhttp.open("GET","ajax.php?category="+document.getElementById("categorydd").value,false);
       xmlhttp.send(null);
       document.getElementById("subcategory").innerHTML=xmlhttp.responseText;
       if(document.getElementById("categorydd").value=="--None Selected--") {
          document.getElementById("topic").innerHTML="<select><option>--None Selected--</option></select>";
       }
    }
    function change_subcategory() {
       var xmlhttp=new XMLHttpRequest();
       xmlhttp.open("GET","ajax.php?subcategory="+document.getElementById("subcategorydd").value,false);
       xmlhttp.send(null);
       document.getElementById("topic").innerHTML=xmlhttp.responseText;
    }
 </script>

ajax.php

  <?php
    $con = mysqli_connect("localhost","root","","imetrics");

    $category=$_GET["category"];
    $subcat=$_GET["subcategory"];

    if($category!="") {
        $query=mysqli_query($con, "SELECT category_id, categoryname FROM category WHERE ParentCategoryID =$category ");
    echo "<select id='subcategorydd' onChange='change_subcategory()'>";
        echo " <option>--None Selected--</option>";
    while($row=mysqli_fetch_array($query)) {
        echo "<option value='$row[category_id]' selected>"; echo $row["categoryname"]; echo "</option>";
    }
        echo "</select>";
    }

    if($subcat!="") {
        $query=mysqli_query($con, "SELECT * FROM topic WHERE SubCat = $subcat ");
        echo "<select>";
        echo " <option>--None Selected--</option>";
        while($row=mysqli_fetch_array($query)) {
            echo "<option value='$row[topic_id]' selected>"; echo $row["title"]; echo "</option>";
        }
        echo "</select>";
    }
 ?>

After clicking data from

First dropdown it pops up this error Notice: Undefined index: subcategory in C:\xampp\htdocs\new\ajax.php on line 5.

Then after clicking data from

Second dropdown it pops up this error Notice: Undefined index: category in C:\xampp\htdocs\new\ajax.php on line 4.

That's the first weird thing.

enter image description here

The second weird thing is the function change_subcategory() in testdropdown.php. I think that means it can't find the function but the code is working fine.

M Hamza Javed
  • 1,269
  • 4
  • 17
  • 31
ranger
  • 93
  • 2
  • 10
  • The syntax highlighting in your screenshot simply indicates that your IDE cannot find any uses of that function. This doesn't necessarily mean that there aren't any in reality – Phil Feb 06 '17 at 05:32
  • Try changing line in ajax.php to $category= isset($_GET["category"])?$_GET["category"]:"" ; $subcat=isset($_GET["subcategory"])?$_GET["subcategory"]:""; – Parag Feb 06 '17 at 05:46
  • Noted and thank you sir @Phil – ranger Feb 06 '17 at 05:56
  • thank you sir @Parag it worked! The errors are gone now. – ranger Feb 06 '17 at 05:56

0 Answers0