![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 4.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam wszystkich na forum.
To jest moj pierwszy post i mam do was pytanie. Chciałbym zrobić wyszukiwarke do sklepiku internetowego opartego o Ajax z funkcją suggest. Miała by ona działać w następujący sposób: wpisuje literke pojawia się uzupełnienie nazwy danego autora, produktu itp. Gdy juz wyświetli się interesująca mnie nazwa klikam na nią i zostaję przekierowany na konkretną stronę z danym produktem lub autorem badź kategoriami Sklep jest oparty o Mysql i PHP w wersjach 5, szablon Smarty. Jestem laikiem w Ajaksie. Widziałem coś podobnego w książce "Ajax i PHP interaktywne aplikacje internetowe" ale tu zostaje przekierowany na strone php.net z opisem funkcji php. A mnie interesuje zeby przekierować na konkretną stronę np.: autora produkutu, kategorii lub wyświetliła się strona z konkretnym produktem. Czy jest to możliwe do wykonania. Muszę pewnie stworzyć tabelę w bazie z wszystkimi nazwami autorów, produktów oraz kategorii, czy powinienem stworzyć nową oddzielną bazę danych gdzie przez JavaScript odbywały by się przekierowania do tej bazy lub konkretnych stron autorów(kategorii) i produkutów, ale nie jestm pewien. Prosiłbym o pomoc jak to wykonać, zaczynając od mysql , php i na ajax skonczywszy. Jeśli jest to możliwe interesuje mnie kod z góry dziękuję i pozdrawiam. Ten post edytował wampo 12.10.2007, 18:20:46 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 675 Pomógł: 15 Dołączył: 7.11.2004 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Jeśli jest to możliwe interesuje mnie kod z góry dziękuję i pozdrawiam. Kod znajdziesz albo w wymienionej książce, albo na forum (były rozwiązywane problemu typu "Google suggest"). Każdy kod będziesz musiał przerobić, nie oczekuj gotowców.
-------------------- Kto pyta, nie błądzi...
Kto zbłądził, ten pyta... |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 4.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Wiem. I nie oczekuję. Jak pisałem nie znam ajaksa. Ale jak w tym wypadku zmienić zeby wystąpiło odwołanie do konkretnej strony z danym produktem, do danej kategorii czy producenta. W podanej przeze mnie książce nie ma tego. A chciałbym uzyskac efekt jaki przedstawiłem powyżej.
Ostatnio znalazłem takie coś 1.plik searchSuggest.php CODE //Send some headers to keep the user's browser from caching the response. header("Expires: Mon, 26 Jul 1997 05:00:00 GMT" ); header("Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . "GMT" ); header("Cache-Control: no-cache, must-revalidate" ); header("Pragma: no-cache" ); header("Content-Type: text/xml; charset=utf-8"); //Get our database abstraction file require('database.php'); ///Make sure that a value was sent. if (isset($_GET['search']) && $_GET['search'] != '') { //Add slashes to any quotes to avoid SQL problems. $search = addslashes($_GET['search']); //Get every page title for the site. $suggest_query = db_query("SELECT distinct(title) as suggest FROM page WHERE title like('" . $search . "%') ORDER BY title"); while($suggest = db_fetch_array($suggest_query)) { //Return each page title seperated by a newline. echo $suggest['suggest'] . "\n"; } } ?> 2. plik ajax_search.js: CODE //Gets the browser specific XmlHttpRequest Object function getXmlHttpRequestObject() { if (window.XMLHttpRequest) { return new XMLHttpRequest(); } else if(window.ActiveXObject) { return new ActiveXObject("Microsoft.XMLHTTP"); } else { alert("Your Browser Sucks!\nIt's about time to upgrade don't you think?"); } } //Our XmlHttpRequest object to get the auto suggest var searchReq = getXmlHttpRequestObject(); //Called from keyup on the search textbox. //Starts the AJAX request. function searchSuggest() { if (searchReq.readyState == 4 || searchReq.readyState == 0) { var str = escape(document.getElementById('txtSearch').value); searchReq.open("GET", 'searchSuggest.php?search=' + str, true); searchReq.onreadystatechange = handleSearchSuggest; searchReq.send(null); } } //Called when the AJAX response is returned. function handleSearchSuggest() { if (searchReq.readyState == 4) { var ss = document.getElementById('search_suggest') ss.innerHTML = ''; var str = searchReq.responseText.split("\n"); for(i=0; i < str.length - 1; i++) { //Build our element string. This is cleaner using the DOM, but //IE doesn't support dynamically added attributes. var suggest = '<div onmouseover="java script:suggestOver(this);" '; suggest += 'onmouseout="java script:suggestOut(this);" '; suggest += 'onclick="java script:setSearch(this.innerHTML);" '; suggest += 'class="suggest_link">' + str[i] + '</div>'; ss.innerHTML += suggest; } } } //Mouse over function function suggestOver(div_value) { div_value.className = 'suggest_link_over'; } //Mouse out function function suggestOut(div_value) { div_value.className = 'suggest_link'; } //Click function function setSearch(value) { document.getElementById('txtSearch').value = value; document.getElementById('search_suggest').innerHTML = ''; } 3. plik database.php CODE <?php //Make the database connection. db_connect() or die('Unable to connect to database server!'); //You will need to replace the parameters below with the values for your database connection //server = the database server (usually localhost). //username = The user name to connect to the database. //password = The password to connect to the database. function db_connect($server = 'your server', $username = 'your username', $password = 'your password', $database = 'your database', $link = 'db_link') { global $link; $link = mysql_connect($server, $username, $password); if ($link) mysql_select_db($database); return $link; } //Function to handle database errors. function db_error($query, $errno, $error) { die('<font color="#000000"><b>' . $errno . ' - ' . $error . '<br><br>' . $query . '<br><br><small><font color="#ff0000">[STOP]</font></small><br><br></b></font>'); } //Function to query the database. function db_query($query, $link = 'db_link') { global $link; $result = mysql_query($query, $link) or db_error($query, mysql_errno(), mysql_error()); return $result; } //Get a row from the database query function db_fetch_array($db_query) { return mysql_fetch_array($db_query, MYSQL_ASSOC); } //The the number of rows returned from the query. function db_num_rows($db_query) { return mysql_num_rows($db_query); } //Get the last auto_increment ID. function db_insert_id() { return mysql_insert_id(); } //Add HTML character incoding to strings function db_output($string) { return htmlspecialchars($string); } //Add slashes to incoming data function db_input($string, $link = 'db_link') { global $link; if (function_exists('mysql_real_escape_string')) { return mysql_real_escape_string($string, $link); } elseif (function_exists('mysql_escape_string')) { return mysql_escape_string($string); } return addslashes($string); } ?> Mam problem z połączeniem sie z bażą mysql, korzystam z Pear (DB.php). Co zmienić zeby natąpiło połączenie z moją bazą w pliku searchSuggest.php. W tym pliku podaję ścieżkę do plików konfiguracyjnyh i dostęp do bazy (podaję w require('include/connect.php') ale wyskakuje mi błąd ze brak wymaganej biblioteki Pear DB Oto moje pliki 1 connect.php CODE <?php //buforowanie danych ob_start(); //aktywacja sesji session_start(); //--włączenie modułów-- require_once 'config.inc.php'; require_once 'obsluga_bledow.php'; require_once 'setup_smarty.php'; //Nawiązanie połączenie z bazą danych require_once 'database.php'; $gDbManager = new DbManager(MYSQL_CONNECTION_STRING); ?> 2 database.php: CODE ?php //Dołączenie biblioteki PEAR_DB require_once 'DB.php'; //klasa dostępu do bazy danych class DbManager { public $db; //zdefiniowanie konstruktora function __construct($connectionString) { $this->db = DB::connect($connectionString, USE_PERSISTENT_CONNECTIONS); if (DB::isError($this->db)) trigger_error($this->db->getMessage(), E_USER_ERROR); $this->db->setFetchMode(DB_FETCHMODE_ASSOC); } //koniec połączenia z bazą dnych public function DbDisconnect() { $this->db->disconnect(); } //--Realizowanie zapytan typu INSERT, DELETE, UPDATE-- //funkcja DBQuery biblioteki PEAR_DB public function DbQuery($queryString) { $wynik = $this->db->query($queryString); if (DB::isError($wynik)) trigger_error($wynik->getMessage(), E_USER_ERROR); return $wynik; } //funkcja getALL() biblioteki PEAR_DB public function DbGetAll($queryString) { $wynik = $this->db->getAll($queryString); if (DB::isError($wynik)) trigger_error($wynik->getMessage(). E_USER_ERROR); return $wynik; } //Funkcja getRow() biblioteki PEAR_DB /* udostępnianie pojedynczego wiersza danych za pomocą zapytania SELECT z bazy danych */ public function DbGetRow($queryString) { $wynik = $this->db->getRow($queryString); if (DB::isError($wynik)) trigger_error ($wynik->getMessage(), E_USER_ERROR); return $wynik; } //Funkcja DbGetOne biblioteki PEAR_DB /* pobieranie pojedynczych wartośći zwracanych przez zapytanie SELECT z bazy danych */ public function DbGetOne($queryString) { $wynik = $this->db->getOne($queryString); if (DB::isError($wynik)) trigger_error($wynik->getMessage(), E_USER_ERROR); return $wynik; } /*Funkcja DbEscapeSimple->wywołanie metody escapeSimple niestandardowe znaki(cudzysłów lub apostrof) w stringach zastępowane są symbolami odopowiednimi dla MYSQL */ public function DbEscapeSimple($string) { if (get_magic_quotes_gpc()) return $string; else return $this->db->escapeSimple($string); } } ?> Ten post edytował wampo 12.10.2007, 18:25:32 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 12:31 |