Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [AJAX/PHP/MySQL] Wynik z kilku list rozwijanych (dropdown)
Przemo75
post
Post #1





Grupa: Zarejestrowani
Postów: 66
Pomógł: 2
Dołączył: 9.03.2004
Skąd: POLSKA

Ostrzeżenie: (0%)
-----


Witam,
Załączam zaktualizowany, w pełni działający kod. Pewnie można go jeszcze zoptymalizować, ale to już raczej dla tych lepiej znających się w temacie.

plik index.php
  1. <?php
  2. include_once 'dbconfig.php';
  3. ?>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  5. <html xmlns="http://www.w3.org/1999/xhtml">
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  8. <title>Dynamic Dependent Select Box using jQuery and PHP</title>
  9. <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css" type="text/css" />
  10. <script type="text/javascript" src="jquery-1.4.1.min.js"></script>
  11. <script type="text/javascript">
  12. $(document).ready(function()
  13. {
  14. // function to get all records from table
  15. function getAll(){
  16.  
  17. $.ajax
  18. ({
  19. url: 'pokaz.php',
  20. data: 'action=showAll',
  21. cache: false,
  22. success: function(r)
  23. {
  24. $("#display").html(r);
  25. }
  26. });
  27. }
  28.  
  29. getAll();
  30. // function to get all records from table
  31.  
  32.  
  33. $(".country").change(function()
  34. {
  35. var id=$(this).val();
  36. var dataString = 'id='+ id + '&action=country';
  37. $.ajax
  38. ({
  39. type: "POST",
  40. url: "get_state.php",
  41. data: dataString,
  42. cache: false,
  43. success: function(html)
  44. {
  45. $(".state").html(html);
  46. }
  47. });
  48.  
  49. $.ajax
  50. ({
  51. type: "POST",
  52. url: "pokaz.php",
  53. data: dataString,
  54. cache: false,
  55. success: function(r)
  56. {
  57. $("#display").html(r);
  58. }
  59. });
  60. });
  61.  
  62.  
  63. $(".state").change(function()
  64. {
  65. var id=$(this).val();
  66. var dataString = 'id='+ id + '&action=state';
  67. $.ajax
  68. ({
  69. type: "POST",
  70. url: "get_city.php",
  71. data: dataString,
  72. cache: false,
  73. success: function(html)
  74. {
  75. $(".city").html(html);
  76. }
  77. });
  78.  
  79. $.ajax
  80. ({
  81. type: "POST",
  82. url: "pokaz.php",
  83. data: dataString,
  84. cache: false,
  85. success: function(r)
  86. {
  87. $("#display").html(r);
  88. }
  89. });
  90. });
  91.  
  92.  
  93. $(".city").change(function()
  94. {
  95. var id=$(this).val();
  96. var dataString = 'id='+ id + '&action=city';
  97. $.ajax
  98. ({
  99. type: "POST",
  100. url: "get_city.php",
  101. data: dataString,
  102. cache: false,
  103. success: function(html)
  104. {
  105. $(".city").html(html);
  106. }
  107. });
  108.  
  109. $.ajax
  110. ({
  111. type: "POST",
  112. url: "pokaz.php",
  113. data: dataString,
  114. cache: false,
  115. success: function(r)
  116. {
  117. $("#display").html(r);
  118. }
  119. });
  120. });
  121.  
  122. });
  123. </script>
  124. <style>
  125. label
  126. {
  127. font-weight:bold;
  128. padding:10px;
  129. }
  130. div
  131. {
  132. margin-top:20px;
  133. }
  134. select
  135. {
  136. width:150px;
  137. height:25px;
  138. }
  139. </style>
  140. </head>
  141.  
  142. <body>
  143. <center>
  144. <div>
  145. <label>Country :</label>
  146. <select name="country" class="country">
  147. <option selected="selected">--Państwo--</option>
  148. <?php
  149. include_once 'get_country.php';
  150. ?>
  151. </select>
  152.  
  153. <label>State :</label> <select name="state" class="state">
  154. <option selected="selected">--Stan--</option>
  155. </select>
  156.  
  157.  
  158. <label>City :</label> <select name="city" class="city">
  159. <option selected="selected">--Miasto--</option>
  160. </select>
  161.  
  162. </div>
  163. <div class="" id="display">
  164. <!-- Records will be displayed here -->
  165. </div>
  166. </center>
  167. </body>
  168. </html>

