Witam,
Poniższy skrypt działa prawidło w następujący sposób: po wybraniu województwa w kolejnym selekcie pojawią się powiaty pobrane z bazy danych. Wszystko pięknie. Ale chciałbym dodań funkcjonalność w postaci: po wybraniu województwa pojawiają się powiaty oraz opcja --BEZ ZNACZENIA-- czyli de fakto pobieranie danych z mysqla z warunkiem województwa (bez powiatów). Dodanie <option value="0">BEZ ZNACZENIA</option> do index.php nie działa. Aha po wybraniu województwa od razu w powiecie wyskakuje pierwszy rekord z bazy jako option (jako wybrany).
Działam na lekko zmodyfikowanym skrypcie select-chain, w select-chain.js mogą być pozostałości starego kodu. Dziękuję za pomoc

index.php
  1. <?php
  2. include('config.php');
  3. include('function.php');
  4. ?>
  5. <script src="js/jquery-1.4.2.js" type="text/javascript"></script>
  6. <script src="js/select-chain.js" type="text/javascript" charset="utf-8"></script>
  7. <script type="text/javascript">
  8. <!--
  9. $(function () {
  10. var cat = $('#wojewodztwo');
  11. var el = $('#powiat');
  12.  
  13. el.selectChain({
  14. target: attr,
  15. url: 'function.php',
  16. data: { ajax: true, anotherval: "anotherAction" }
  17. });
  18.  
  19. // note that we're assigning in reverse order
  20. // to allow the chaining change trigger to work
  21. cat.selectChain({
  22. target: el,
  23. url: 'function.php',
  24. data: { ajax: true }
  25. }).trigger('change');
  26.  
  27. });
  28. //-->
  29. </script>
  30.  
  31. <form action="firma.php?s=wyszukiwarka" method="post" id="autokarform">
  32. <div class="form">
  33. <label for="wojewodztwo">Wojewódźtwo</label>
  34. <select class="text" name="wojewodztwo" id="wojewodztwo" size="1">
  35. <option value="">---WYBIERZ---</option>
  36. <?php
  37. $query = "SELECT * FROM autokar_wojewodztwo";
  38. $result = mysql_query($query);
  39. while($row = mysql_fetch_array($result)) {
  40. echo '<option value='.$row['id_wojewodztwo'].'>'.$row['wojewodztwo_nazwa'].' </option>';
  41. }
  42. ?>
  43. </select>
  44.  
  45. <label for="powiat">Powiat</label>
  46. <select class="text" id="powiat" name="powiat" size="1"></select>
  47.  
  48. <input class="button" name="submit" type="submit" value="Szukaj" />
  49. </div>


function.php
  1. if (@$_REQUEST['ajax']) {
  2.  
  3. if ($con == false)
  4. trigger_error('Connect failed - ' . mysql_error(), E_USER_ERROR);
  5.  
  6. if ($base) {
  7. $results = mysql_query('select * from autokar_powiat where id_wojewodztwo="' . strtolower(mysql_real_escape_string(strip_tags($_REQUEST['wojewodztwo']))) . '"');
  8.  
  9. $json = array();
  10.  
  11. while (is_resource($results) && $row = mysql_fetch_object($results)) {
  12. $json[] = '{"id_powiat" : "' . $row->id_powiat . '", "powiat" : "' . $row->powiat . ' "}';
  13. }
  14.  
  15. echo '[' . implode(',', $json) . ']';
  16. die(); // filthy exit, but does fine for our example.
  17. } else {
  18. user_error("Failed to select the database");
  19. }
  20. }


select-chain.js
  1. (function ($) {
  2. $.fn.selectChain = function (options) {
  3. var defaults = {
  4. key: "id_powiat",
  5. value: "powiat"
  6. };
  7.  
  8. var settings = $.extend({}, defaults, options);
  9.  
  10. if (!(settings.target instanceof $)) settings.target = $(settings.target);
  11.  
  12. return this.each(function () {
  13. var $$ = $(this);
  14.  
  15. $$.change(function () {
  16. var data = null;
  17. if (typeof settings.data == 'string') {
  18. data = settings.data + '&' + this.name + '=' + $$.val();
  19. } else if (typeof settings.data == 'object') {
  20. data = settings.data;
  21. data[this.name] = $$.val();
  22. }
  23.  
  24. settings.target.empty();
  25.  
  26. $.ajax({
  27. url: settings.url,
  28. data: data,
  29. type: (settings.type || 'get'),
  30. dataType: 'json',
  31. success: function (j) {
  32. var options = [], i = 0, o = null;
  33.  
  34. for (i = 0; i < j.length; i++) {
  35. // required to get around IE bug (http://support.microsoft.com/?scid=kb%3Ben-us%3B276228)
  36. o = document.createElement("OPTION");
  37. o.value = typeof j[i] == 'object' ? j[i][settings.key] : j[i];
  38. o.text = typeof j[i] == 'object' ? j[i][settings.value] : j[i];
  39. settings.target.get(0).options[i] = o;
  40. }
  41.  
  42. // hand control back to browser for a moment
  43. setTimeout(function () {
  44. settings.target
  45. .find('option:first')
  46. .attr('selected', 'selected')
  47. .parent('select')
  48. .trigger('change');
  49. }, 0);
  50. },
  51. error: function (xhr, desc, er) {
  52. // add whatever debug you want here.
  53. alert("an error occurred");
  54. }
  55. });
  56. });
  57. });
  58. };
  59. })(jQuery);
  60.  


Wymyśliłem sam po 24h przerwie:

W pliku function.php w linii nr 10 powinno być:

  1. $json[] = '{"id_powiat" : "0", "powiat" : "--BEZ ZNACZENIA--"}';


i koniec, do zamknięcia, przepraszam za zaśmiecanie