Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX/PHP/MySQL] Wynik z kilku list rozwijanych (dropdown)
Forum PHP.pl > Forum > XML, AJAX
Przemo75
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');
nospor
i?
Przemo75
I ... może się komuś przyda. Wcześniej miałem problem z kodem, ale w końcu udało mi się z tym uporać, więc postanowiłem zaktualizować post o poprawny kod.

Niestety przy próbie jego przeróbki na obsługę pojedynczej tabeli mam problem, którego nie mogę rozwiązać. Po wybraniu ostatniego SELECT'a wyświetla wszystkie wartości z zadanym parametrem bez uwzględnienia parametru z wcześniejszej kategorii.
Plik index.php
  1. <?php
  2. include_once 'dbconfig.php';
  3. ?>
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css" type="text/css" />
  7. <script type="text/javascript" src="jquery-1.4.1.min.js"></script>
  8. <script type="text/javascript">
  9. $(document).ready(function()
  10. {
  11. // function to get all records from table
  12. function getAll(){
  13.  
  14. $.ajax
  15. ({
  16. url: 'pokaz.php',
  17. data: 'action=showAll',
  18. cache: false,
  19. success: function(r)
  20. {
  21. $("#display").html(r);
  22. }
  23. });
  24. }
  25.  
  26. getAll();
  27. // function to get all records from table
  28.  
  29.  
  30. $(".site").change(function()
  31. {
  32. var site=$(this).val();
  33. var dataString = 'id='+ site + '&action=site';
  34. $.ajax
  35. ({
  36. type: "POST",
  37. url: "get_menu.php",
  38. data: dataString,
  39. cache: false,
  40. success: function(html)
  41. {
  42. $(".menu").html(html);
  43. }
  44. });
  45.  
  46. $.ajax
  47. ({
  48. type: "POST",
  49. url: "pokaz.php",
  50. data: dataString,
  51. cache: false,
  52. success: function(r)
  53. {
  54. $("#display").html(r);
  55. }
  56. });
  57. });
  58.  
  59.  
  60. $(".menu").change(function()
  61. {
  62. var id=$(this).val();
  63. var dataString = 'id='+ id + '&action=menu';
  64. $.ajax
  65. ({
  66. type: "POST",
  67. url: "get_categ.php",
  68. data: dataString,
  69. cache: false,
  70. success: function(html)
  71. {
  72. $(".categ").html(html);
  73. }
  74. });
  75.  
  76. $.ajax
  77. ({
  78. type: "POST",
  79. url: "pokaz.php",
  80. data: dataString,
  81. cache: false,
  82. success: function(r)
  83. {
  84. $("#display").html(r);
  85. }
  86. });
  87. });
  88.  
  89.  
  90. $(".categ").change(function()
  91. {
  92. var id=$(this).val();
  93. var dataString = 'id='+ id + '&action=categ';
  94. $.ajax
  95. ({
  96. type: "POST",
  97. url: "get_categ.php",
  98. data: dataString,
  99. cache: false,
  100. success: function(html)
  101. {
  102. $(".links").html(html);
  103. }
  104. });
  105.  
  106. $.ajax
  107. ({
  108. type: "POST",
  109. url: "pokaz.php",
  110. data: dataString,
  111. cache: false,
  112. success: function(r)
  113. {
  114. $("#display").html(r);
  115. }
  116. });
  117. });
  118.  
  119. });
  120. </script>
  121. <style>
  122. label
  123. {
  124. font-weight:bold;
  125. padding:10px;
  126. }
  127. div
  128. {
  129. margin-top:20px;
  130. }
  131. select
  132. {
  133. width:150px;
  134. height:25px;
  135. }
  136. </style>
  137. </head>
  138.  
  139. <body>
  140. <center>
  141. <div>
  142. <label>Strona :</label>
  143. <select name="site" class="site">
  144. <option selected="selected">--Strona--</option>
  145. <?php
  146. include_once 'get_site.php';
  147. ?>
  148. </select>
  149.  
  150. <label>Dział :</label> <select name="menu" class="menu">
  151. <option selected="selected">--Dział--</option>
  152. </select>
  153.  
  154.  
  155. <label>Temat :</label> <select name="categ" class="categ">
  156. <option selected="selected">--Temat--</option>
  157. </select>
  158.  
  159. </div>
  160. <div class="" id="display">
  161. <!-- Records will be displayed here -->
  162. </div>
  163. </center>
  164. </body>
  165. </html>


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


