Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX/SQL] Problem z połączeniem skryptu z danymi SQL
Forum PHP.pl > Forum > XML, AJAX
free
Znalazlem skrypt :
DEMO działania
Oraz jego kod źródłowy
I nie potrafię przekształcic go by pobierał dane dynamicznie z bazy SQL, zamiast tak jak obecnie statycznie z danych zapisanych wewnatrz skryptu.
Dodam, ze poradzilem sobie z 1 selectem kategori i wyswietla mi się dynamicznie.
Mam problem z dynamicznym dodawaniem danych z bazy do drugiego selecta dotyczacego podkategorii, w tym skrypcie za podkategorie odpowiada plik getCities.php
yaro
Zapraszam na http://ajaxin.pl/zalezne_od_siebie_html_owe_selecty-a22.html
Wszystko po kolei wytłumaczone. Jest demo i kody źródłowe
free
Dzieki. Potrzebowalem takiej strony jak Twoja :-).
Zaraz oblukam co i jak i bede probowal to sobie zmontowac do wlasnych potrzeb :-)
Bardzo dobrze ze skrypt jest dynamiczny i oparty o baze danych :-)
Mam pytanie :
"W tym tutorialu wykorzystano bibliotekę Prototype.
Możesz ją pobrać z: http://www.prototypejs.org/"
Musze cos pobrac by działało, jezeli tak to czy to jest ten plik :
klik ?
yaro
Tak to jest ten plik.
Bibliotekę należy umieścić wraz z innymi skryptami.
free
Przeanalizowałem kod. Jest ok ma tylko 1 wadę, że w jednej tabelce trzymsz kategorie i podkategorie.
Podaję Ci moją bazę :
  1. --
  2. -- Struktura tabeli dla `kategoria`
  3. --
  4.  
  5. CREATE TABLE `kategoria` (
  6. `id_kategoria` int(11) NOT NULL AUTO_INCREMENT,
  7. `nazwa` varchar(55) NOT NULL DEFAULT '',
  8. `opis` text NOT NULL,
  9. `poziom` int(2) NOT NULL DEFAULT '0',
  10. PRIMARY KEY (`id_kategoria`)
  11. ) TYPE=MyISAM AUTO_INCREMENT=6 ;
  12.  
  13. --
  14. -- Zrzut danych tabeli `kategoria`
  15. --
  16.  
  17. INSERT INTO `kategoria` VALUES (1, 'Praca', 'Ofertypracy', 1);
  18. INSERT INTO `kategoria` VALUES (2, 'Samochody', 'Kupno i sprzedaż samochodów', 1);
  19. INSERT INTO `kategoria` VALUES (3, 'Nieruchomości', 'Domy, mieszkania, garaże, pomieszczenia gospodarcze', 1);
  20. INSERT INTO `kategoria` VALUES (4, 'Towarzyskie', 'opis kategorii', 3);
  21. INSERT INTO `kategoria` VALUES (5, 'Nauka', 'Szkoła, studia, korepetycje', 2);
  22.  
  23. -- --------------------------------------------------------
  24.  
  25. --
  26. -- Struktura tabeli dla `ogloszenia`
  27. --
  28.  
  29. CREATE TABLE `ogloszenia` (
  30. `id` int(11) NOT NULL AUTO_INCREMENT,
  31. `kategoria_id` int(11) NOT NULL DEFAULT '1',
  32. `podkat_id` int(11) NOT NULL DEFAULT '1',
  33. `user_id` int(11) NOT NULL DEFAULT '0',
  34. `tytul` varchar(55) NOT NULL DEFAULT '',
  35. `czy` int(1) NOT NULL DEFAULT '0',
  36. `czytano` int(20) NOT NULL DEFAULT '0',
  37. `tresc` text NOT NULL,
  38. `data` varchar(50) NOT NULL DEFAULT '',
  39. PRIMARY KEY (`id`)
  40. ) TYPE=MyISAM AUTO_INCREMENT=7 ;
  41.  
  42. --
  43. -- Zrzut danych tabeli `ogloszenia`
  44. --
  45.  
  46. INSERT INTO `ogloszenia` VALUES (1, 1, 2, 2, 'Praca dla informatyka', 1, 5, 'Wymagania...\r\nOerta...\r\nTel. 755 67 67', '23-02-07 17:04');
  47. INSERT INTO `ogloszenia` VALUES (2, 1, 7, 2, 'Staż w Urzedzie Miasta Olsztyn', 1, 4, 'Staż na okres 6 miesięcy. Wymagane wykształcenie wyższe prawnicze, zaświadczenie o niekaalności, prawo jazdy kategoria B\r\nWiecej informacji po nr telefonu 755 6734', '23-02-07 17:07');
  48. INSERT INTO `ogloszenia` VALUES (3, 1, 1, 2, 'Mlody szuka pracy jako kierowca.', 0, 12, 'Dyspozycyjny 25 lat szuka pracy. Wyksztalcenie srednie,prawo jazdy kat. B, C.\r\nTel. 878 898 899', '23-02-07 17:11');
  49. INSERT INTO `ogloszenia` VALUES (4, 2, 6, 1, 'Sprzedam traka cena 25 tys', 1, 1, 'Rocznik 1995. Telefon 89 766 56 56 lub 655 555 666', '23-02-07 17:13');
  50. INSERT INTO `ogloszenia` VALUES (5, 1, 1, 2, 'dobre ogl', 1, 1, 'ok ok ok;p', '07-03-07 23:41');
  51. INSERT INTO `ogloszenia` VALUES (6, 1, 32, 2, 'okokoko', 1, 4, 'okokoko', '07-03-07 23:52');
  52.  
  53. -- --------------------------------------------------------
  54.  
  55. --
  56. -- Struktura tabeli dla `podkat`
  57. --
  58.  
  59. CREATE TABLE `podkat` (
  60. `id_podkat` int(11) NOT NULL AUTO_INCREMENT,
  61. `kat_id` int(11) NOT NULL DEFAULT '1',
  62. `nazwapod` varchar(55) NOT NULL DEFAULT '',
  63. `opispod` text NOT NULL,
  64. PRIMARY KEY (`id_podkat`)
  65. ) TYPE=MyISAM AUTO_INCREMENT=10 ;
  66.  
  67. --
  68. -- Zrzut danych tabeli `podkat`
  69. --
  70.  
  71. INSERT INTO `podkat` VALUES (1, 1, 'Szukam prac', 'Oferty dla bezrobotnych');
  72. INSERT INTO `podkat` VALUES (2, 1, 'Dam pracę', 'Oferty pracodawców');
  73. INSERT INTO `podkat` VALUES (3, 2, 'Osobowe auta', 'Samochody osobowe');
  74. INSERT INTO `podkat` VALUES (4, 2, 'Maszyny', 'gggg');
  75. INSERT INTO `podkat` VALUES (5, 5, 'Korepetycje', 'Dodatkowe zajęcia ;-)');
  76. INSERT INTO `podkat` VALUES (6, 2, 'Ciężarowe', 'Auta, autobusy, maszyny rolnicze budowlane itp');
  77. INSERT INTO `podkat` VALUES (7, 1, 'Staż', 'dla absolwentow');
  78. INSERT INTO `podkat` VALUES (8, 4, 'Y pozna X', 'y - x');
  79. INSERT INTO `podkat` VALUES (9, 4, 'X pozna Y', 'x-y');


