Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [AJAX/PHP/MySQL] Wynik z kilku list rozwijanych (dropdown)
Przemo75
post 15.11.2017, 15:07:49
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
nospor
post 15.11.2017, 15:22:23
Post #2





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




i?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Przemo75
post 15.11.2017, 20:53:39
Post #3





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

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


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.

Ten post edytował Przemo75 16.11.2017, 12:26:00
Go to the top of the page
+Quote Post
nospor
post 16.11.2017, 14:33:27
Post #4





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




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.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Przemo75
post 18.11.2017, 21:45:44
Post #5





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

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


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
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 16:39