Witam, z takim zapytaniem.
Posiadam bazę danych np. zawierającą kod pocztowy, województwo, powiat, gmina.

Potrzebowałbym taki skrypt, który dynamicznie pobierałby mi dane z bazy.
Wiem jak pobrać wszystkie rekordy do formularzy select.
Np. jak wybiorę kod pocztowy, to w kolejnych selectach wyświetli mi się województwo, powiat i gmina. To umiem zorobić, pojedyńczą zależność.
Wszędzie są opisane przykłady, że po wybraniu pierwszego pola, pojawia się kolejny select, który był ukryty, przed dokonaniem wyboru.
Chciałbym żeby zawsze wyświetlane były wszystkie selecty. Zależnie od wyboru jednego z nich, kolejne zawężałyby się do pasującego z bazy danych.
Np. żeby po wyborze 'powiat' w pozostałych pozycjach dostępne byłyby opcje pasujące z bazy danych do danego powiatu, a następnie po wybraniu "gminy" w pozostałych polach zawężał by się wybór, do pasujących opcji z bazy, w tym przykładzie "kod pocztowy".
Z góry dziękuję za cenne wskazówki i porady.


Posiadam taki skrypt:
polacz.php
  1. <?php
  2. $db=mysql_pconnect('localhost','root','haslo');
  3. if (!$db)
  4. {
  5. echo "
  6. <script language='javascript' type='text/javascript'>
  7. alert('Error. Connection with database failed. Please try again.');
  8. </script>";
  9. }
  10. $db1=mysql_select_db('ajax');
  11. if (!$db1)
  12. {
  13. echo "
  14. <script language='javascript' type='text/javascript'>
  15. alert('Error. Database unavailable now. Please try again.');
  16. </script>";
  17. }
  18. ?>


dane.php
  1. <?php
  2. $loginy = $_POST['loginy'];
  3. include("polacz.php");
  4. $wynik = mysql_query("SELECT * FROM user WHERE loginu='$loginy'")
  5. or die("Błąd w zapytaniu!");
  6. $rek = mysql_fetch_array($wynik);
  7. echo '<input name="imie" type="text" value='.$rek['fname'].'>';
  8. echo "<br>" ;
  9. echo '<input name="imie" type="text" value='.$rek['email'].'>';
  10. echo '</form>';
  11. ?>


index.php
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
  2. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  3. <title>Ajax</title>
  4. <script type="text/javascript">
  5. function getXMLHttpRequestObject()
  6. {
  7. try{
  8. return new XMLHttpRequest();
  9. }
  10. catch(e){
  11. try{
  12. return new ActiveXObject("Microsoft.XMLHTTP");
  13. }
  14. catch(e){
  15. return false;
  16. }
  17. }
  18. }
  19. function pobierzDane()
  20. {
  21. if(XMLHttpRequestObject){
  22. var div = document.getElementById("warstwaDanych");
  23. var tekst = document.getElementById("tf1").value;
  24.  
  25. XMLHttpRequestObject.open("POST", "http://127.0.0.1/test/Ajax/dane.php");
  26. XMLHttpRequestObject.setRequestHeader(
  27. 'Content-Type', 'application/x-www-form-urlencoded');
  28. XMLHttpRequestObject.onreadystatechange = function()
  29. {
  30. if (XMLHttpRequestObject.readyState == 4){
  31. if(XMLHttpRequestObject.status == 200){
  32. var tekst = XMLHttpRequestObject.responseText;
  33. tekst = unescape(tekst);
  34. tekst = "Dane odebrane z serwera: <br>" + tekst;
  35. div.innerHTML = tekst;
  36. }
  37. }
  38. }
  39. tekst = escape(tekst);
  40. XMLHttpRequestObject.send("loginy=" + tekst);
  41. }
  42. }
  43. var XMLHttpRequestObject = getXMLHttpRequestObject();
  44. </head>
  45. <div>
  46. <?php
  47. include("polacz.php");
  48. $zapytanie = "SELECT * FROM user ";
  49. $wykonaj = mysql_query ($zapytanie);
  50. echo 'Wybierz uzytkownika:'.'<br>';
  51. echo '<select name="loginy" id="tf1" onchange="pobierzDane();">';
  52. echo '<option>----------</option>';
  53. if ($wykonaj) {
  54. while ($wiersz = mysql_fetch_array($wykonaj)) {
  55. $loginu = $wiersz['loginu'];
  56. $wyswietl = "<option value=\"$loginu\">$loginu</option>";
  57. echo "$wyswietl";
  58. }
  59. }
  60. echo "</select>";
  61. ?>
  62. </div>
  63. <div id="warstwaDanych">
  64. Tutaj pojawi się odpowiedŸ serwera...
  65. </div>
  66. </body>
  67. </html>


Problem w tym, że dwie opcje pojawiają się dopiero po wyborze pierwszej opcji. Mi zależy, żeby Wszystkie opcje były widoczne do wyboru i niezależnie od tego z której wybiorę, reszta będzie się dostosowywać wg wpisów w bazie.
Jest ktoś w stanie pomóc?