Przerobiłem Twoje skrypty i wyszło mi takie coś:
Plik htmlselects.php:
  1. <?php
  2. require("config.php");
  3. $conn=mysql_connect($host,$bazalogin,$bazahaslo);
  4. ?>
  5. <html>
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  8. <title>ajaxin.pl - Zależne od siebie HTML'owe selecty - DEMO</title>
  9. <script type="text/javascript" src="prototype.js"></script>
  10. <script type="text/javascript" src="htmlselects.js"></script>
  11. </head>
  12. <body>
  13. <?php
  14. $jaki = $_GET['jaki'];
  15. $zap = "SELECT * FROM ogloszenia o, kategoria k WHERE o.kategoria_id=k.id_kategoria
     AND id='$jaki'"
    ;
  16. $wyk = mysql_query($zap);
  17. $rzad = mysql_fetch_array($wyk);
  18. $tytul = $rzad['tytul'];
  19. $tresc = $rzad['tresc'];
  20. $kategoria = $rzad['nazwa'];
  21. $id_kategoria=$rzad['id_kategoria'];
  22. //
  23.  echo("<form name="doublecombo" id="doublecombo" action="ddl.php" method="post">");
  24.  
  25.  echo" <select size="1" name="a" id="a" onChange="getLevel(this)">
  26. <option value="$id_kategoria" selected> $kategoria</option> ";
  27.  
  28. $query = mysql_query("SELECT * FROM kategoria WHERE nazwa not in ('$kategoria')");
  29.  
  30.  while ($myrow = mysql_fetch_array($query)) {
  31. echo '<option value="'.$myrow["id_kategoria"].'">'.$myrow["nazwa"].'</option>'."n";
  32. }
  33.  
  34.  
  35. /////////Wyswietla podaketegorie///////////////
  36. $pyt1="SELECT podkat_id, id_podkat, nazwapod, id FROM ogloszenia o, podkat p WHERE
     o.podkat_id=p.id_podkat AND id='$jaki'"
    ;
  37. $wyk1 = mysql_query($pyt1);
  38. $rzad1 = mysql_fetch_array($wyk1);
  39. $podkat = $rzad1['nazwapod'];
  40. $id_podkat = $rzad1['id_podkat'];
  41.  
  42. echo "
  43. <select name="podkat"><option value="$id_podkat" selected> $podkat</option> ";
  44.  
  45. $wynik2=mysql_query("SELECT * FROM podkat WHERE kat_id='$id_kategoria' AND nazwapod not in ('$podkat')");
  46.  for ($i=0; $i<mysql_num_rows($wynik2); $i++)  {
  47.  $wiersz2=mysql_fetch_array($wynik2);
  48.  $nazwapod=$wiersz2['nazwapod'];
  49.  $id_podkat = $wiersz2['id_podkat'];
  50.  
  51. echo "<option value="$id_podkat"> $nazwapod </option> " ;  }
  52. echo"</select>";
  53. /////////Koniec podkategorii////////////////
  54.  
  55.  
  56.  
  57. <select name="b" id="b" onChange="getLevel(this)" disabled>
  58. <option selected>-- puste --</option>
  59. </select>
  60. <input type=hidden name=id value="$jaki"> <br />
  61.  Tytul <input type=text size=60 name=tytul value='$tytul'>  <br /> <br />
  62.  Tresc <textarea name="tresc" cols="45" rows="10">$tresc</textarea></form> ";
  63. ?>
  64. </body>
  65. </html>


