Модуль Поиск по бд mysql joomla

ganibal90

Постоялец
Регистрация
9 Фев 2010
Сообщения
127
Реакции
8
Есть база mysql и собстенно пытаюсь сделать поиск по ней... но что то пошло не так....
есть таблица clients в ней поля tel и status. при совпадении с введеным tel выводиться соответстующие значение status
обработчик запроса do_search.php
PHP:
<?php
//получаем данные через $_POST
if (isset($_POST['search'])) {
    // подключаемся к базе
    $db = JFactory::getDBO;
    // никогда не доверяйте входящим данным! Фильтруйте всё!
    $word = mysql_real_escape_string($_POST['search']);
    // Строим запрос
    $sql = "SELECT status FROM clients WHERE tel LIKE '%" . $word . "%' ORDER BY status LIMIT 10";
    // Получаем результаты
    $row = $db->select_list($sql);
    if(count($row)) {
        $end_result = '';
        foreach($row as $r) {
            $result        = $r['status'];
            $bold          = '<span class="found">' . $word . '</span>';
            $end_result    .= '<li>' . str_ireplace($word, $bold, $result) . '</li>';
        }
        echo $end_result;
    } else {
        echo '<li>По вашему запросу ничего не найдено</li>';
    }
}
?>


и собственно поле ввода
PHP:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="my.css">

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">

$(function() {

    $(".search_button").click(function() {
        // получаем то, что написал пользователь
        var searchString    = $("#search_box").val();
        // формируем строку запроса
        var data            = 'search='+ searchString;

        // если searchString не пустая
        if(searchString) {
            // делаем ajax запрос
            $.ajax({
                type: "POST",
                url: "/modules/mod_lesson/do_search.php",
                data: data,
                beforeSend: function(html) { // запустится до вызова запроса
                    $("#results").html('');
                    $("#searchresults").show();
                    $(".word").html(searchString);
              },
              success: function(html){ // запустится после получения резуотатов
                    $("#results").show();
                    $("#results").append(html);
              }
            });
        }
        return false;
    });
});
</script>

</head>
<body>
<h3 style="text-align:center;">Поиск</h3>
<div id="container">
<div style="margin:20px auto; text-align: center;">
<form method="post" action="/modules/mod_lesson/do_search.php">
    <input type="text" name="search" id="search_box" class='search_box'/>
    <input type="submit" value="Поиск" class="search_button" /><br />
</form>
</div>
<div>

<div id="searchresults"><span class="word"></span></div>
<ul id="results" class="update">
</ul>

</div>
</div>

</body>
</html>
Вопрос почему не работает? где ошибка?
и вот еще нашол вот такую вещь
PHP:
$db = JFactory::getDbo();

// Create a new query object.
$query = $db->getQuery(true);

// Select all records from the user profile table where key begins with "custom.".
// Order it by the ordering field.
$query->select(array('user_id', 'profile_key', 'profile_value', 'ordering'));
$query->from('#__user_profiles');
$query->where('profile_key LIKE \'custom.%\'');
$query->order('ordering ASC');

// Reset the query using our newly populated query object.
$db->setQuery($query);

// Load the results as a list of stdClass objects.
$results = $db->loadObjectList();
Как это все слипить вместе?
 
Последнее редактирование:
Логи ошибок в студию.Гадать никто не будет по базе, которую никто не предоставил
 
javascript ошибки есть? Ajax ответ приходит?

Какой такой лог ошибок? зачем база для того чтобы найти ошибку в коде?
Затем, что информацию об ошибке проще прочитать, чем искать полутелепатически. Большинство ошибок падает либо в лог сервера, либо (JS/ajax запросы) просматривается в браузере.
 
переделал немного код и в отдельности его куски работают а вот как вывести результат что не удается
PHP:
<?php
//получаем данные через $_POST
if (isset($_POST['tel'])) {
    // подключаемся к базе
$db = JFactory::getDBO();
$query = "SELECT name, model, status FROM clients WHERE (tel='$tel')";
$db->setQuery($query);
$rows = $db->loadObjectList();
foreach ( $rows as $row )
{
echo "<table><tr>";
echo "<td>".$row->name,'  '."</td>"."<td>".$row->aparat,'  '."</td>"."<td>".$row->model,'  '."</td>"."<td>".$row->status,'  '."</td>";
echo "</tr></table>";
}
}
?>


и поиск
PHP:
<html>
<body>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">

$(function() {

    $(".search_button").click(function() {
        // получаем то, что написал пользователь
        var searchString    = $("#search_box").val();
        // формируем строку запроса
        var data            = 'tel='+ searchString;

        // если searchString не пустая
        if(searchString) {
            // делаем ajax запрос
            $.ajax({
                type: "POST",
                url: "modules/mod_lesson/do_search.php",
                data: data,
                beforeSend: function(html) { // запустится до вызова запроса
                    $("#results").html('');
                    $("#searchresults").show();
                    $(".tel").html(searchString);
              },
              success: function(html){ // запустится после получения резуотатов
                    $("#results").show();
                    $("#results").append(html);
              }
            });
        }
        return false;
    });
});
</script>

