0

i have the following tables in my database:

CREATE TABLE `tblbrands` (
  `brandid` tinyint(2) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(25) NOT NULL,
  PRIMARY KEY (`brandid`),
  UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;





CREATE TABLE `tblcars` (
  `carid` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
  `brandid` tinyint(2) unsigned NOT NULL,
  `typeid` tinyint(2) unsigned NOT NULL,
  `model` varchar(30) NOT NULL,
  `price` double(9,2) unsigned NOT NULL,
  `year` smallint(4) unsigned NOT NULL,
  `mileage` int(6) unsigned NOT NULL,
  `status` tinyint(1) unsigned NOT NULL,
  `description` text NOT NULL,
  `image` varchar(60) NOT NULL,
  `thumb` varchar(60) NOT NULL,
  `sideImage` varchar(60) NOT NULL,
  `rearImage` varchar(60) NOT NULL,
  `sideThumb` varchar(60) NOT NULL,
  `rearThumb` varchar(60) NOT NULL,
  `sellerID` smallint(5) unsigned NOT NULL,
  `dateAdded` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`carid`),
  KEY `brandid` (`brandid`),
  KEY `typeid` (`typeid`),
  KEY `status` (`status`),
  CONSTRAINT `tblcars_ibfk_1` FOREIGN KEY (`brandid`) REFERENCES `tblbrands` (`brandid`),
  CONSTRAINT `tblcars_ibfk_2` FOREIGN KEY (`typeid`) REFERENCES `tblcartypes` (`typeid`),
  CONSTRAINT `tblcars_ibfk_3` FOREIGN KEY (`status`) REFERENCES `tblcarstatus` (`statusID`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;



CREATE TABLE `tblcartypes` (
  `typeid` tinyint(2) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(30) NOT NULL,
  PRIMARY KEY (`typeid`),
  UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;

i have this php script. it has two select boxes which retreive the options from the database tables above.

<?php
    require_once 'autozim/includes/mysql_connect.php';
?>
<html>
    <head>
        <title>Ajax Cascading drop down test</title>
    </head>
    <body>
        <h3>Ajax Cascading Drop-down test</h3>
        <form action="" method="post">
            <p><b>Select Car Type:</b>
            <select name="carTypeID" id="carTypeID">
                <?php
                    $sql = "SELECT typeid, name FROM tblcartypes ORDER by name";
                    $result = mysql_query( $sql ); 
                    while( $row = mysql_fetch_array( $result ) ) {
                        if ( isset( $_POST['cartypeid'] ) and ( $_POST['cartypeid'] == $row['typeid'] ) ) {
                            $selectedCarType = ' Selected ';
                        } else {
                            $selectedCarType = '';
                        }
                        ?>
                            <option value="<?php echo $row['typeid']; ?>" <?php echo $selectedCarType; ?> ><?php echo $row['name']; ?></option>
                        <?php
                    }
                ?>
            </select></p>
            <p><b>Select Car:</b>
            <select name="carID" id="carID">
                <?php
                    $sql = "SELECT CONCAT( b.name, ' ', c.model ) AS car, c.carid FROM tblbrands AS b, tblcars AS c , tblcartypes AS ct ";
                    $sql .= "WHERE b.brandid = c.brandid AND c.typeid = ct.typeid";
                    $result = mysql_query( $sql );
                    while ( $row = mysql_fetch_array( $result ) ) {
                        if ( isset( $_POST['carID'] ) && ( $row['carid'] == $_POST['carid'] ) ) {
                            $selectedCar = ' Selected ';
                        } else {
                            $selectedCar  = '';
                        }
                        ?>
                            <option value="<?php echo $row['carid']; ?>" <?php echo $selectedCar; ?> ><?php echo $row['car']; ?></option>
                        <?php
                    }
                ?>
            </select></p>
        </form>
    </body>
</html>

what i want is when the user selects a value from the first drop down, the second drop down should be populated with cars that have typeid matching the value selected in the first drop down. how do i do this?

2
Contributors
1
Reply
19
Views
4 Years
Discussion Span
Last Post by pritaeas
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.