Plik dll.php:
  1. <?php
  2. header('Content-Type: text/xml');
  3. header('charset=utf-8;');
  4. require("config.php");
  5. $conn=mysql_connect($host,$bazalogin,$bazahaslo);
  6. /* Sprawdzanie czy id jest liczbą - w PHP od wersji 5.2
  7. if(filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT) == FALSE) return false;
  8. */
  9. //dla starszych wersji PHP
  10. if (!isset($_GET["id"]) or !is_numeric($_GET["id"])) exit;
  11. $id = (int)$_GET["id"];
  12.  
  13. $query = mysql_query("SELECT * FROM podkat WHERE kat_id = ".$id."");
  14.  
  15. echo '<?xml version="1.0" encoding="utf-8" ?>'
  16. .'<records>';
  17. if(mysql_num_rows($query) > 0)
  18. {
  19.  while ($myrow = mysql_fetch_array($query)) {
  20. echo '<option id="'.$myrow["id_podkat"].'">'.$myrow["nazwapod"].'</option>';
  21. }
  22. }
  23. else
  24. {
  25. echo '<option id="1">Brak podkategorii!</option>';
  26. }
  27. echo '</records>';
  28. ?>

Do tego config.php:
  1. <?
  2. // ***************************************
  3. // DANE DOSTĘPOWE DO BAZY 
  4. $host="localhost";
  5. $bazalogin="login";
  6. $bazahaslo="haslo";
  7. $baza="nazwa";
  8. // ***************************************
  9. ?>

Jak zainstalujesz to zobaczysz ze działa, tylko że po zmianie podkategorii nie zmienia w kodzie źródłowym wartości value. Coś namieszałem
aren
Np.:

$jaki = $_GET['jaki'];
$zap = "SELECT * FROM ogloszenia o, kategoria k WHERE o.kategoria_id=k.id_kategoria AND id='$jaki'";

woła o pomstę do nieba. Drodzy Państwo, jeśli podajecie kod innym, podawajcie go chociaż secure. Później sie dziwić, gdy otwiera się obcy projekt i się aż oczom nie wierzy.
yaro
free - to że w jednej tabeli to tylko dlatego że ważniejsze było przedstawienie od strony JavaScriptu (AJAX) i nie było sensu bawić się z bazą danych. Z resztą zaznaczyłem w artykule że nie będzie to skomplikowana sktuktura w bazie jak i XML'a.
A jak widać nie potrzebnie bym robił coś takiego, bo przecież sam poradziłeś sobie.

No właśnie powinieneś przedstawić skrypt już z jakimś zabezpieczeniem, dobrze że aren to przeglądnął.
free
O co ci aren chodzi questionmark.gif?
Yaro poradziłem sobie ale tylko polowicznie, bo skrypt nie przekazuje aktualnie zaznczonej podkategorii, tylko pierwsza wyswietlona. Zreszta nie sprawdzalem czy twoj oryginalny skrypt takze poprawnie przykazuje dane w <option value=...-wartosc wybranego pola
w koncu skryp ma slyzyc do wyboru kategorii i podkategorii i przykazania ich dalej poprzez parametry w value=
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.