Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Dynamiczna rozwijana lista i kilka baz
Forum PHP.pl > Forum > Przedszkole
Napotykacz
Witam,

Mam baze w której mam dwie kolumny: "kolumna1" "baza"
W "kolumna1" jest tekst który wyświetla się w selectach
a w "baza" jest nazwa innej bazy z której ma pobierać dane.

Czyli wybieram tekst z "kolumna1" w select np. Jedzenie
i w $wybranakolumna jest wyświetlana nazwa przypisanej bazy z kolumny "baza" np. hamburger.
Co powiniena zawierać $wybranakolumna aby to działało questionmark.gif?


  1. <?php
  2. //**************************************
  3. // Page load dropdown results //
  4. //**************************************
  5. function getTierOne()
  6. {
  7. $result = mysql_query("SELECT DISTINCT kolumna1 FROM baza1")
  8.  
  9. while($tier = mysql_fetch_array( $result ))
  10.  
  11. {
  12. echo '<option value="'.$tier['kolumna1'].'">'.$tier['kolumna1'].'</option>';
  13. }
  14.  
  15. }
  16.  
  17. //**************************************
  18. // First selection results //
  19. //**************************************
  20. if($_GET['func'] == "drop_1" && isset($_GET['func'])) {
  21. drop_1($_GET['drop_var']);
  22. }
  23.  
  24. function drop_1($drop_var)
  25. {
  26. include_once('db.php');
  27. $result = mysql_query("SELECT DISTINCT typjedzenia FROM ". $wybranakolumna ."")
  28.  
  29. echo '<select name="drop_2" id="drop_2">
  30. <option value=" " disabled="disabled" selected="selected">Choose one</option>';
  31.  
  32. while($drop_2 = mysql_fetch_array( $result ))
  33. {
  34. echo '<option value="'.$drop_2['typjedzenia'].'">'.$drop_2['typjedzenia'].'</option>';
  35. }
  36.  
  37. echo '</select>';
  38. echo "<script type=\"text/javascript\">
  39. $('#wait_2').hide();
  40. $('#drop_2').change(function(){
  41. $('#wait_2').show();
  42. $('#result_2').hide();
  43. $.get(\"func.php\", {
  44. func: \"drop_2\",
  45. drop_var: $('#drop_2').val()
  46. }, function(response){
  47. $('#result_2').fadeOut();
  48. setTimeout(\"finishAjax_tier_three('result_2', '\"+escape(response)+\"')\", 400);
  49. });
  50. return false;
  51. });
  52. </script>";
  53. }
basstone
  1. $wybranakolumna = $tier['baza'];


Z tego co piszesz to tak smile.gif
Napotykacz
Dzięki ale nie o to chodziło. Co prawda już sobie z tym poradziłem ale mam inny problem.
Chcę w linijce 72 (tam gdzie teraz jest "PIERWSZYWYBOR") wstawić wartość z selecta pierwszego (linijka 14).
Wie ktoś jak to zrobić ?

  1. <?php
  2. //**************************************
  3. // WYBIERANIE PRODUCENTA //
  4. //**************************************
  5. function getTierOne()
  6. {
  7. $result = mysql_query("SELECT DISTINCT * FROM Producenci")
  8.  
  9. while($tier = mysql_fetch_array( $result ))
  10.  
  11. {
  12.  
  13. echo '<option value="'.$tier['nazwa'].'">'.$tier['nazwa'].'</option>';
  14.  
  15. }
  16.  
  17. }
  18. //**************************************
  19. // WYBIERANIE TOWARU //
  20. //**************************************
  21. if($_GET['func'] == "drop_1" && isset($_GET['func'])) {
  22. drop_1($_GET['drop_var']);
  23.  
  24. }
  25.  
  26. function drop_1($drop_var)
  27. {
  28.  
  29. include_once('db.php');
  30. $result = mysql_query("SELECT DISTINCT product FROM ".$drop_var."")
  31. or die(mysql_error());
  32. $baza = "Daiber";
  33.  
  34. echo '<select name="drop_2" id="drop_2">
  35. <option value=" " disabled="disabled" selected="selected">-- Wybierz produkt --</option>';
  36.  
  37. while($drop_2 = mysql_fetch_array( $result ))
  38. {
  39. echo '<option value="'.$drop_2['product'].'">'.$drop_2['product'].'</option>';
  40. }
  41.  
  42. echo '</select>';
  43. echo "<script type=\"text/javascript\">
  44. $('#wait_2').hide();
  45. $('#drop_2').change(function(){
  46. $('#wait_2').show();
  47. $('#result_2').hide();
  48. $.get(\"func.php\", {
  49. func: \"drop_2\",
  50. drop_var: $('#drop_2').val()
  51. }, function(response){
  52. $('#result_2').fadeOut();
  53. setTimeout(\"finishAjax_tier_three('result_2', '\"+escape(response)+\"')\", 400);
  54. });
  55. return false;
  56. });
  57. </script>";
  58. }
  59.  
  60.  
  61. //**************************************
  62. // WYBIERANIE KOLORU //
  63. //**************************************
  64. if($_GET['func'] == "drop_2" && isset($_GET['func'])) {
  65. drop_2($_GET['drop_var']);
  66. }
  67.  
  68. function drop_2($drop_var)
  69. {
  70. include_once('db.php');
  71. $result = mysql_query("SELECT DISTINCT color FROM PIERWSZYWYBOR WHERE product='$drop_var'")
  72.  
  73. echo '<select name="drop_3" id="drop_3">
  74. <option value=" " disabled="disabled" selected="selected">-- Wybierz kolor --</option>';
  75.  
  76. while($drop_3 = mysql_fetch_array( $result ))
  77. {
  78. echo '<option value="'.$drop_3['color'].'">'.$drop_3['color'].'</option>';
  79. }
  80.  
  81. echo '</select> ';
  82. echo '<input type="submit" name="submit" value="Submit" />';
  83. }
  84. ?>
