Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> MYSQL+PHP listy rozwijane zależne od siebie
lukasz33
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 6.11.2016

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


Witam posiadam bazę danych która zawiera tabele markę, model, paliwo, auto z listy rozwijane na stronie chciałbym wybrać markę i model do tej marki jednak gdy wybieram np. markę audi to wyświetlają mi się również modele innych marek (IMG:style_emoticons/default/sad.gif) . Czy ktoś mogłyby mi pomóc w rozwiązaniu tego problemu aby wszystko wyświetlało się jak należny. Jeżeli piszę w złym dziale to bardzo przepraszam

index.php
  1. <html>
  2. <head>
  3. <link rel="stylesheet" href="style.css" type="text/css">
  4. </head>
  5. <body class="back">
  6. <div class="txt"></div>
  7. <form method="POST" action="szukaj.php">
  8. <div id="rejestracja"><br>
  9.  
  10. <label class="font">Marka i Model:</label><br>
  11. <select id="marka" class="marka" name="marka">
  12. <?php
  13.  
  14. include("sterownik_db.php");
  15. $zapytanie = "SELECT * FROM marka";
  16. $wynik = mysql_query($zapytanie);
  17. {
  18. while ($wiersz = mysql_fetch_assoc($wynik))
  19. {
  20. ?>
  21. <option value="<?php echo $wiersz['id_marki'];?>"><?php echo $wiersz['nazwa'];?></option>
  22. <?php
  23. }
  24. }
  25. ?>
  26. </select>
  27. <select id="model" class="model" name="model">
  28. <?php
  29. include("sterownik_db.php");
  30. $zapytanie1 = "SELECT id_marka,model FROM model,marka WHERE model.id_marka = marka.id_marki";
  31. $wynik1 = mysql_query($zapytanie1);
  32. {
  33. while($wiersz1 = mysql_fetch_assoc($wynik1))
  34. {
  35. ?>
  36. echo "<option value="<?php echo $wiersz1['id_marka'];?>" class="<?php echo $wiersz1['id_model'];?>"><?php echo $wiersz1['model'];?></option>
  37. <?php
  38. }
  39. }
  40. ?>
  41. </select>
  42. <select id="paliwo" class="benzyna" name="paliwo">
  43. <?php
  44. include("sterownik_db.php");
  45. $zapytanie2 = "SELECT * FROM paliwo";
  46. $wynik2 = mysql_query($zapytanie2);
  47. while ($wiersz2 = mysql_fetch_array($wynik2))
  48. {
  49. echo "<option value=".$wiersz2['id_paliwa'].">".$wiersz2['rodzaj_paliwa']."</option>";
  50. }
  51. echo "</select>";
  52.  
  53. ?>
  54. <br>
  55. <input class="prze" name="txt">
  56. <input class="prze2" name="txt">
  57. </div>
  58. </form>
  59. </div>
  60. </div>
  61. </div>
  62. </body>
  63. </form>
  64. </html>


create.sql
  1. CREATE TABLE marka
  2. (
  3. id_marki int NOT NULL PRIMARY KEY,
  4. nazwa varchar(20)
  5. );
  6.  
  7. CREATE TABLE paliwo
  8. (
  9. id_paliwa int PRIMARY KEY AUTO_INCREMENT,
  10. rodzaj_paliwa varchar(20) NOT NULL
  11. );
  12.  
  13. CREATE TABLE model
  14. (
  15. id_model int NOT NULL PRIMARY KEY AUTO_INCREMENT,
  16. id_marka int NOT NULL,
  17. model char(20),
  18. CONSTRAINT FOREIGN KEY model(id_marka) REFERENCES marka(id_marki)
  19. );
  20.  
  21.  
  22. CREATE TABLE auto
  23. (
  24. id_auta int PRIMARY KEY AUTO_INCREMENT,
  25. marka int NOT NULL,
  26. rok_produkcji int(4) NOT NULL,
  27. przebieg int(20) NOT NULL,
  28. id_rodzaj_paliwa int NOT NULL,
  29. CONSTRAINT FOREIGN KEY (marka) REFERENCES marka(id_marki),
  30. CONSTRAINT FOREIGN KEY (id_rodzaj_paliwa) REFERENCES paliwo (id_paliwa)
  31. );


insert.sql
  1. INSERT INTO marka VALUES (1, 'Audi');
  2. INSERT INTO model VALUES (NULL,1,"A6");
  3. INSERT INTO model VALUES (NULL,1,"A8");
  4. INSERT INTO model VALUES (NULL,1,"100");
  5.  
  6. INSERT INTO marka VALUES (2, 'BMW');
  7. INSERT INTO model VALUES (NULL,2,"318");
  8. INSERT INTO model VALUES (NULL,2,"750");
  9. INSERT INTO model VALUES (NULL,2,"Z3");
  10.  
  11. INSERT INTO marka VALUES (3, 'Citroen');
  12. INSERT INTO model VALUES (NULL,3,"Berlingo");
  13. INSERT INTO model VALUES (NULL,3,"Xsara");
  14. INSERT INTO model VALUES (NULL,3,"C3");


