Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [AJAX][MySQL][PHP]Podwójna lista rozwijana nie działa przy wyborze pierwszego
timeo
post
Post #1





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 28.06.2011

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


Mam dwa pliki cennik5.php i getdata.php. Chcę mieć dwie listy rozwijane zależne od siebie pobierające dane z bazy sql. Pierwsza pięknie pobiera druga nie. Połączenie w configbase i jest połączenie. Podpowiedzcie co robię nie tak.
  1. <?php include('../configbase.php'); ?>
  2. <!Doctype html>
  3. <html>
  4. <head>
  5. <title></title>
  6. </head>
  7.  
  8. <body>
  9. <label>Marka</label>
  10. <select name="marka" onchange="getId(this.value);">
  11. <option value=""> Wybierz Markę</option>
  12. <?php
  13. $result = $db->prepare("SELECT * FROM Marki");
  14. $result ->execute();
  15. foreach($result as $marki){
  16. ?>
  17. <option value="<?php echo $marki["CID"]; ?>"><?php echo $marki["Marka"];
  18. print_r($marki); ?> </option>
  19. <?php
  20. }
  21.  
  22. ?>
  23.  
  24. </select>
  25.  
  26. <label>Model</label>
  27. <select name="model" id="listamodeli">
  28. <option value=""></option>
  29. </select>
  30. <scritp src="//code.jquery.com/jquery-1.12.0.min.js"></script>
  31. <script>
  32. function getId(val){
  33.  
  34. $.ajax({
  35. type: "POST",
  36. url: "getdata.php",
  37. data: "CID="+val,
  38. success: function(data){
  39. $(#listamodeli).html(data);
  40. }
  41.  
  42. });
  43. }
  44. </script>
  45.  
  46. </body>
  47. </html>


getata.php
  1. <?php
  2. include ("../configbase.php");
  3.  
  4. if (!empty($_POST["CID"])){
  5.  
  6. //$cid = $_POST["CID"];
  7. $result = $db->prepare("SELECT * FROM cennikmobi10 WHERE CID = :cid");
  8. $result -> bindValue(':cid', $_POST["CID"], PDO::PARAM_INT);
  9. $result -> execute();
  10.  
  11. foreach ($result as $model)
  12. {
  13. ?>
  14. <option value="<?php echo $model["Model_ID"]; ?>"><?php echo $model["Model"]; ?></option>
  15. <?php
  16. }
  17. }
  18. ?>
Go to the top of the page
+Quote Post
3 Stron V   1 2 3 >  
Start new topic
Odpowiedzi (1 - 19)
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Metoda execute zwraca prawdę, albo fałsz, czyli w obydwu przypadkach nie pobierasz wyników.
W pierwszym przypadku prepare nie jest potrzebne, wystarczy query+fetch/fetchAll.


--------------------
Go to the top of the page
+Quote Post
timeo
post
Post #3





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 28.06.2011

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


Zmieniłem i nadal nic. Spójrzcie.
Wszystkie kolumny w db są. Rekordy w rozwijaku mi się pojawiają, bo zrobiłem print_r i jest to co mi potrzebne. Być może coś z AJAX jest nie tak. Nie wiem już gdzie szukać.
  1. <?php include('../configbase.php'); ?>
  2. <!Doctype html>
  3. <html>
  4. <head>
  5. <title></title>
  6. </head>
  7.  
  8. <body>
  9. <label>Marka</label>
  10. <select name="marka" onchange="getId(this.value);">
  11. <option value=""> Wybierz Markę</option>
  12. <?php
  13. $result = $db->query("SELECT * FROM Marki");
  14. // $result ->execute();
  15. //
  16.  
  17. //$marki = $result ->fetch(PDO::FETCH_ASSOC)
  18. foreach($result as $marki)
  19. {
  20. ?>
  21. <option value="<?php echo $marki["CID"]; ?>"><?php echo $marki["Marka"];
  22. print_r($marki); ?> </option>
  23. <?php
  24. }
  25.  
  26. ?>
  27.  
  28. </select>
  29.  
  30. <label>Model</label>
  31. <select name="model" id="listamodeli">
  32. <option value=""></option>
  33. </select>
  34. <scritp src="//code.jquery.com/jquery-1.12.0.min.js"></script>
  35. <script>
  36. function getId(val){
  37.  
  38. $.ajax({
  39. type: "POST",
  40. url: "getdata.php",
  41. data: "CID="+val,
  42. success: function(data){
  43. $(#listamodeli).html(data);
  44. }
  45.  
  46. });
  47. }
  48. </script>
  49.  
  50. </body>
  51. </html>


  1. <?php
  2. include ("../configbase.php");
  3.  
  4. if (!empty($_POST["CID"])){
  5.  
  6. //$cid = $_POST["CID"];
  7. $result = $db->prepare("SELECT * FROM cennikmobi10 WHERE MODEL_ID = :cid");
  8. $result -> bindValue(':cid', $_POST["CID"], PDO::PARAM_INT);
  9. //$result -> execute();
  10.  
  11. foreach ($result as $model)
  12. {
  13. ?>
  14. <option value="<?php echo $model["Model_ID"]; ?>"><?php echo $model["Model"]; ?></option>
  15. <?php
  16. }
  17. }
  18. ?>


Ten post edytował timeo 10.10.2016, 05:41:29
Go to the top of the page
+Quote Post
trueblue
post
Post #4





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Nadal nie pobierasz rekordów.
Jeśli masz coś w zmiennej $marki, to na pewno nie z powyższego kodu, bo w nim nigdzie nie ustalasz wartości tej zmiennej.


--------------------
Go to the top of the page
+Quote Post
timeo
post
Post #5





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 28.06.2011

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


Poniższy kod nic nie daje.
  1. $marki = $result ->fetch(PDO::FETCH_ASSOC)

Jest tylko jeden rekord i nie przekazuje dalej zmiennej.
Szukam dalej. Może jakaś podpowiedź z czym ten fetch zestawić?
TAK?
  1. while($result = $marki ->fetch()) // foreach($result as $marki)
  2. {
  3. ?>
  4. <option value="<?php echo $marki["Marka_ID"]; ?>"><?php echo $marki["Marka"];
  5. print_r($marki); ?> </option>
  6. <?php
  7. }
  8.  
  9. ?>


Ten post edytował timeo 10.10.2016, 07:52:12
Go to the top of the page
+Quote Post
trueblue
post
Post #6





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Możesz fetchAll, tak jak pisałem?


--------------------
Go to the top of the page
+Quote Post
timeo
post
Post #7





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 28.06.2011

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


Zrobiłem tak, ale efekt mizerny
  1. <?php
  2. $result = $db->query("SELECT * FROM Marki");
  3. // $result ->execute();
  4. //
  5. $marki = $result->fetchAll();
  6. {
  7. ?>
  8. <option value="<?php echo $marki["CID"]; ?>"><?php echo $marki["Marka"];
  9. //print_r($marki); ?> </option>
  10. <?php
  11. }
  12.  
  13. ?>
Go to the top of the page
+Quote Post
trueblue
post
Post #8





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Może dlatego, że nie iterujesz po elementach tablicy? Czyli brak np. foreach.


--------------------
Go to the top of the page
+Quote Post
timeo
post
Post #9





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 28.06.2011

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


Dobrze zapytam.. No nadal nic
  1. $result = $db->query("SELECT * FROM Marki");
  2.  
  3. $key = $result->fetchAll();
  4. foreach ($key as $marki) {
  5.  
  6.  
  7. ?>
  8. <option value="<?php echo $marki["CID"]; ?>"><?php echo $marki["Marka"];
  9. ?> </option>
  10. <?php
  11. }
  12.  
  13. ?>
Go to the top of the page
+Quote Post
trueblue
post
Post #10





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Pokaż co wyświetla wynik: var_dump($key); (po fetchAll).


--------------------
Go to the top of the page
+Quote Post
timeo
post
Post #11





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 28.06.2011

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


Na stronie nic nie pokazuje, jest tylko lista z wszystkimi markami.
Mogę podać kod źródłowy strony, jeśli to coś pomoże.
Go to the top of the page
+Quote Post
viking
post
Post #12





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Wstaw pierwszy wiersz tablicy, żeby określić czy faktycznie są takie klucze jak piszesz.


--------------------
Go to the top of the page
+Quote Post
timeo
post
Post #13





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 28.06.2011

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


Nie bardzo rozumiem. Z bazy danych mam wstawić wiersz?
Go to the top of the page
+Quote Post
viking
post
Post #14





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Pierwszy element z tablicy var_dump($key); albo inaczej var_dump($key[0]);


--------------------
Go to the top of the page
+Quote Post
timeo
post
Post #15





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 28.06.2011

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


Na stronie nic mi nie pokazuje. Są tylko dwie optionlist z czego jedna ma marki (czyli pokazuje mi wszystkie elementy z tablicy) a druga jest pusta. Wrzuciłem to
  1. <?php
  2. $result = $db->query("SELECT * FROM Marki");
  3. // $result ->execute();
  4. //
  5. $key = $result->fetchAll(PDO::FETCH_ASSOC);
  6. var_dump($key[0]);
  7. foreach ($key as $marki)
  8. {
  9. ?>
  10. <option value="<?php echo $marki["Marka_ID"]; ?>"><?php echo $marki["Marka"];?> </option>
  11. <?php
  12. }
  13. ?>
Go to the top of the page
+Quote Post
viking
post
Post #16





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Czyli wychodzi z tego że zapytanie nic nie zwraca.


--------------------
Go to the top of the page
+Quote Post
timeo
post
Post #17





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 28.06.2011

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


Czy w związku z tym jakoś inaczej pytanie wprowadzić?
Jednak lista marek jest - pytanie dlaczego?
Mogę ewentualnie podać adres odnośnika, żeby pokazać Wam gdzie leży błąd. Nie wiem jak regulamin.

Ten post edytował timeo 10.10.2016, 11:27:54
Go to the top of the page
+Quote Post
viking
post
Post #18





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Wstaw bo tak można gdybać. I włącz raportowanie błędów.


--------------------
Go to the top of the page
+Quote Post
timeo
post
Post #19





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 28.06.2011

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


Ups - a jak włączyć raportowanie błędów - podpowiedz.
  1. ini_set('display_errors',1);

Testy

Ten post edytował timeo 10.10.2016, 11:35:52
Go to the top of the page
+Quote Post
viking
post
Post #20





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Po stronie php masz <b>Notice</b>: Undefined offset: 0 in <b>/home/vol2_1/byethost15.com/b15_3428001/bdp.22web.org/htdocs/mobidoktor/cennik5.php</b> on line <b>24</b><br /> Co jest w tej linii?
Po stronie JS: SyntaxError: illegal character $(#listamodeli).html(data); powinno być $('#listamodeli')



--------------------
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 23:25