Skocz do zawartości

formularze + php + js


paluchgda

Rekomendowane odpowiedzi

Witam, mam sobie formularz wyszukiwarki który działa w połączeniu z js i php. Po wybraniu typu nieruchomosci pojawia się dodatkowe pole np. typy domów + jeszcze pamiętanie tego wszystkiego w sesjach. Ale są dwa ale:

1. Czy da się zmusić formularz, aby po wybraniu np. domów i pokazaniu się pola z podtypami tych domów po submicie formularza zostawało to pole do podtypów domów? W tej chwili znika i trzeba na nowo wybierać typ nieruchomości aby to pole się pokazało. Parametr typów domów trzymany w sesji.

2. Czy da się jakoś w polu select multiple zapamiętać uprzednio wybrane wartości i pokazać je w tym polu - też trzymane w sesji.

mam nadzieję ze jasno się wyrażam :)

poniżej kody:

<script>

 $(document).ready(function (){
	 $("#typnieruchomosci").change(function() {
 if ($(this).val() == "Dom") {
			 $("#typydomow").show();
			 $("#pokoje").show();
		 }else{
			 $("#typydomow").hide();
		 }
if ($(this).val() == "Dzialka") {
			 $("#typydzialek").show();
 $("#pokoje").hide();
		 }else{
			 $("#typydzialek").hide();
		 }
if ($(this).val() == "Komercja") {
			 $("#typykomercji").show();
			 $("#pokoje").show();
		 }else{
			 $("#typykomercji").hide();
		 }
	 });
 });

var label_od = 'od'; // Od
var label_do = 'do'; // Do

 function wyczysc_pola() {
 document.getElementById("pow_od").value = label_od;
	 document.getElementById("pow_do").value = label_do;
	 document.getElementById("pok_od").value = label_od;
	 document.getElementById("pok_do").value = label_do;
 }

wyczysc_pola();

</script>

a to kawałek formularza

<div>
<label class="left width180">Typ</label>
<select id="typnieruchomosci" name="form_typ_nier" class="selectDuze left" onchange="wyczysc_pola();">

<?
$selectValues = array(
'Mieszkanie'=>'Mieszkanie',
'Dom'=>'Dom',
'Dzialka'=>'Działka',
'Komercja'=>'Komercyjne'
);

foreach($selectValues as $key => $value){
echo '<option value="'.$key.'"'.($_SESSION['typ_nier']==$key ? ' selected="selected"' : '').'>'.$value.'</option>'."";}
?>

</select>


<div class="clearboth8"></div>
</div>

<div id="typydomow" style="display:none;" onchange="wyczysc_pola()">
<label class="left width180">Podtyp<br> </label>
 <select multiple="multiple" name="form_typ_nier2" class="selectDuzeMultiple right">
	 <option value="Dom">wszystkie</option>
<option value="Dom wolno stojący">wolno stojący</option>
<option value="Dom rekreacyjny">rekreacyjny</option>
<option value="Dom letniskowy">letniskowy</option>
<option value="Dom bliźniak">bliźniak</option>
<option value="Dom szeregowy">szeregowy</option>
<option value="Kamienica">kamienica</option>
<option value="Piętro domu">piętro domu</option>
 </select>

<div class="clearboth8"></div>
</div>


Odnośnik do komentarza
Udostępnij na innych stronach

Dane o polach wyboru możesz przechowywać w zmiennych SESJI po uprzednim wysłaniu formularza POST lub nawet w cookie wystawionym przez Javascript.

Tylko nie pytaj "jak to zrobić" proszę o gotowe kody , bo to przekracza zakres pomocy :]

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

tak sobie patrzę na ten skrypt i próbuję wykorzystać to co już jest, ale nie działa to z multiwyborem. Zmienna

typ_nier2 jest tablicą i chyba w tym jest problem.

<div id="typydomow" style="display:block;" onchange="wyczysc_pola()">
<label class="left width180">Podtyp<br> </label>
 <select multiple="multiple" name="form_typ_nier2[]" class="selectDuzeMultiple right">

<?
$selectValues = array(
'Dom'=>'wszystkie',
'Dom wolno stojący'=>'wolno stojący',
'Dom rekreacyjny'=>'rekreacyjny',
'Dom letniskowy'=>'letniskowy',
'Dom bliźniak'=>'bliźniak',
'Dom szeregowy'=>'szeregowy',
'Kamienica'=>'kamienica',
'Piętro domu'=>'piętro domu'
);

foreach($selectValues as $key => $value){
echo '<option value="'.$key.'"'.($_SESSION['typ_nier2']==$key ? ' selected="selected"' : '').'>'.$value.'</option>'."";}
?>


<? echo print_r($_SESSION['typ_nier2']); ?>


 </select>

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli masz z "multiwyborem" musisz dane formularza przekazać jako tablica znaków np:

<select multiple="multiple" name="form_typ_nier2" class="selectDuzeMultiple right">
<option name="nazwa[]" value="wartosc1">Nazwa pola 1</option>
<option name="nazwa[]" value="wartosc2">Nazwa pola 2</option>
<option name="nazwa[]" value="wartosc3">Nazwa pola 3</option>
</select>

dane będziesz maial w tablicy array() nazwa

PS skróć ten twój kod / post bo forum jest wydłużone przez co nieczytelne

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Zrobiłem to tak i działa

foreach($selectValues as $key => $value){

               $tablica_domow = $_SESSION['typ_nier2'];
               echo "<option value='".$key."'";
                   if (in_array($key,$tablica_domow)) { echo "selected"; }
               echo ">".$value."</option>";

           }

ale zmusić do pamiętania np. podtypów domów to już nie mam koncepcji. Mion, podałeś mi sposób ale przeprowadzone próby nie dają rezultatu. Najlepiej byłoby trzymac to w sesji. Próbowałem tutaj coś powojować

if ($(this).val() == "Dom") {
                                $("#typydomow").show();
                                $("#pokoje").show();
                        }else{
                                $("#typydomow").hide();
                        }

Odnośnik do komentarza
Udostępnij na innych stronach

Możesz wywołać zaznaczenia z poziomu kodu javascript..

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

coś podpowiedzieć to będę wdzięczny.

Ale jak brzmi pytanie ?

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności