Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery][mysql] Zależne od siebie combo
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
deha21
Mam dwa pola combo. Jedno to marka, drugie to model. Gdy wybierze się markę to odpowiednio drugi pole zmienia wartości dla modeli tej marki. Chodzi o to, że chcę to zrobić aby po wybraniu marki przeładowywało się tylko pole modeli. Oczywiście i marki, i modele ładowane są z bazy.
Szukałem różnych przykładów ale nic nie znalazłem co wspólpracowałoby za bazą danych.
Pozdrawiam
erix
ajax dynamic select
deha21
Wielkie dzięki!

P.S Dopisałem nazwę tematu bo mnie gdzies umknął winksmiley.jpg

EDIT: Działa! Nie trzeba czytać tego co pod spotem winksmiley.jpg


EDIT: Nie byłoby tematu w którym po uzyskaniu odpowiedzi nie miałbym problemów winksmiley.jpg

[JAVASCRIPT] pobierz, plaintext
  1. function ajaxFunction(){
  2. var ajaxRequest;
  3.  
  4. try{
  5. ajaxRequest = new XMLHttpRequest();
  6. } catch (e){
  7. try{
  8. ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
  9. } catch (e) {
  10. try{
  11. ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
  12. } catch (e){
  13. alert("Błąd! Musisz zaktualizować przeglądarkę!");
  14. return false;
  15. }
  16. }
  17. }
  18.  
  19. ajaxRequest.onreadystatechange = function(){
  20. if(ajaxRequest.readyState == 4){
  21. var ajaxDisplay = document.getElementById('ajax');
  22. ajaxDisplay.innerHTML = ajaxRequest.responseText;
  23. }
  24.  
  25. }
  26.  
  27. var marka = document.getElementById('marka').value;
  28.  
  29. var queryString = "?marka=" + marka;
  30. ajaxRequest.open("GET", "modele.php" + queryString, true);
  31. ajaxRequest.send(null);
  32. }
[JAVASCRIPT] pobierz, plaintext


model.php
  1. $marka = $_GET['marka'];
  2.  
  3. $query = "SELECT * FROM model WHERE marka = '$marka'";
  4. $wynik = @mysql_query($query);
  5. $row = mysql_fetch_array($wynik);
  6.  
  7. $dropdown = "<select name='model'>";
  8.  
  9. do {
  10. $dropdown .= "<option value=".$row['id'].">".$row['nazwa']."</option>";
  11. }while ($row = mysql_fetch_array($wynik));
  12. $dropdown .= "</select>";
  13.  
  14. echo $dropdown;


I teraz tak... Przy dodawaniu auta wybiera się marke, model i spokojnie dodaje. Gdy chcę zrobić edycje modelu to wybieram markę, model, klikam Edytuj i wyskakuje błąd w lini:
  1. $model=$_POST['model'];

Zrobiłem tak, że gdy nie wybierze się jeszcze marki to domyslnie pokazują się modele, powiedzmy 'Audi'. I bez zmiany marki edycja działa normalnie ale gdy wybiorę coś innego niż 'Audi' lub wybiorę coś innego a potem powrócę do wyboru 'Audi', wtedy już nie działa. Tak jakby błąd był w pliku model.php gdzie generowane są modele danej marki.
Zapomniałem dodać, że inne zmienne z tego formularza są dobrze przesyłane.

Dziwne jest to, że przy dodawaniu pojazdu dane z ajaxa są poprawnie przesyłane natomiast przy edycji modeli już nie. Chociaż wszystko inne jest dobrze zrobione bo sprawdzałem już pare razy.

Help me! ;p

EDIT: Działa! biggrin.gif Trochę przemieniłem kod z ajax.js na zrozumiały dla mnie i zaczęło działać winksmiley.jpg
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.