Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z select
Forum PHP.pl > Forum > XML, AJAX
g-4
witam,

mam problem z wyswiwtlaniem listy w drugim select, korzystalem z tego pprzykladu

blad jaki wystepuje przy dzialaniu tego przykladu polega na uzupelnianiu sie drugiego select'a. Kiedy w pierwszyw wybiore sobie np. "opcja1", w drugim wyswietla mi sie llista z czterema rekordami, natomiast kiedy pozniej klikne w "opcja2", ktora wyswietla tylko dwa rekordy, to pokaza sie te dwa i dwa ostatnie z poprzedniej opcji. Wyglada to tak, ze lista w drugim select'cie sie nie kasuje, tylko zastepuje nowymi rekordami, czyli jesli pierwszy z wybranych select'ow mial wiecej rekodrow od drugiego to nadmiar pozostanie nadal wyswietlony.

mam nadzieje, ze dobrze opisalem swoj problem. z gory dziekuje za pomoc
revyag
Jeszcze lepieje opiszesz swój problem podając linka do strony z problemem lub wstawiając kod,który wedłu Ciebie problem generuje. Co prawda podałeś linka do kodu z którego korzystałeś, ale nie wiemy jakie zmiany w nim zrobiłeś.
g-4
oto moje pliki, link'a do problemu niestety nie moge zamiescic bo mam to na localhost'cie, a nie mam zewnetrznego ip.

odpowiedz.php
  1. <?
  2. header("Content-type: text/xml; charset=UTF-8");
  3. echo '<?xml version="1.0" encoding="UTF-8"?>';
  4.  
  5. $dbhost = localhost;
  6. $dblogin = root;
  7. $dbhaslo = 'witalis1987';
  8. $db = auto;
  9. mysql_connect (localhost,root,'witalis1987') or die ("Nie masz uprawnien");
  10.  
  11.  
  12. $marka = (int)$_GET['marka'];
  13. if(!$marka) $marka = 1;
  14.  
  15. echo '<records>';
  16. $query = "SELECT nr, model FROM model WHERE marka LIKE '$marka'";
  17. $result = mysql_query($query);
  18. while ($row = mysql_fetch_array($result)){
  19. echo '<record>';
  20. echo '<ID>'.$row['nr'].'</ID>';
  21. echo '<nazwa>'.$row['model'].'</nazwa></record>';
  22. }
  23.  
  24. echo '</records>';
  25. ?>


function.js
  1. function $(id){
  2. return document.getElementById(id);
  3. }
  4.  
  5.  
  6. function parseRecords(xml) {
  7.  
  8. var opttypes = document.getElementById("spis");
  9. record = xml.getElementsByTagName("record");
  10. ID = new Array();
  11. nazwa = new Array();
  12. for (i = 0; i < record.length; i++) {
  13. nazwa[i] = record[i].childNodes[1].childNodes[0].nodeValue;
  14. ID[i] = record[i].childNodes[0].childNodes[0].nodeValue;
  15.  
  16. }
  17.  
  18. for(var i = 0; i < nazwa.length; i++) {
  19. opttypes.options[i] = new Option(nazwa[i],ID[i]);
  20. }
  21. }
  22.  
  23.  
  24. function getRecords() {
  25. var marka = $("marki").value;
  26.  
  27. advAJAX.get({
  28. url : "odpowiedz.php?marka="+marka,
  29. onInitialization : function(obj) {
  30. $("spis").disabled="true";
  31. },
  32. onSuccess : function(obj) {
  33. parseRecords(obj.responseXML);
  34. $("spis").disabled="";
  35. }
  36. });
  37. }


index.php
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. </head>
  5. <body>
  6. <select name="marki" id="marki" onchange="getRecords();">
  7. <option></option>
  8. <?
  9. mysql_connect (localhost,root,'witalis1987') or die ("Nie masz uprawnien");
  10.  
  11. $query = "SELECT nr, marka FROM marka";
  12. $result = mysql_query($query);
  13.  
  14. while ($row = mysql_fetch_array($result)){
  15. echo '<option value="'.$row['nr'].'">'.$row['marka'].'</option>';
  16. }
  17. ?>
  18. </select>
  19.  
  20. <select name="spis" id="spis" style="width: 200px;">
  21. </select>
  22.  
  23. <script type="text/javascript" src="advajax.js"></script>
  24. <script type="text/javascript" src="function.js"></script>
  25. </body>
  26. </html>
yaro
Wstaw sobie do parseRecords() przed tworzeniem nowych opcji

Kod
for (i = opttypes.options.length-1; i >= 0; i--)
opttypes.remove(i);


Powinno działać, mam nadzieje że o to chodziło.
g-4
wielkie dzieki yaro, teraz wszystko dziala poprawnie
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.