plik pokaz.php
  1. <?php
  2.  
  3. include('dbconfig.php');
  4.  
  5. $action = $_REQUEST['action'];
  6.  
  7. if ($action=='showAll')
  8. {
  9. $id = "0";
  10. }
  11. else $id=$_POST['id'];
  12.  
  13. echo "Akcja: $action i id: $id \n";
  14.  
  15. if($action=="showAll"){
  16. $stmt=$DB_con->prepare('SELECT * FROM tbl_country');
  17. $stmt->execute();
  18. }
  19. elseif($action=="country"){
  20. $stmt = $DB_con->prepare('SELECT * FROM tbl_state WHERE country_id=:id');
  21. $stmt->execute(array(':id' => $id));
  22. }
  23. elseif($action=="state"){
  24. $stmt=$DB_con->prepare('SELECT * FROM tbl_city WHERE state_id=:id ORDER BY city_name');
  25. $stmt->execute(array(':id'=>$id));
  26. }
  27. elseif($action=="city"){
  28. $stmt=$DB_con->prepare('SELECT * FROM tbl_city WHERE city_id=:id ORDER BY city_name');
  29. $stmt->execute(array(':id'=>$id));
  30. }
  31. else{
  32. $stmt=$DB_con->prepare('SELECT * FROM tbl_country');
  33. $stmt->execute();
  34. }
  35.  
  36. ?>
  37. <div class="row">
  38. <?php
  39. if($stmt->rowCount() > 0)
  40. {
  41. while($row=$stmt->fetch(PDO::FETCH_ASSOC))
  42. {
  43. extract($row);
  44. ?>
  45. <?php
  46. if($action=="showAll")
  47. {
  48. ?>
  49. <div class="col-xs-3">
  50. <div style="border-radius:3px; border:#cdcdcd solid 1px; padding:22px;">Kraj:: <?php echo $action; ?> :: <?php echo $country_name; ?></div><br />
  51. </div>
  52. <?php
  53. }
  54. elseif($action=="country")
  55. {
  56. ?>
  57. <div class="col-xs-3">
  58. <div style="border-radius:3px; border:#cdcdcd solid 1px; padding:22px;">Kraj:: <?php echo $action; ?> :: <?php echo $state_name; ?></div><br />
  59. </div>
  60. <?php
  61. }
  62. elseif($action=="state")
  63. {
  64. ?>
  65. <div class="col-xs-3">
  66. <div style="border-radius:3px; border:#cdcdcd solid 1px; padding:22px;">Stan:: <?php echo $action; ?> :: <?php echo $city_name; ?></div><br />
  67. </div>
  68. <?php
  69. }
  70. elseif($action=="city")
  71. {
  72. ?>
  73. <div class="col-xs-3">
  74. <div style="border-radius:3px; border:#cdcdcd solid 1px; padding:22px;">Miasto:: <?php echo $action; ?> :: <?php echo $city_id; ?></div><br />
  75. </div>
  76. <?php
  77. }
  78. }
  79. } else
  80. {
  81. ?>
  82. <div class="col-xs-3">
  83. <div style="border-radius:3px; border:#cdcdcd solid 1px; padding:22px;">Wszystko:: <?php echo $action; ?> :: <?php echo $country_name; ?></div><br />
  84. </div>
  85. <?php
  86. }
  87. ?>
  88. </div>

plik get_coutry.php
  1. <?php
  2. $stmt = $DB_con->prepare("SELECT * FROM tbl_country");
  3. $stmt->execute();
  4. while($row=$stmt->fetch(PDO::FETCH_ASSOC))
  5. {
  6. ?>
  7. <option value="<?php echo $row['country_id']; ?>"><?php echo $row['country_name']; ?></option>
  8. <?php
  9. }
  10. ?>