spokoloko123
Nie zrobisz tego za pomocą PHP. Chyba, że przeładował byś stronę i po submit dla selecta action będziesz miał na ten sam plik z którego wysyłasz. I wtedy ustaw sobie pod koniec warunek, że jeśli istnieje już wartość w tym polu to przekierowanie na plik który tam sobie chcesz.
Napotykacz
A coś z zmienną globalną ?
spokoloko123
Problem polega na tym, że to serwer umieszcza coś w zmiennych na podstawie twoich derektyw, które mu wysyłasz. Ale bez przeładowania strony to one nie zostaną wgl wysłane. Tu się kłania JS.
Napotykacz
W takim razie jak to rozwiązać w JS ? To strona główna ...

  1. <?php
  2. include('db.php');
  3. include('func.php');
  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. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  7. <title>Chained Select Boxes using PHP, MySQL and jQuery</title>
  8. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
  9.  
  10. <script type="text/javascript">
  11. $(document).ready(function() {
  12. $('#wait_1').hide();
  13. $('#drop_1').change(function(){
  14. $('#wait_1').show();
  15. $('#result_1').hide();
  16. $.get("func.php", {
  17. func: "drop_1",
  18. drop_var: $('#drop_1').val()
  19. }, function(response){
  20. $('#result_1').fadeOut();
  21. setTimeout("finishAjax('result_1', '"+escape(response)+"')", 400);
  22. });
  23. return false;
  24. });
  25. });
  26.  
  27. function finishAjax(id, response) {
  28. $('#wait_1').hide();
  29. $('#'+id).html(unescape(response));
  30. $('#'+id).fadeIn();
  31. }
  32. function finishAjax_tier_three(id, response) {
  33. $('#wait_2').hide();
  34. $('#'+id).html(unescape(response));
  35. $('#'+id).fadeIn();
  36. }
  37. </head>
  38.  
  39. <p>
  40. <form action="" method="post">
  41.  
  42. <select name="drop_1" id="drop_1">
  43.  
  44. <option value="" selected="selected" disabled="disabled">-- Wybierz producenta --</option>
  45.  
  46. <?php getTierOne(); ?>
  47.  
  48. </select>
  49.  
  50. <span id="wait_1" style="display: none;">
  51. <img alt="Please Wait" src="ajax-loader.gif"/>
  52. </span>
  53. <span id="result_1" style="display: none;"></span>
  54. <span id="wait_2" style="display: none;">
  55. <img alt="Please Wait" src="ajax-loader.gif"/>
  56. </span>
  57. <span id="result_2" style="display: none;"></span>
  58.  
  59. </form>
  60. </p>
  61. <p>
  62. <?php if(isset($_POST['submit'])){
  63. $drop = $_POST['drop_1'];
  64. $drop_2 = $_POST['drop_2'];
  65. $drop_3 = $_POST['drop_3'];
  66. echo "You selected a ";
  67. echo $drop_3." ".$drop." ".$drop_2;
  68. }
  69. ?>
  70. </body>
  71. </html>
spokoloko123
Lipa bo listę generuje ci funkcja, a jej tu nie wstawiłeś. Pewnie jest w func.php.
Napotykacz



