PHP json_encode

Pokrowsky

Новичок
Всем привет! Есть инпут:

Код:
<form action='' method='post'>
  City name <br /><br />
  <input type='text' name='search' value='' class='auto'>
</form>
Потом его ява-скрипт:

Код:
<script type="text/javascript">
  $(function() {

    //autocomplete
    $(".auto").autocomplete({
        source: "search.php",
        minLength: 1
    });

  });
</script>
Вот это search.php куда нас посылает ява-скрипт:

PHP:
if(isset($_GET['term']))
    {
        $city = array();
        $airport = array();
        $citysearchsql = mysqli_query(db(),"SELECT * FROM citycode WHERE cityname LIKE '%".$_GET['term']."%' ");
        while($citysearchresult = mysqli_fetch_array($citysearchsql))
        {



            $airnamesql = mysqli_query(db(),"SELECT * FROM airports WHERE citycode='".$citysearchresult['citycode']."' ");
            while($airnameresult = mysqli_fetch_array($airnamesql))
            {
                $airport[] = $airnameresult['airportname'];
            }
            $city[] = $citysearchresult['cityname'];
        }
       
       echo json_encode(array_merge($city,$airport));

    }
Все это вместе получается автокомплит с пчп и базой мускуль. В базе есть 2 таблицы "citycode" и "airports" Ответы выходят в инпуте
HTML:
<input type='text' name='search' value='' class='auto'>
. Там выходит город и его аэропорты. Но они выходят просто тупо в список. Вот тут можно глянуть http://joxi.ru/12MBoP7s4DDj4A , но мне нужно вот так http://joxi.ru/krD8oY1u0Nb0kr , то есть мне нужно чтоб при показывании города его аэропорты были хотя бы на 10-15px левее. Но ответ в файле search.php получается в json_encode($city). А как туда приписать html теги, вот этого я не знаю. Ну попробовал примеры из Гугла, но то ли не понял, то ли не то, то ли не смог. Вообщем Помогите.
 
Последнее редактирование:

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
тэги надо "приписывать" в шаблоне, а не в php коде
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
я имею в виду в шаблоне, где ты выводишь данные и формируешь html разметку
 

Pokrowsky

Новичок
я имею в виду в шаблоне, где ты выводишь данные и формируешь html разметку
Данные формируются тут
PHP:
echo json_encode(array_merge($city,$airport));
и автоматом выводятся тут
HTML:
<input type='text' name='search' value='' class='auto'>
.
 
Последнее редактирование:

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
@Pokrowsky, понятно, но они не выводятся, где у тебя вывод данных в разметку? Ты где-то должен формировать свой список аэропортов, вот в этом месте и правь разметку. К php вопрос отношения не имеет.
 

Pokrowsky

Новичок
@Pokrowsky, понятно, но они не выводятся, где у тебя вывод данных в разметку? Ты где-то должен формировать свой список аэропортов, вот в этом месте и правь разметку. К php вопрос отношения не имеет.
Дак список аэропортов в базе, вот код который тянет список городов а потом и аэропортов
PHP:
if(isset($_GET['term']))
    {
        $city = array();
        $airport = array();
        $citysearchsql = mysqli_query(db(),"SELECT * FROM citycode WHERE cityname LIKE '%".$_GET['term']."%' ");
        while($citysearchresult = mysqli_fetch_array($citysearchsql))
        {

            $airnamesql = mysqli_query(db(),"SELECT * FROM airports WHERE citycode='".$citysearchresult['citycode']."' ");
            while($airnameresult = mysqli_fetch_array($airnamesql))
            {
                $airport[] = $airnameresult['airportname'];
            }
            $city[] = $citysearchresult['cityname'];
        }
      
       echo json_encode(array_merge($city,$airport)); // Вот тут уже и формируется ответ. Я нигде не могу что то перехватывать. возможно это все где то делается в библиотеке
                                                //<script src="jquery-ui.min.js"></script>

    }
Вот так. А там просто библиотека с тучей кода. туда лезть надо разбираться с написанием билиотек
 
Последнее редактирование:

AnrDaemon

Продвинутый новичок
Забудь про свой json_encode.
Чини то место, где у тебя форма формируется и обрабатывается.
 

