ОБСУЖДЕНИЕ

Привет всем помогите разобраться с живым поиском

17 сообщений1 просмотровЗакрыта
#1
Есть вот такой код помогите подправить так чтобы он выводил Название и id а не только название..

PHP
<?php

$db = mysqli_connect("localhost", "h137548_h137548_", "Q4v3Y5c8", "h137548_world") or die("Нет соединения с БД");
mysqli_set_charset($db, "utf8") or die("Не установлена кодировка соединения");


/**
* поиск автокомплит
**/
function search_autocomplete(){
global $db;
$search = trim(mysqli_real_escape_string($db, $_GET['term']));
$query = "SELECT Name FROM category WHERE Name LIKE '%{$search}%' LIMIT 10";
$count_category = mysql_result(mysql_query("SELECT COUNT(*) FROM `category`"));
$res = mysqli_query($db, $query);
$result_search = array();
while($row = mysqli_fetch_assoc($res)){
$result_search[] = array('label' => $row['Name']);
}
return $result_search;
}

if(!empty($_GET['term'])){
$search = search_autocomplete();
exit( json_encode($search) );
}

if(!empty($_GET['search'])){
echo "Поиск по запросу <b>{$_GET['search']}</b>...";
}
#2
Id и названия чего?
#3
SsTeam, В базе category есть id и name
Этот поиск ищет по name только
А нужно чтобы при выборе name он знал айди и при сохранении в другую таблицу он заносил id_category и name из той же category ..
#4
Pro100Monstr,
function search_autocomplete( ){
global $db;
$search = trim(mysqli_real_escape_string($db, $_GET['term']));
$query = "SELECT Name, id_category FROM category WHERE Name LIKE '%{$search}%' LIMIT 10";
// --- $count_category для чего?
$count_category = mysql_result(mysql_query("SELECT COUNT(*) FROM `category`"));
$res = mysqli_query($db, $query);
$result_search = array();
while($row = mysqli_fetch_assoc($res)){
$result_search[] =
array( 'name' => $row['Name'],
'id_category' => $row['id_category'] );
}
return $result_search;
}

if(!empty($_GET['term'])){
$search = search_autocomplete();
// --- Тут собственно ловим
exit( json_encode($search) );
}

echo "<a href='?term=TestName'>Поиск</a>";
// --- В поле name будет искать запись TestName
// --- И если да, то выведет значение поля id_category и соответственно содержание поля name. В данном случае TestName.
// --- А вообще есть лишнее. Зачем COUNT() что считаем?
// --- LIMIT 10 зачем лимитируем поиск?
#5
DoR, он почему то не чего не выводит вообще
#6
Pro100Monstr, Вот работающий пример.
Для ясности вырезал всё лишнее и прокомал.
Скачай архив и...
Старую таблицу category временно переименуй
Залей table.sql ну и собственно работаем с файлом test.php
#7
DoR, да пример работает, и большое спасибо но немного не так в базе category нет id_category есть только id и есть Name и есть форма в которой есть название, адрес живой поиск стоит на поле название тосеть поидее ввёл несколько букв из названия, выбрал с списка название ввёл адрес и он в другую таблицу site сохранил id_category которая была вибрана и её name. а пример начинаю подключать и он точки выводит какието а в низу пишется (No search results.)
#8
извиняюсь за не соблюдение знаков пунктуации.
#9
Условие в ответе на твоё смс(почта)
Но суть, предполагаю...
Данные поля Name в формате json
Значит перед тем как их искать, поле разобрать...
#10
Не решил проблему?
#11
SAYCODE, нет
#12
<?php

$db = mysqli_connect("localhost", "h137548_h137548_", "Q4v3Y5c8", "h137548_world") or die("Нет соединения с БД");
mysqli_set_charset($db, "utf8") or die("Не установлена кодировка соединения");


/**
* поиск автокомплит
**/
function search_autocomplete(){
global $db;
$search = trim(mysqli_real_escape_string($db, $_GET['term']));
//запрос к базе
$query = "SELECT * FROM category WHERE name LIKE '%{$search}%'";

$res = mysqli_query($db, $query);
//указываем масив в который сохраним поиск
$data = array();

while($row = mysqli_fetch_array($res)){
//выводим
$data[] = array('label' => $row['name']);
$data[] = array('label' => $row['id']);

}
return $data;
}

if(!empty($_GET['term'])){
$search = search_autocomplete();

exit( json_encode($search) );
}

if(!empty($_GET['search'])){
echo "Поиск по запросу <b>{$_GET['search']}</b>...";
}
#13
вот так работает но выводит всё в разных строках тоесть идёт имя следующей стокой её айди выбрать можно и то и то.

а нужно чтобы выводил в одну строку всё и наме и айди
#14
Тема была поднята автором по истечению 12 часов после последнего поста
#15
Всё разобрался !!!!!


надо выводить не одномерный масив а склеяный
// $data[] = array("label" => $row["1"]);
//$data[] = array('label' => $row['2']);
// $data[] = array('label' => $row['3']);
// $data[] = array('label' => $row['4']);
//$data[] = array('label' <= $row['</br>']);

вот так
$data[] = implode(' ', $row);
#16
без чёткого указания столбца который нужно вывести но с выше описанной функцией


while($row = mysqli_fetch_array($res)){



он будет выводить по многу раз одно и тоже в строчку по этому нужно сделать так



while($row = mysqli_fetch_assoc($res)){
#17
Тему закрыл Pro100Monstr!
Причина: решение найдено