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
<?php
include('config.php');
include('function.php');
?>
<script src="js/jquery-1.4.2.js" type="text/javascript"></script>
<script src="js/select-chain.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
<!--
$(function () {
var cat = $('#wojewodztwo');
var el = $('#powiat');
el.selectChain({
target: attr,
url: 'function.php',
data: { ajax: true, anotherval: "anotherAction" }
});
// note that we're assigning in reverse order
// to allow the chaining change trigger to work
cat.selectChain({
target: el,
url: 'function.php',
data: { ajax: true }
}).trigger('change');
});
//-->
</script>
<form action="firma.php?s=wyszukiwarka" method="post" id="autokarform">
<div class="form">
<label for="wojewodztwo">Wojewódźtwo</label>
<select class="text" name="wojewodztwo" id="wojewodztwo" size="1">
<option value="">---WYBIERZ---</option>
<?php
$query = "SELECT * FROM autokar_wojewodztwo";
echo '<option value='.$row['id_wojewodztwo'].'>'.$row['wojewodztwo_nazwa'].' </option>'; }
?>
</select>
<label for="powiat">Powiat</label>
<select class="text" id="powiat" name="powiat" size="1"></select>
<input class="button" name="submit" type="submit" value="Szukaj" />
</div>
function.php
if (@$_REQUEST['ajax']) {
if ($con == false)
if ($base) {
$json[] = '{"id_powiat" : "' . $row->id_powiat . '", "powiat" : "' . $row->powiat . ' "}';
}
die(); // filthy exit, but does fine for our example. } else {
}
}
select-chain.js
(function ($) {
$.fn.selectChain = function (options) {
var defaults = {
key: "id_powiat",
value: "powiat"
};
var settings = $.extend({}, defaults, options);
if (!(settings.target instanceof $)) settings.target = $(settings.target);
return this.each(function () {
var $$ = $(this);
$$.change(function () {
var data = null;
if (typeof settings.data == 'string') {
data = settings.data + '&' + this.name + '=' + $$.val();
} else if (typeof settings.data == 'object') {
data = settings.data;
data[this.name] = $$.val();
}
settings.target.empty();
$.ajax({
url: settings.url,
data: data,
type: (settings.type || 'get'),
dataType: 'json',
success: function (j) {
var options = [], i = 0, o = null;
for (i = 0; i < j.length; i++) {
// required to get around IE bug (http://support.microsoft.com/?scid=kb%3Ben-us%3B276228)
o = document.createElement("OPTION");
o.value = typeof j[i] == 'object' ? j[i][settings.key] : j[i];
o.text = typeof j[i] == 'object' ? j[i][settings.value] : j[i];
settings.target.get(0).options[i] = o;
}
// hand control back to browser for a moment
setTimeout(function () {
settings.target
.find('option:first')
.attr('selected', 'selected')
.parent('select')
.trigger('change');
}, 0);
},
error: function (xhr, desc, er) {
// add whatever debug you want here.
alert("an error occurred");
}
});
});
});
};
})(jQuery);
Wymyśliłem sam po 24h przerwie:
W pliku function.php w linii nr 10 powinno być:
$json[] = '{"id_powiat" : "0", "powiat" : "--BEZ ZNACZENIA--"}';
i koniec, do zamknięcia, przepraszam za zaśmiecanie