Pokrowsky

Новичок
Забудь про свой json_encode.
Чини то место, где у тебя форма формируется и обрабатывается.
То есть тут
PHP:
if(isset($_GET['term']))
    {
        $city = array();
        $airport = array();
        $citysearchsql = mysqli_query(db(),"SELECT * FROM citycode WHERE cityname LIKE '%".$_GET['term']."%' ");
        while($citysearchresult = mysqli_fetch_array($citysearchsql))
        {

            $airnamesql = mysqli_query(db(),"SELECT * FROM airports WHERE citycode='".$citysearchresult['citycode']."' ");
            while($airnameresult = mysqli_fetch_array($airnamesql))
            {
                $airport[] = $airnameresult['airportname'];
            }
            $city[] = $citysearchresult['cityname'];
        }
     
      echo json_encode(array_merge($city,$airport));// Вот тут уже и формируется ответ. Я нигде не могу что то перехватывать. возможно это все где то делается в библиотеке
                                                //<script src="jquery-ui.min.js"></script>

    }
Если ты про это место, то там я уже пробывал. Мне надо хотя бы &nbsp; приписывать http://joxi.ru/Vm6v185SxeG15m
 
Последнее редактирование:

AnrDaemon

Продвинутый новичок
Вообще про этот код забудь. Он свою задачу выполняет.
Голову включи уже…
Твой JSON идёт в твою форму. Вот её и лечи.
 

Pokrowsky

Новичок
Вообще про этот код забудь. Он свою задачу выполняет.
Голову включи уже…
Твой JSON идёт в твою форму. Вот её и лечи.
Вот тут то я и не знаю как прописывать html код в JSON. Я вообще с этим впервые сталкиваюсь JSON, ребят помогите а.
 

AmdY

Пью пиво
Команда форума
PHP:
echo "var foo = JSON.parse('" . json_encode($city) . "')";
 

antson

Новичок
Партнер клуба
@Pokrowsky, все что ты тут описал.
Это половина аяксовского поиска. Место ввода ты нашел. Что дергается и возвращается сервером тоже. Теперь в js найди как полученные данные дальше обрабатываются.
А сдвинуть чуть в сторону проще через правку css стиля.
 

Pokrowsky

Новичок
@Pokrowsky, все что ты тут описал.
Это половина аяксовского поиска. Место ввода ты нашел. Что дергается и возвращается сервером тоже. Теперь в js найди как полученные данные дальше обрабатываются.
А сдвинуть чуть в сторону проще через правку css стиля.
В js ты имеешь ввиду в библиотеке, потому что js файл тока библиотека. Стиль тоже тока в js библиотеке. туда лезть надо хорошо разбираться в js. Я тока на пчп пишу. js все это подбираю себе в интернете как кстати и с этим случаем.

Вообщем я понял что у меня тяжелый случай.
 

antson

Новичок
Партнер клуба
инспектор в броузере надеюсь освоил ? если у аэропорта верстка отличается от города . то css селекторами можно обойтись.
 

antson

Новичок
Партнер клуба
$citysearchsql = mysqli_query(db(),"SELECT * FROM citycode WHERE cityname LIKE '%".$_GET['term']."%' "); - здесь sql уязвимость
 

Pokrowsky

Новичок
инспектор в броузере надеюсь освоил ? если у аэропорта верстка отличается от города . то css селекторами можно обойтись.
Нет, там все под одно. Думаю надо как то правильно забить запрос из базы, чтоб json_encode тянул как бы лесинкой, тока вот как заставить json_encode это делать. У меня вот с json_encode проблемы. Вообще первый раз с ним повстречался
 

fixxxer

К.О.
Партнер клуба
У тебя проблема не с json_encode, а с пониманием происходящего.
Какие, нафиг, html теги?
json_encode просто преобразует php-массив в json-представление, понятное джаваскрипту. Дергай свой search.php вручную и смотри, чтобы получался нормальный json-ответ.
В джаваскрипте ты в результате выполнения ajax-запроса получаешь эти данные (уже сразу в виде js-объекта), а там уже джаваскриптом делай с этими данными на стороне клиента все, что тебе надо.
 
Сверху