</head>
<h3 style="text-align:center;">Чтобы узнать состояние вашего устройства введите номер телефона</h3><br/>
<div style="margin:20px auto; text-align: center;">
<form method="post" action="modules/mod_lesson/do_search.php">
<input type="text" name="tel" id="search_box" class='search_box'>
<input type="submit" value="Поиск" class="search_button">
</form>
</div>
<div>

<div id="searchresults"> <span class="tel"></span></div>
<ul id="results" class="update">
</ul>

</div>
</body>
</html>
 
переделал немного код и в отдельности его куски работают а вот как вывести результат что не удается
Извиняйте если ошибся, но я понял то что вы пытаетесь соединить свой PHP файл с библиотекой Joomla.
Например, в приведенном вами примере файла do_search.php есть подключение к БД через класс Joomla
PHP:
$db = JFactory::getDBO;
Но в этом коде (do_search.php) нету подключения самой библиотеки Joomla.
 
Нужны логи ошибок с консоли js.

На время меняем if (isset($_POST['tel'])) { на if (isset($_REQUEST['tel'])) {
и заходим по ссылке
Адрессайта/modules/mod_lesson/do_search.php?tel=123

Что видим? Если ничего, значит можно дописать еще вывод ошибок или смотреть в логе.

Еще момент, в js коде надо поправить
url: "modules/mod_lesson/do_search.php",
на
url: "/modules/mod_lesson/do_search.php",

т.к. обращение идет к адресу относительно текущего url
 
Извиняйте если ошибся, но я понял то что вы пытаетесь соединить свой PHP файл с библиотекой Joomla.
Например, в приведенном вами примере файла do_search.php есть подключение к БД через класс Joomla
PHP:
$db = JFactory::getDBO;
Но в этом коде (do_search.php) нету подключения самой библиотеки Joomla.
Да но все работает... если заменить $tel на заведомо правитьный телефон то все ищется и прекрасно выводится
просто мне нужно либо заменить стоки
PHP:
echo "<table><tr>";
echo "<td>".$row->name,'  '."</td>"."<td>".$row->aparat,'  '."</td>"."<td>".$row->model,'  '."</td>"."<td>".$row->status,'  '."</td>";
echo "</tr></table>";
на что то в стиле
PHP:
    if(count($row)) {
        $end_result = '';
        foreach($row as $r) {
            $result        = $r['status'];
            $bold          = '<span class="found">' . $word . '</span>';
            $end_result    .= '<li>' . str_ireplace($word, $bold, $result) . '</li>';
        }
        echo $end_result;
либо подружить
PHP:
            // делаем ajax запрос
            $.ajax({
                type: "POST",
                url: "modules/mod_lesson/do_search.php",
                data: data,
                beforeSend: function(html) { // запустится до вызова запроса
                    $("#results").html('');
                    $("#searchresults").show();
                    $(".tel").html(searchString);
              },
              success: function(html){ // запустится после получения резуотатов
                    $("#results").show();
                    $("#results").append(html);
              }
с тем кодом что уже есть
Нужны логи ошибок с консоли js.

На время меняем if (isset($_POST['tel'])) { на if (isset($_REQUEST['tel'])) {
и заходим по ссылке
Адрессайта/modules/mod_lesson/do_search.php?tel=123

Что видим? Если ничего, значит можно дописать еще вывод ошибок или смотреть в логе.

Еще момент, в js коде надо поправить
url: "modules/mod_lesson/do_search.php",
на
url: "/modules/mod_lesson/do_search.php",

т.к. обращение идет к адресу относительно текущего url

Да нету у меня логов и где вам их найти незнаю... успокойтесь с этими логами
немного выше расказал где конкретно загвоздка там осталось одну строку переписать
 
Да нету у меня логов и где вам их найти незнаю... успокойтесь с этими логами
Если хотите чтобы вам кто-то помог, то предоставьте пожалуйста либо логи ошибок, либо все файлы модуля с БД.
 
Если хотите чтобы вам кто-то помог, то предоставьте пожалуйста либо логи ошибок, либо все файлы модуля с БД.
ок вопрос где нарисовать вам логи? и кстати какие логи могут быть есль я просто немогу сообразить как этим
PHP:
  // делаем ajax запрос
            $.ajax({
                type: "POST",
                url: "modules/mod_lesson/do_search.php",
                data: data,
                beforeSend: function(html) { // запустится до вызова запроса
                    $("#results").html('');
                    $("#searchresults").show();
                    $(".tel").html(searchString);
              },
              success: function(html){ // запустится после получения резуотатов
                    $("#results").show();
                    $("#results").append(html);
              }
вывести вот это
PHP:
echo "<table><tr>";
echo "<td>".$row->name,'  '."</td>"."<td>".$row->aparat,'  '."</td>"."<td>".$row->model,'  '."</td>"."<td>".$row->status,'  '."</td>";
echo "</tr></table>";
 
Назад
Сверху