plik get_state.php
  1. <?php
  2. include('dbconfig.php');
  3. if($_POST['id'])
  4. {
  5. $id=$_POST['id'];
  6. $action=$_POST['action'];
  7. $stmt = $DB_con->prepare("SELECT * FROM tbl_state WHERE country_id=:id");
  8. $stmt->execute(array(':id' => $id));
  9. ?><option selected="selected">Stan :</option><?php
  10. while($row=$stmt->fetch(PDO::FETCH_ASSOC))
  11. {
  12. ?>
  13. <option value="<?php echo $row['state_id']; ?>"><?php echo $row['state_name']; ?></option>
  14. <?php
  15. }
  16. }
  17. ?>

plik get_city.php
  1. <?php
  2. include('dbconfig.php');
  3. if($_POST['id'])
  4. {
  5. $id=$_POST['id'];
  6. $action=$_POST['action'];
  7. $stmt = $DB_con->prepare("SELECT * FROM tbl_city WHERE state_id=:id");
  8. $stmt->execute(array(':id' => $id));
  9. ?><option selected="selected">Miasto :</option><?php
  10. while($row=$stmt->fetch(PDO::FETCH_ASSOC))
  11. {
  12. ?>
  13. <option value="<?php echo $row['city_id']; ?>"><?php echo $row['city_name']; ?></option>
  14. <?php
  15. }
  16. }
  17. ?>

plik dbconfig.php
  1. <?php
  2.  
  3. $DB_host = "localhost";
  4. $DB_user = "root";
  5. $DB_pass = "";
  6. $DB_name = "dbcountries";
  7.  
  8. try
  9. {
  10. $DB_con = new PDO("mysql:host={$DB_host};dbname={$DB_name}",$DB_user,$DB_pass);
  11. $DB_con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  12. }
  13. catch(PDOException $e)
  14. {
  15. $e->getMessage();
  16. }

plik dbcountries.sql
  1. SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
  2.  
  3. /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
  4. /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
  5. /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
  6. /*!40101 SET NAMES utf8 */;
  7.  
  8.  
  9. CREATE TABLE IF NOT EXISTS `tbl_city` (
  10. `city_id` int(3) NOT NULL AUTO_INCREMENT,
  11. `state_id` int(3) NOT NULL,
  12. `city_name` varchar(35) NOT NULL,
  13. PRIMARY KEY (`city_id`)
  14. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ;
  15.  
  16. INSERT INTO `tbl_city` (`city_id`, `state_id`, `city_name`) VALUES
  17. (1, 1, 'Surat'),
  18. (2, 1, 'Ahmedabad'),
  19. (3, 2, 'Pune'),
  20. (4, 2, 'Mumbai'),
  21. (5, 3, 'royston'),
  22. (6, 3, 'bedford'),
  23. (7, 4, 'Litherland'),
  24. (8, 4, 'ST. helens'),
  25. (9, 5, 'Abbeville'),
  26. (10, 5, 'Alpine'),
  27. (11, 6, 'Angoon'),
  28. (12, 6, 'Aniak');
  29.  
  30.  
  31. CREATE TABLE IF NOT EXISTS `tbl_country` (
  32. `country_id` int(3) NOT NULL AUTO_INCREMENT,
  33. `country_name` varchar(25) NOT NULL,
  34. PRIMARY KEY (`country_id`)
  35. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
  36.  
  37. INSERT INTO `tbl_country` (`country_id`, `country_name`) VALUES
  38. (1, 'India'),
  39. (2, 'United kingdom'),
  40. (3, 'United States');
  41.  
  42.  
  43. CREATE TABLE IF NOT EXISTS `tbl_state` (
  44. `state_id` int(3) NOT NULL AUTO_INCREMENT,
  45. `country_id` int(3) NOT NULL,
  46. `state_name` varchar(35) NOT NULL,
  47. PRIMARY KEY (`state_id`)
  48. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
  49.  
  50. INSERT INTO `tbl_state` (`state_id`, `country_id`, `state_name`) VALUES
  51. (1, 1, 'Gujarat'),
  52. (2, 1, 'Maharashtra'),
  53. (3, 2, 'Cambridge'),
  54. (4, 2, 'Liverpool'),
  55. (5, 3, 'Alabama'),
  56. (6, 3, 'Alaska');


Ten post edytował Przemo75 15.11.2017, 15:08:46
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 6.10.2025 - 10:54