Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: jeden select zależny od drugiego, odczyt wartości z bazy. Jak je zapisać do bazy?
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
alex2c
Witam szanowne Towarzystwo.
Muszę na początku podkreślić, że uczę się dopiero webowego programowania.
W jednym obiekcie typu select (odczyt z bazy) wybieram wartości dla drugiego obiektu select (odczyt z bazy). Wszystko się ładnie wyświetla jednak mam problem aby te dane przesłać w formularzu do następnej strony;/ Myślę, że problemem jest to, że PHP się już dawno wykonało i teraz gdy JS się wykonuje to nie ma odświerzania wartości zmiennych PHP. Dostaję puste zmienne. Myślałem, żeby w JS odświerzać te dane PHP lub też zapisywać te dane do cookie's a w następnej stronie je odczytywać. Na prawdę próbowałem różnych rozwiązań i niestety nic mi nie chce działać. A może wystarczy po prostu do JS wrzucić odświerzanie wartości PHP, da się ? Zależy mi aby dane z obu select'ów były pobierane z bazy.
Zamieszczam poniżej sposób odczytu z bazy i wyświetlania na stronie - proszę o pomoc, na pewno inni również z tego skorzystają. Fora przeszukane z marnym efektem, proszę chociaż o jakieś wskazówki, bo to faktycznie może być błachy problem dla znających się.

Skrypt odświerzający selecta podmenu w stronie głównej:

  1. <!--skrypt dla zmiany listy podmenu-->
  2. <script type="text/javascript">
  3. var xmlhttp;
  4.  
  5. function showList(str)
  6. {
  7. xmlhttp=GetXmlHttpObject();
  8. var url="pokaz_liste.php";
  9. url=url+"?q="+str;
  10. xmlhttp.onreadystatechange=stateListChanged;
  11. xmlhttp.open("GET",url,true);
  12. xmlhttp.send(null);
  13. }
  14.  
  15. function stateListChanged()
  16. {
  17. if (xmlhttp.readyState==4)
  18. {
  19. document.getElementById("podmenu").innerHTML=xmlhttp.responseText;
  20. }
  21. }
  22. function GetXmlHttpObject()
  23. {
  24. if (window.XMLHttpRequest)
  25. {
  26. return new XMLHttpRequest();
  27. }
  28. if (window.ActiveXObject)
  29. {
  30. return new ActiveXObject("Microsoft.XMLHTTP");
  31. }
  32. return null;
  33.  
  34. }


zawartość pokaz_liste.php

  1. <?php
  2. if($_GET['q'])
  3. {
  4. // Nawiazanie polaczenia
  5. (...);
  6. $db_select = mysql_select_db('BAZA');
  7. if(!$db_select)
  8. {
  9. die ('Nie mozna nawiazac polaczenia z baza danych - blad wyboru bazy:<nr/>'.mysql_error());
  10. }
  11. $q=mysql_escape_string($_GET["q"]);
  12.  
  13. $list2_query= mysql_query('SELECT * FROM podmenu WHERE menu = '.$q.'');
  14.  
  15. echo '<select name="baza_menu" onchange=(this.value)>';
  16. while($row_list2 = mysql_fetch_array($list2_query))
  17. {
  18. echo '<option value="'.$row_list2[1].'">'.iconv("ISO-8859-2","UTF-8", $row_list2[2]).'</option>';
  19. }
  20.  
  21. echo '</select>';
  22. }
  23. ?>
  24.  


Kod dla strony głównej


  1.  
  2. <!--wybierz menu-->
  3. <tr><td align="right">MENU</td><td align="left">';
  4.  
  5. // Nawiazanie polaczenia
  6. (...)
  7. // Wybor bazy danych
  8. $db_select = mysql_select_db('baza');
  9. if(!$db_select)
  10. {
  11. die ('Nie mozna nawiazac polaczenia z baza danych - blad wyboru bazy:<nr/>'.mysql_error());
  12. }
  13.  
  14. $list1_query = mysql_query('SELECT * FROM baza_menu');
  15.  
  16. echo '<select name="menu" onchange="showList(this.value)">';
  17. while($row_list1 = mysql_fetch_array($list1_query))
  18. {
  19. echo '<option value="'.$row_list1[0].'">'.$row_list1[1].'</option>';
  20. }
  21. echo '</select>*</td></tr>';
  22.  
  23. echo'<tr><td align="right">PODMENU</td><td align="left"><div id="podmenu">*</div></td></tr>';
  24.  
  25.  


Zależy mi na zmiennych $row_list1[1] z kodu ze strony głównej oraz $row_list2[2] z pokaz_liste.php.
Dziękuję za wszelką pomoc!
kmike
Dla zasady dodaj przed <select> <form> natomiast po </select> </form>. Sprawdź jak będzie wyglądał link po kliknięciu w opcje selecta jeżeli zamienisz kod, który wkleiłeś dla "pokaz_lisete.php" na

  1. <?php
  2. if($_GET['q'])
  3. {
  4. // Nawiazanie polaczenia
  5. (...);
  6. $db_select = mysql_select_db('BAZA');
  7. if(!$db_select)
  8. {
  9. die ('Nie mozna nawiazac polaczenia z baza danych - blad wyboru bazy:<nr/>'.mysql_error());
  10. }
  11. $q=mysql_escape_string($_GET["q"]);
  12.  
  13. $list2_query= mysql_query('SELECT * FROM podmenu WHERE menu = '.$q.'');
  14.  
  15. echo '<form><select name="baza_menu" onchange="location = this.options[this.selectedIndex].value;">';
  16. while($row_list2 = mysql_fetch_array($list2_query))
  17. {
  18. echo '<option value="?list='.$row_list2[1].'">'.iconv("ISO-8859-2","UTF-8", $row_list2[2]).'</option>';
  19. }
  20.  
  21. echo '</select></form>';
  22. }
  23. //Powinno wyświetlić zaznaczoną wartość. Jeżeli nie to możliwe, ze funkcja showList(str) jest niepoprawna.
  24. echo $_GET['list'];
  25. ?>
alex2c
Niestety Twój skrypt nie działa jak należy;/ Nie mogę <form></form> dodawać bo wtedy będę miał form'a w form'ie. To co się wykonuje w pokaz.liste jest zagnieżdżane w formie z głównego pliku. Tak czy inaczej potestowałem na różne sposoby, jednak bez pozytywnego rezultatu. Może jednak coś z tymi cookies ?
pozdrawiam!
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.