PLIK FUNC.PHP

  1. <?php
  2.  
  3.  
  4. //**************************************
  5. // WYBIERANIE PRODUCENTA //
  6. //**************************************
  7. function getTierOne()
  8. {
  9.  
  10.  
  11.  
  12. $result = mysql_query("SELECT DISTINCT * FROM Producenci")
  13.  
  14. while( $tier = mysql_fetch_array( $result ))
  15.  
  16. {
  17.  
  18. echo '<option value="'.$tier['nazwa'].'">'.$tier['nazwa'].'</option>';
  19.  
  20. }
  21.  
  22. }
  23.  
  24. //**************************************
  25. // WYBIERANIE TOWARU //
  26. //**************************************
  27. if($_GET['func'] == "drop_1" && isset($_GET['func'])) {
  28. drop_1($_GET['drop_var']);
  29.  
  30. }
  31.  
  32. function drop_1($drop_var)
  33. {
  34.  
  35. include_once('db.php');
  36. $result = mysql_query("SELECT DISTINCT product FROM ".$drop_var."")
  37. or die(mysql_error());
  38.  
  39.  
  40. echo '<select name="drop_2" id="drop_2">
  41. <option value=" " disabled="disabled" selected="selected">-- Wybierz produkt --</option>';
  42.  
  43. while($drop_2 = mysql_fetch_array( $result ))
  44. {
  45. echo '<option value="'.$drop_2['product'].'">'.$drop_2['product'].'</option>';
  46. }
  47.  
  48. echo '</select>';
  49. echo "<script type=\"text/javascript\">
  50. $('#wait_2').hide();
  51. $('#drop_2').change(function(){
  52. $('#wait_2').show();
  53. $('#result_2').hide();
  54. $.get(\"func.php\", {
  55. func: \"drop_2\",
  56. drop_var: $('#drop_2').val()
  57. }, function(response){
  58. $('#result_2').fadeOut();
  59. setTimeout(\"finishAjax_tier_three('result_2', '\"+escape(response)+\"')\", 400);
  60. });
  61. return false;
  62. });
  63. </script>";
  64. }
  65.  
  66.  
  67. //**************************************
  68. // WYBIERANIE KOLORU //
  69. //**************************************
  70.  
  71. if($_GET['func'] == "drop_2" && isset($_GET['func'])) {
  72. drop_2($_GET['drop_var']);
  73. }
  74.  
  75. function drop_2($drop_var)
  76. {
  77. include_once('db.php');
  78. $jeden = $_GET['drop_var'];
  79. $result = mysql_query("SELECT DISTINCT color FROM `$drop_var` WHERE product='$drop_var'")
  80.  
  81. echo '<select name="drop_3" id="drop_3">
  82. <option value=" " disabled="disabled" selected="selected">-- Wybierz kolor --</option>';
  83.  
  84. while($drop_3 = mysql_fetch_array( $result ))
  85. {
  86. echo '<option value="'.$drop_3['color'].'">'.$drop_3['color'].'</option>';
  87. }
  88.  
  89. echo '</select> ';
  90. echo '<input type="submit" name="submit" value="Submit" />';
  91. }
  92. ?>



PLIK INDEX.PHP

  1. <?php
  2. include('db.php');
  3. include('func.php');
  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>Chained Select Boxes using PHP, MySQL and jQuery</title>
  9. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
  10.  
  11. <script type="text/javascript">
  12. $(document).ready(function() {
  13. $('#wait_1').hide();
  14. $('#drop_1').change(function(){
  15. $('#wait_1').show();
  16. $('#result_1').hide();
  17. $.get("func.php", {
  18. func: "drop_1",
  19. drop_var: $('#drop_1').val()
  20. }, function(response){
  21. $('#result_1').fadeOut();
  22. setTimeout("finishAjax('result_1', '"+escape(response)+"')", 400);
  23. });
  24. return false;
  25. });
  26. });
  27.  
  28. function finishAjax(id, response) {
  29. $('#wait_1').hide();
  30. $('#'+id).html(unescape(response));
  31. $('#'+id).fadeIn();
  32. }
  33. function finishAjax_tier_three(id, response) {
  34. $('#wait_2').hide();
  35. $('#'+id).html(unescape(response));
  36. $('#'+id).fadeIn();
  37. }
  38. </script>
  39. </head>
  40.  
  41. <body>
  42. <p>
  43.  
  44.  
  45. <form action="" method="post">
  46.  
  47. <select name="drop_1" id="drop_1">
  48.  
  49. <option value="" selected="selected" disabled="disabled">-- Wybierz markę --</option>
  50. <option>Sol's</option>
  51. <option>MyrtleBeach</option>
  52. <option>James & Nicholson</option>
  53. <option>Cos</option>
  54.  
  55.  
  56.  
  57. </select>
  58.  
  59.  
  60. </form>
  61.  
  62.  
  63. <form action="" method="post">
  64.  
  65. <select name="drop_1" id="drop_1">
  66.  
  67. <option value="" selected="selected" disabled="disabled">-- Wybierz towar --</option>
  68.  
  69. <?php getTierOne(); ?>
  70.  
  71. </select>
  72.  
  73. <span id="wait_1" style="display: none;">
  74. <img alt="Please Wait" src="ajax-loader.gif"/>
  75. </span>
  76. <span id="result_1" style="display: none;"></span>
  77. <span id="wait_2" style="display: none;">
  78. <img alt="Please Wait" src="ajax-loader.gif"/>
  79. </span>
  80. <span id="result_2" style="display: none;"></span>
  81.  
  82. </form>
  83. </p>
  84. <p>
  85. <?php if(isset($_POST['submit'])){
  86. $drop = $_POST['drop_1'];
  87. $drop_2 = $_POST['drop_2'];
  88. $drop_3 = $_POST['drop_3'];
  89. echo "You selected a ";
  90. echo $drop_3." ".$drop." ".$drop_2;
  91. }
  92. ?>
  93. </body>
  94. </html>
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-2025 Invision Power Services, Inc.