Proszę o szybka pomoc (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
SmokAnalog
post
Post #2





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Cytat(lukasz33 @ 6.11.2016, 22:52:54 ) *
gdy wybieram np. markę audi to wyświetlają mi się również modele innych marek


Możesz trochę jaśniej? Gdzie mają się wyświetlać te marki? Po wysłaniu formularza? Pytam, bo nie pokazałeś w ogóle pliku szukaj.php, a to on obsługuje u Ciebie dane z formularza.
Go to the top of the page
+Quote Post
Shou
post
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 4
Dołączył: 6.11.2016

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


szukaj.php to zapewne ten plik, którego treść wstawił.

Jeśli wszystko ma się odbywać dynamicznie na jednej stronie, to jest to zadanie nie dla PHP, a dla JavaScriptu.
Go to the top of the page
+Quote Post
SmokAnalog
post
Post #4





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


To chyba raczej index.php (jak napisał), w którym jest formularz. Nigdzie nie ma żadnej obsługi $_POST / $_REQUEST.
Go to the top of the page
+Quote Post
Shou
post
Post #5





Grupa: Zarejestrowani
Postów: 13
Pomógł: 4
Dołączył: 6.11.2016

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


Faktycznie, przeoczyłem. Moim zdaniem chodzi po prostu o wybór marki i w polu obok modelu - których lista byłaby zawężona do odpowiednich dla danej marki (bo to typowe działanie). Kwestia interfejsowa, więc co robi szukaj.php, to już raczej nieistotne.
Go to the top of the page
+Quote Post
lukasz33
post
Post #6





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 6.11.2016

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


To nie jest dodawanie rekordów do bazy (IMG:style_emoticons/default/smile.gif) chciałbym po prostu wyświetlić dane w polu select jakie dane ? dane marki i model chciałbym aby działało to w ten sposób że w pierwszym polu wybieram załóżmy markę audi a w drugim automatycznie wyświetlają mi się wszystkie modele tej marki, wszystkie dane modeli i marek są pobierane z bazy i porostu wybieram sobie audi to wyświetlają mi się modele audi, mercedes itp problem w tym tak jak już wyżej napisałem że gdy wybieram np. mercedes to nie wyświetlają mi się modele tylko tej określonej marki ale wszystkie modele wszystkich marek i teraz jak napisać skrypt aby to działało jak ja chce?.

A właśnie to szukaj.php jest ze starego skryptu:) i jest całkowicie wyłączone sorki że was to zmyliło po prostu tego nie ma
Go to the top of the page
+Quote Post
SmokAnalog
post
Post #7





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Najlepiej to by było użyć do tego celu JavaScriptu i albo ładować te opcje Ajaxem (jeśli jest ich dużo), albo po prostu je wszystkie załadować i odpowiednio dodawać / usuwać z selecta (jeśli jest ich stosunkowo mało). Masz jakąkolwiek wiedzę JS?
Go to the top of the page
+Quote Post
lukasz33
post
Post #8





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 6.11.2016

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


Marną (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
Shou
post
Post #9





Grupa: Zarejestrowani
Postów: 13
Pomógł: 4
Dołączył: 6.11.2016

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


Jest opcja prostsza bez JS, ale trochę toporna. Czyli wybierasz markę, a następnie strona z formularzem się przeładowuje i wyświetla listę modeli zawężoną do wybranej marki.

Ten post edytował Shou 7.11.2016, 00:12:16
Go to the top of the page
+Quote Post
SmokAnalog
post
Post #10





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Tak też można, ale będzie to rzeczywiście toporne. To już prędzej poszedłbym w ekran wyboru marki jako kliknięcie w link. To już by było całkiem fajne, szczególnie z ładnymi grafikami dla każdej marki.
Go to the top of the page
+Quote Post
lukasz33
post
Post #11





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 6.11.2016

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


Hehe a myślałem że obejdzie się bez js (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
SmokAnalog
post
Post #12





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Cytat(lukasz33 @ 7.11.2016, 00:20:37 ) *
Hehe a myślałem że obejdzie się bez js (IMG:style_emoticons/default/biggrin.gif)

Przeczytałeś co napisaliśmy?
Go to the top of the page
+Quote Post
lukasz33
post
Post #13





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 6.11.2016

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


tak ale raczej wolałbym pozostać przy select

A dało by się przefiltrowac te dane zapytaniem czy coś w tym stylu?
Go to the top of the page
+Quote Post
szczemp
post
Post #14





Grupa: Zarejestrowani
Postów: 149
Pomógł: 9
Dołączył: 9.12.2010

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


Ja bym to filtrował javascriptem. Nawet jak samochodów będzie 1000, to chyba to najprostsze rozwiązanie. Oczywiście po przesłaniu formularz i tak musisz sprawdzić, czy dobrze ktoś pozaznaczał. Bardzo łatwo jest podmienić wartości przed przesłaniem. Żeby potem w bazie nie znalazła się fabia przy fordzie.
https://jsfiddle.net/f5juxdv8/
Go to the top of the page
+Quote Post

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: 24.08.2025 - 04:29