Witam!
mam problem z php, na wstępie zaznaczę że jestem naprawdę słaby w tym języku, jak i w javascripcie.
Znalazłem fajny skrypt formularza w jqery, który w pola <option> drugiego selecta wpisuje wartości zależne od wybranej opcji pierwszego selecta.
Jednak ja potrzebuję 3 warunków, więc przerobiłem (na tyle na ile potrafię (IMG:
style_emoticons/default/wink.gif) ) skrypt tak by wyświetlał pozycje w <option> trzeciego selecta w zależności od wartości <option> w drugim select'cie. I nawet to działało, dopóki nie potrzebowałem przerobić delikatnie skryptu tak, aby wartości trzeciego selecta wyświetlał w zależności od wybranej opcji pierwszego selecta && drugiego selecta.
Problem jest dla mnie bardzo dziwny i nie potrafię sobie wytłumaczyć jak to się dzieje. Jeśli na próbę (w pliku json2.php, odpowiadającym za wyświetlanie opcji w trzecim select'cie) do istniejącego warunku (sprawdzający wartość drugiego selecta) dodam sprawdzanie jeszcze jednego warunku (w
JEDNEJ lub
KILKU z pozycji) - skrypt działa.
Problem pojawia się, kiedy próbuję dodać do wszystkich instrukcji drugi warunek - wyświetlanie opcji trzeciego selecta całkowicie przestaje działać, nawet z opcją którą dałem na próbę i de facto przed 2 minutami działała.
Proszę o pomoc lub wskazówkę, gdzie tkwi problem. Już kilka dni siedzę nad kodem i nie jestem w stanie nic więcej wymyśleć.
Formularz z jednym warunkiem:
http://www.uire.ayz.pl/formularz/test.phpFormularz z dwoma warunkami:
http://www.uire.ayz.pl/formularz2/test.phpI formularz z jednym warunkiem podwójnym (na próbę, 1_1 && pozycja1):
http://www.uire.ayz.pl/formularz3/test.phpPaczka do pobrania:
http://www.uire.ayz.pl/formularz2.zipOraz kod plików test.php, json.php, json2.php:
json.php (fragment)
<?php
if ($_POST['type'] == '1_1')
{
'value' => 'pozycja1',
'text' => 'pozycja1'
);
'value' => 'pozycja2',
'text' => 'pozycja2'
);
'value' => 'pozycja3',
'text' => 'pozycja3'
);
'value' => 'pozycja4',
'text' => 'pozycja4'
);
'value' => 'pozycja5',
'text' => 'pozycja5'
);
}
elseif ($_POST['type'] == '1_2')
{
'value' => 'pozycja4',
'text' => 'pozycja4'
);
}
elseif ($_POST['type'] == '1_3')
{
'value' => 'pozycja4',
'text' => 'pozycja4'
);
}
?>
json2.php (fragent)
<?php
//1_1
if ($_POST['type'] == '1_1' && $_POST['types'] == 'pozycja1')
{
'value' => 'wartosc1',
'text' => 'wartosc1'
);
}
echo json_encode
($json2); ?>
test.php (fragment)
<script type="text/javascript"> $(document).ready(function(){
$("select#jeden").change(function(){
// Post string
var post_string = "type=" + $(this).val();
// Send the request and update sub category dropdown
$.ajax({
type: "POST",
data: post_string,
dataType: "json",
cache: false,
url: 'json.php',
timeout: 2000,
error: function() {
alert("Failed to submit");
},
success: function(data) {
// Clear all options from sub category select
$("select#dwa option").remove();
// Fill sub category select
$('#dwa').append('
<option value="" selected="selected">--- wybierz ---
</option>');
$.each(data, function(i, j){
var row = "
<option value=\"" + j.value + "\">" + j.text + "
</option>";
$(row).appendTo("select#dwa");
});
}
});
});
$("select#dwa").change(function(){
// Post string
var post_strings = "types=" + $(this).val();
// Send the request and update sub category dropdown
$.ajax({
type: "POST",
data: post_strings,
dataType: "json",
cache: false,
url: 'json2.php',
timeout: 2000,
error: function() {
alert("Failed to submit");
},
success: function(data) {
// Clear all options from sub category select
$("select#trzy option").remove();
// Fill sub category select
$('#trzy').append('
<option value="" selected="selected">--- wybierz ---
</option>');
$.each(data, function(i, j){
var row = "
<option value=\"" + j.value + "\">" + j.text + "
</option>";
$(row).appendTo("select#trzy");
});
}
});
});
});
<h3>Wybierz 1 warość:
</h3> <form method="post" action="szukaj.php"> <select name="jeden" id="jeden">
<h3>Wybierz drugą wartość: (zależnie od wartości jeden)
</h3>
<h3>Wybierz trzecią wartość: (zależnie od wartości jeden
&& dwa)</h3> <select name="trzy" id="trzy">
<option value="">--- wybierz ---</option>
</select><br />
<input type="submit" name="submit" value="wyślij" />
</form>
Ten post edytował uire 29.11.2012, 12:41:04