Показать сообщение отдельно
  #4 (permalink)  
Старый 14.02.2016, 16:30
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Автокомплит, а вообще есть русское более правильное название этому - живой поиск. Пусть результатом вашего поиска пусть будет таблица, а не куча таблиц, если не список:

//если search.php обрабатывает только ajax запросы, то условие if(isset($_POST["queryString"])){ } убрать
//здесь уж тогда нужна проверка наличия запроса со своей страницы
//после соединения выполнять выполнение определяемое ключом запроса, можно switch, можно и if()   
switch(key($_POST)) {
    case 'queryString': $string = addCslashes(iconv("UTF-8", "cp1251", mysql_real_escape_string($_POST["queryString"])), '\%_');  //перереводите базу в utf 
                        $query = mysql_query("SELECT id,newtegs,title FROM dataz WHERE title LIKE '%$string%' ") or die ( 'Ошибка базы данных'); //нельзя вываливать ошибки SQL клиенту 
                        if(mysql_num_rows($query)) {
                            //цикл do ... while увиденный в каком-то мультике здесь совсем не нужен    
                            $t = '<table id="table">';
                            while($row = mysql_fetch_object($query)) $t .= '<tr data-ids="'.$row->id.'"><td>'.$row->id.'</td><td>'
                                                                            .htmlspecialchars($row->newtegs).'</td><td>'
                                                                            .htmlspecialchars($row->title).'</td></tr>';
                            exit($t . '</table>');
                        }
                        break;
    case 'id':          if($id = (int)$_POST['id']) {
                            //запрос на выборку записи по id
                        }
}


$myrow[newtegs] - то, что так работает, не означает, что так можно писать. Просто вашу ошибку РНР исправит сам, правильно $myrow['newtegs'].

На клиенте при получении списка по поиску, можно так:

function(data){
    if(!!data) {
        $("#autocomplete").html(data)
            .show()
            .find('table')
            .on('click', 'tr', function() {
                   $.post("search.php", {id : $(this).data('ids')}, function(data) {
                      //получение полной запрошенной записи 
                   })  
               })
    } else $("#autocomplete").html("<i>Нет результатов по введеному запросу)</i>").show();
}

Последний раз редактировалось laimas, 15.02.2016 в 15:58.
Ответить с цитированием