Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [js?] pole wyboru dostepne po wybraniu pierwszego
Forum PHP.pl > Forum > Przedszkole
lnn
witam!
mam problem, chce zrobic form select ze po wybraniu 1 opcji dopiero pojawiaja mi sie 2 opcja do wyboru w 2 polu, odpowiednio inne wartosci do wyboru dla kazdej opcji.. i tak np.

opcja AAAA
subopcja A1
subopcja A2
subopcja A3
opcja BBBB
subopcja B1
subopcja B2
subopcja B3
itd.

przeszukalem całe forum i nic nie moglem znalezc, wogole sie zastanawiam czy to JS czy moze AJAX ? Prosze o wyrozumialosc winksmiley.jpg

  1. 1 opcja do wyboru:
  2. <select size="1" name="1opcja">
  3. <option>AAAA</option>
  4. <option>BBBB</option>
  5. <option>CCCC</option>
  6. <option>DDDD</option>
  7.  
  8. 2 opcja: <select size="1" name="2opcja"> // pole pojawia sie dopiero po wybraniu 1 pola
  9. <option>subopcja 1 AAAA</option>
  10. <option>subopcja 2 AAAA</option>
Hectic
Ja to robię tak... (jquery)

Kod
<select id="category" name="category" onchange="loadItems(this.value);">
<option value="0" selected="selected">wszystkie kategorie</option>
<option value="1">Kat 1</option>
<option value="2">Kat 2</option>
</select>


Kod
<div id="subcat">
<select name="subcategory">
<option value="0">wszystkie typy sprzętu</option>
</select>
</div>


js
Kod
function loadItems(value) {
    $.get("ajax.php?subcategory", { category: value }, // pobranie za pomocą ajax danych z pliku ajax.php
    function(data){
        $('#subcat').html(data); // wczytanie ich do div o id="subcat"
    });
}


ajax.php
  1. <?php
  2. if(isset($_GET['subcategory'])) {
  3.    $id = mysql_escape_string((int)$_GET['category']);
  4.  
  5.    $mysql = MyRegistry::Registry('MySql');
  6.    $items = $mysql->selectGroup(dbTableItems, "id, name", "category='$id'", "ORDER by name"); // pobranie sub kategorii z bazy danych
  7.  
  8.    $template = MyRegistry::Registry('Template');
  9.    $template->assign('items', $items);
  10.    $template->display('subcategory.tpl'); // wczytanie pliku tpl        
  11. }
  12. ?>


subcategory.tpl
Kod
<select name="type">
<option value="0" selected="selected">wszystkie typy sprzętu</option>
{foreach from=$items item=items}
<option value="{$items.id}">{$items.name}</option>
{/foreach}
</select>


Można to zrobić nie używając smarty chodziło mi o analogię działania.

Jeszcze taki myk na firefox'a który po odświeżeniu zapamiętuje wybrane opcje (żeby nie było takiej sytuacji, że jest zaznaczona kategoria, a nie ma sub kategorii).

js
Kod
$(document).ready(function(){
    var category =  $("select#category").val();
    if(category > 0) {
        loadItems(category);
    }
});
lnn
dzieki za wskazowki, a jeszcze mam pytanie, czy ja musze utworzyc jakas baze danych?? bo widze ze tam cos pobiera z danych, zatem czy musze dac polaczenie do bazy i dopiero potem cos z niej wyciagac? winksmiley.jpg aha i jeszcze jak przypisac dana kategorie z 2 pola do wybranej z 1wszego??

chodzi o to ze chcialbym po wybraniu wydziału zeby pokazywalo jakie sa katedry winksmiley.jpg i tak do kazdego wydzialu smile.gif

cisza..
Hectic
Na bazie danych było by najłatwiej smile.gif

Struktura tabeli:

category
id
name

subcategory
id
category // tutaj id z tabeli category danej kategorii
name

Później dajesz zapytanie do bazy danych
Kod
SELECT name FROM subcategory WHERE category='$zmienna_z_id_kategorii'


Mam nadzieję, że zrozumiesz o co mi chodzi smile.gif Bez podstaw php + mysql będzie Ci ciężko to zrobić, ale też jest to dobry moment żeby się nauczyć smile.gif
lnn
dzieki winksmiley.jpg poproboje to zrobic smile.gif przeciez nie ma rzeczy niemozliwych smile.gif (kliknalem ze pomogles:) )
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.