Baza
  1. INSERT INTO `slist`
  2. (`id`, `site`, `menu`, `categ`, `links`) VALUES
  3. (1, 'MarPlo.net', 'Courses', 'Ajax', 'www.marplo.net/ajax/'),
  4. (4, 'MarPlo.net', 'Courses', 'JavaScript', 'www.marplo.net/javascript/'),
  5. (7, 'MarPlo.net', 'Courses', 'English', 'www.marplo.net/engleza/'),
  6. (10, 'MarPlo.net', 'Anime', 'Aspecte de viata', 'www.marplo.net/anime/aspecte_de_viata'),
  7. (13, 'MarPlo.net', 'Anime', 'Comedie', 'www.marplo.net/anime/comedie'),
  8. (16, 'MarPlo.net', 'Anime', 'Romantic', 'www.marplo.net/anime/romantic'),
  9. (19, 'CoursesWeb.net', 'Games', 'Adventure-Mystery', 'http://coursesweb.net/games/adventure'),
  10. (22, 'CoursesWeb.net', 'Games', 'Logic and Intuition', 'http://coursesweb.net/games/logic-perspicacity'),
  11. (25, 'CoursesWeb.net', 'PHP-MySQL', 'Lessons', 'http://coursesweb.net/php-mysql/'),
  12. (28, 'CoursesWeb.net', 'PHP-MySQL', 'Tutorials', 'http://coursesweb.net/php-mysql/tutorials_t'),
  13. (31, 'CoursesWeb.net', 'JavaScript', 'Lessons', 'http://coursesweb.net/javascript/'),
  14. (34, 'CoursesWeb.net', 'JavaScript', 'Tutorials', 'http://coursesweb.net/javascript/tutorials_t'),
  15. (37, 'CoursesWeb.net', 'JavaScript', 'jQuery', 'http://coursesweb.net/jquery/jquery-course'),
  16. (40, 'CoursesWeb.net', 'Flash-AS3', 'Flash Lessons', 'http://coursesweb.net/flash/lessons'),
  17. (43, 'CoursesWeb.net', 'Flash-AS3', 'ActionScript Lessons', 'http://coursesweb.net/actionscript/lessons-as3'),
  18. (46, 'CoursesWeb.net', 'Flash-AS3', 'Tutorials', 'http://coursesweb.net/flash/tutorials_t');


Plik get_site.php
  1. <?php
  2. $stmt=$DB_con->prepare("SELECT site FROM slist GROUP BY site");
  3. $stmt->execute();
  4. while($row=$stmt->fetch(PDO::FETCH_ASSOC))
  5. {
  6. ?>
  7. <option value="<?php echo $row['site']; ?>"><?php echo $row['site']; ?></option>
  8. <?php
  9. }
  10. ?>

Plik get_menu.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 menu FROM slist WHERE site=:id GROUP BY menu ORDER BY menu');
  8. $stmt->execute(array(':id' => $id));
  9. ?><option selected="selected">Dział :</option><?php
  10. while($row=$stmt->fetch(PDO::FETCH_ASSOC))
  11. {
  12. ?>
  13. <option value="<?php echo $row['menu']; ?>"><?php echo $row['menu']; ?></option>
  14. <?php
  15. }
  16. }
  17. ?>

Plik get_categ.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 categ FROM slist WHERE menu=:id GROUP BY categ ORDER BY categ');
  8. $stmt->execute(array(':id' => $id));
  9. ?><option selected="selected">Temat :</option><?php
  10. while($row=$stmt->fetch(PDO::FETCH_ASSOC))
  11. {
  12. ?>
  13. <option value="<?php echo $row['categ']; ?>"><?php echo $row['categ']; ?></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 = "tests";
  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. }


Obecnie, po wyborze 3 selekta, powoduje pobranie wyniku z pierwszego na liście wiersza, w którym parametr jest równy categ. Pytanie, jak do tego dodać warunek, żeby w zapytaniu został uwzględniony jeszcze parametr menu.
nospor
A niby czemu ma ci uwzgledniac cos wczesniej, skoro ty generujesz zapytania, ktore pobieraja tyko po aktualnej rzeczy?
Cytat
if($action=="showAll"){
$stmt=$DB_con->prepare('SELECT * FROM slist GROUP BY site');
$stmt->execute();
}
elseif($action=="site"){
$stmt=$DB_con->prepare('SELECT menu FROM slist WHERE site=:id GROUP BY menu ORDER BY menu');
$stmt->execute(array(':id'=>$id));
}
elseif($action=="menu"){
$stmt=$DB_con->prepare('SELECT categ FROM slist WHERE menu=:id GROUP BY categ ORDER BY categ');
$stmt->execute(array(':id'=>$id));
}
elseif($action=="categ"){
$stmt=$DB_con->prepare('SELECT links FROM slist WHERE categ=:id GROUP BY categ ORDER BY links');
$stmt->execute(array(':id'=>$id));
}
else{
$stmt=$DB_con->prepare('SELECT * FROM slist GROUP BY site');
$stmt->execute();
}


Poza tym tworzac jedna tabele na wszystko masz taka duplikacje danych ze glowa mala.
Przemo75
W jaki sposób poprawić zapytania, żeby przekazać wartość menu do zapytania ($action=="categ")?
Gdyby to się udało, to wówczas (prawidłowe) zapytanie wyglądało by tak:
  1. SELECT links FROM slist WHERE menu=:id AND categ=:cid ORDER BY links
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.