Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Select
roman_g
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 24.08.2005

Ostrzeżenie: (0%)
-----


Witam!

potrzebuje zrobic cos podobnego jak na tej stronie: http://ustaw.orange.pl
Na jednej stronie musze miec dwie listy wyboru (SELECT) z tymi samymi wartościami, z tym, że jak w pierwszej liście wybiorę wartość "a" to chciałbym żeby automatycznie w drugiej liście ona "znikła" i nie była możliwa do wyboru.
Np
Załóży, że SELECT1 wygląda tak:
a
b
c
d
SELECT2 tak:
a
b
c
d

Wybieram z SELECT1 opcje "a" i w SELECT2 mam juz dostępne tylko opcje:
b
c
d


Jak to zrobic??

pomocy....(IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
artur81
post
Post #2





Grupa: Zarejestrowani
Postów: 252
Pomógł: 2
Dołączył: 4.12.2004
Skąd: Skierniewice

Ostrzeżenie: (10%)
X----


Ok dla testów napisałem ci taki kod korzystający z bazy danych, ajaxa i php. Może ci się przyda a jak nie to chociaż popatrz jak działa, może wyciagniesz jakieś wnioski:
Pliki:
index.php - Główny plik
blokuj.php - Plik odpowiedzialny za generowanie drugiej listy, to z nim się łączymy za pomocą ajaxa
polacz_z_baza.php - Parametry do połączenia z bazą.

index.php
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  5. <title>Formularze</title>
  6. <script type="text/javascript" src="advajax.js"></script>
  7. <script type="text/javascript">
  8. function blokuj(id)
  9. {
  10. var adres = "blokuj.php?id="+id;
  11. advAJAX.get({
  12. url: adres,
  13. onLoading:function(obj) {document.getElementById("lista2").innerHTML='<img src="loading.gif" />'; },
  14. onSuccess:function(obj) { document.getElementById("lista2").innerHTML=obj.responseText; },
  15. onError:function(obj) {alert(obj.responseText); }
  16. });
  17. }
  18.  
  19. </script>
  20. </head>
  21.  
  22. <body>
  23. <form action="" method="">
  24. <div id="lista1">
  25. <select name ="lista1" onchange="blokuj(this.value);">
  26. <?php 
  27. require_once('polacz_z_baza.php');
  28. $wynik = mysql_query("Select * from miasta;");
  29. while ($r = mysql_fetch_assoc($wynik)) {
  30. $id=$r['id'];
  31. $nazwa=$r['nazwa'];
  32. echo '<option value='.$id.'>'.$nazwa.'</option>';
  33. }
  34. ?>
  35. </select></div>
  36. <div id="lista2">
  37. <select name ="lista2">
  38. <?php 
  39. require_once('polacz_z_baza.php');
  40. $wynik = mysql_query("Select * from miasta;");
  41. while ($r = mysql_fetch_assoc($wynik)) {
  42. $id=$r['id'];
  43. $nazwa=$r['nazwa'];
  44. echo '<option value='.$id.'>'.$nazwa.'</option>';
  45. }
  46. ?>
  47. </select>
  48. </div>
  49. </form>
  50. </body>
  51. </html>


blokuj.php
  1. <?php 
  2. header('Content-Type: text/html; charset=ISO-8859-2');
  3. $id=(int)$_GET['id'];
  4. require_once('polacz_z_baza.php');
  5. $wynik = mysql_query("Select * from miasta where id not in ($id);");
  6. echo '<select name="lista2">';
  7. while ($r = mysql_fetch_assoc($wynik)) {
  8. $id=$r['id'];
  9. $nazwa=$r['nazwa'];
  10.  
  11. echo '<option value='.$id.'>'.$nazwa.'</option>';
  12. }
  13. echo '</select>';
  14. ?>


polacz_z_baza.php
  1. <?php
  2. //Umieszczam w stałych informacje potrzebne do połączenia z bazą
  3. // te dane będziesz musiał sobie pozmieniać tak abu odpowiadały Twoim
  4. DEFINE ('DB_USER','root');
  5. DEFINE ('DB_PASSWORD','');
  6. DEFINE ('DB_HOST','localhost');
  7. DEFINE ('DB_NAME','selecty');
  8.  
  9. mysql_connect (DB_HOST, DB_USER, DB_PASSWORD) OR
  10. die ("Nie można nawiązać połączenia z serwerem bazy danych MySQL");
  11. mysql_select_db (DB_NAME) OR
  12. die ("Nie można otworzyć bazy selecty");
  13. ?>


i baza danych, a właściwie tabela przechowująca nazwy miast
miasta.sql
  1. # Baza danych : `selecty`
  2. #
  3.  
  4. # --------------------------------------------------------
  5.  
  6. #
  7. # Struktura tabeli dla `miasta`
  8. #
  9.  
  10. CREATE TABLE `miasta` (
  11. `id` tinyint(4) NOT NULL AUTO_INCREMENT,
  12. `nazwa` tinytext NOT NULL,
  13. PRIMARY KEY (`id`)
  14. ) TYPE=MyISAM AUTO_INCREMENT=8 ;
  15.  
  16. #
  17. # Zrzut danych tabeli `miasta`
  18. #
  19.  
  20. INSERT INTO `miasta` VALUES (1, 'Łódź');
  21. INSERT INTO `miasta` VALUES (2, 'Warszawa');
  22. INSERT INTO `miasta` VALUES (3, 'Gdańsk');
  23. INSERT INTO `miasta` VALUES (4, 'Gdynia');
  24. INSERT INTO `miasta` VALUES (5, 'Skierniewice');
  25. INSERT INTO `miasta` VALUES (6, 'Wałbrzych');

no i do tego będzie potrzebna ci jeszcze biblioteka advAJAX autorstwa Anakina, aby włączyć funkcjonalność ajaxa.
Wszystkie potrzebne pliki leżą tutaj
Forum pododawało znaki / przed cudzysłowiami więc trzeba poprawić, a pliku .rar jest wszystko ok.
Sprawdzałem na IE 6.0 i FF 1.5.0.6
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 13.10.2025 - 17:30