![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 19.09.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam serdecznie. Robię przykład na temat: Powiązane pola Select wykorzystujące Ajaxa z kursu ze strony: http://php.rk.edu.pl/w/p/powizane-pola-sel...zystujce-ajaxa/ .
Problem w tym, że dochodzę do etapu, gdzie zmienna kraju jest przekazywana go pliku getCities.php . Niestety na tym etapie się zatrzymuję a to informacja z debugera: "POST http:/.../getCities.php?countryCode=Niemcy [HTTP/1.0 500 Internal Server Error 13509ms]". Poniżej kody plików użytych w skypcie (oprócz ajax.js) index.php, getCities.php oraz mysql.class.php. Oczywiście u siebie wpisałem poprawną nazwę bazy, usera itp, gdyż czyta mi z bazy nazwy krajów. Dziękuję za pomoc i pozdrawiam index.php Kod <?PHP echo '<?xml version="1.0" encoding="iso-8859-2"?>'; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <script type="text/javascript" src="ajax.js"></script> <script type="text/javascript"> var ajax = new sack(); function getCityList(sel) { var countryCode = sel.options[sel.selectedIndex].value; document.getElementById('dhtmlgoodies_city').options.length = 0; // Empty city select box if(countryCode.length>0){ ajax.requestFile = 'getCities.php?countryCode='+countryCode; // Specifying which file to get ajax.onCompletion = createCities; // Specify function that will be executed after file has been found ajax.runAJAX(); // Execute AJAX function } } function createCities() { var obj = document.getElementById('dhtmlgoodies_city'); eval(ajax.response); // Executing the response from Ajax as Javascript code } </script> <title></title> </head> <body> <form action="" method="post"> <table> <tr> <td>Country: </td> <td><select id="dhtmlgoodies_country" name="dhtmlgoodies_country" onchange="getCityList(this)"> <option value="">Wybierz</option> <?PHP include 'mysql.class.php'; $a = new mysqli_db('localhost', 'user', 'pass', 'db'); $q = $a->query_select("SELECT DISTINCT kraj FROM test"); foreach($q as $i) { echo '<option value="'.$i['kraj'].'">'.$i['kraj'].'</option>'; } $a->__destruct(); ?> </select> </td> </tr> <tr> <td>City: </td> <td><select id="dhtmlgoodies_city" name="dhtmlgoodies_city"> </select> </td> </tr> </table> </form> </body> </html> getCities.php Kod <?php if(isset($_GET['countryCode'])) { include 'mysql.class.php'; $a = new mysqli_db('localhost', 'user', 'pass', 'db'); $q = $a->query_select("SELECT `id` , `miasto` FROM `test` WHERE `kraj` = '".mysql_real_escape_string($_GET['countryCode'])."'"); foreach($q as $i) { echo "obj.options[obj.options.length] = new Option('".$i['miasto']."','".$i['id']."'); "; } $a->__destruct(); } ?> mysql.class.php Kod <?php
class mysqli_db { public function __construct($host, $user, $password, $dbname) { // łączymy się z bazą danych IF(!$this->mysqli = new mysqli($host, $user, $password)) { $this->error = true; // W przypadku niepowodzenia połączenia wygeneruj wyjątek throw new Exception('Błąd Połączenia z Bazą Danych - '.$this->mysqli->error, $this->mysqli->errno); } // wybieramy bazę danych IF(!$this->mysqli->select_db($dbname)) { $this->error = true; // W przypadku niepowodzenia wybrania bazy wygeneruj wyjątek throw new Exception('Nie można wybrać bazy danych - '.$this->mysqli->error, $this->mysqli->errno); } // ustawiamy "tryb" transakcji dla tabel InnoDB $this->mysqli->autocommit(false); $this->mysqli->query('SET AUTOCOMMIT = 0'); $this->mysqli->query('BEGIN'); } // Wykonywanie zapytań nie zwracających wartości (nie-Select) public function query($query) { IF(!ereg('SELECT', $query) and !$this->error) { IF(!$result = $this->mysqli->query($query)) { $this->error = true; throw new Exception('Błąd wykonania zapytania - ('.$query.') - '.$this->mysqli->error, $this->mysqli->errno); } else { return true; } } } // Zapytania z SELECT zwrócą nam od razu tablicę asocjacyjną z wynikami public function query_select($query) { IF(!$this->error) { IF(!$result = $this->mysqli->query($query)) { $this->error = true; throw new Exception('Błąd wykonania zapytania - ('.$query.') - '.$this->mysqli->error, $this->mysqli->errno); } while($row = $result->fetch_assoc()) { $return[] = $row; } unset($result); unset($row); return $return; } } // ID pola autoincrement użyte w ostatnim zapytaniu INSERT public function insert_id() { return $this->mysqli->insert_id; } public function escape($string) { return $this->mysqli->real_escape_string($string); } // Destruktor, w przypadku błędów wszystkie zmiany będą cofnięte public function __destruct() { IF(!$this->error) { $this->mysqli->query('COMMIT'); } else { $this->mysqli->query('ROLLBACK'); } unset($this->mysqli); unset($this->error); } } ?> |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 23:03 |