1. Уважаемые пользователи, прежде чем ответить в теме или создать новую,
    внимательно ознакомьтесь с правилами раздела

    Кому лень работать или руки не оттуда - пользуйтесь услугами специалистов
  2. Не задавайте глупых вопросов "Посоветуйте какой-нибудь компонент.."

    Есть JED!!! Ищите там!!!

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

Тема в разделе "Joomla", создана пользователем ganibal90, 14 окт 2013.

Информация :
  • Уважаемые пользователи, прежде чем ответить в теме или создать новую, внимательно ознакомьтесь с правилами раздела
  • Не задавайте глупых вопросов "Посоветуйте какой-нибудь компонент.." Есть JED!!! Ищите там!!!
  • Аналоги ищите там же - на JED!!!
  • Новая версия? - У кого будет - тот выложит!
Модераторы: arman29, DMS, NightHunter
  1. ganibal90

    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();
    Как это все слипить вместе?
     
    Последнее редактирование: 14 окт 2013
  2. Genk0

    Genk0

    Регистр.:
    2 июн 2010
    Сообщения:
    10
    Симпатии:
    11
    Логи ошибок в студию.Гадать никто не будет по базе, которую никто не предоставил
     
    Sorcus нравится это.
  3. ganibal90

    ganibal90 Постоялец

    Регистр.:
    9 фев 2010
    Сообщения:
    127
    Симпатии:
    8
    Какой такой лог ошибок? зачем база для того чтобы найти ошибку в коде?
     
  4. esche

    esche

    Регистр.:
    9 авг 2009
    Сообщения:
    359
    Симпатии:
    243
    javascript ошибки есть? Ajax ответ приходит?

    Затем, что информацию об ошибке проще прочитать, чем искать полутелепатически. Большинство ошибок падает либо в лог сервера, либо (JS/ajax запросы) просматривается в браузере.
     
  5. ganibal90

    ganibal90 Постоялец

    Регистр.:
    9 фев 2010
    Сообщения:
    127
    Симпатии:
    8
    переделал немного код и в отдельности его куски работают а вот как вывести результат что не удается
    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>
     
  6. demolg

    demolg

    Регистр.:
    13 авг 2007
    Сообщения:
    230
    Симпатии:
    76
    Извиняйте если ошибся, но я понял то что вы пытаетесь соединить свой PHP файл с библиотекой Joomla.
    Например, в приведенном вами примере файла do_search.php есть подключение к БД через класс Joomla
    PHP:
    $db JFactory::getDBO;
    Но в этом коде (do_search.php) нету подключения самой библиотеки Joomla.
     
  7. Delfi

    Delfi Создатель

    Регистр.:
    16 июн 2011
    Сообщения:
    45
    Симпатии:
    11
    Нужны логи ошибок с консоли 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
     
  8. ganibal90

    ganibal90 Постоялец

    Регистр.:
    9 фев 2010
    Сообщения:
    127
    Симпатии:
    8
    Да но все работает... если заменить $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",
                    
    datadata,
                    
    beforeSend: function(html) { // запустится до вызова запроса
                        
    $("#results").html('');
                        $(
    "#searchresults").show();
                        $(
    ".tel").html(searchString);
                  },
                  
    success: function(html){ // запустится после получения резуотатов
                        
    $("#results").show();
                        $(
    "#results").append(html);
                  }
    с тем кодом что уже есть
    Да нету у меня логов и где вам их найти незнаю... успокойтесь с этими логами
    немного выше расказал где конкретно загвоздка там осталось одну строку переписать
     
  9. demolg

    demolg

    Регистр.:
    13 авг 2007
    Сообщения:
    230
    Симпатии:
    76
    Если хотите чтобы вам кто-то помог, то предоставьте пожалуйста либо логи ошибок, либо все файлы модуля с БД.
     
    Genk0 нравится это.
  10. ganibal90

    ganibal90 Постоялец

    Регистр.:
    9 фев 2010
    Сообщения:
    127
    Симпатии:
    8
    ок вопрос где нарисовать вам логи? и кстати какие логи могут быть есль я просто немогу сообразить как этим
    PHP:
      // делаем ajax запрос
                
    $.ajax({
                    
    type"POST",
                    
    url"modules/mod_lesson/do_search.php",
                    
    datadata,
                    
    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>";