Подскажите пожалуйста как изменить название источника source: при объединении в одном файле pg_query с получением и реформированием массива и скрипта autocomplete, которые сегодня работают в двух файлах: street.php: PHP: <?php require_once ("pg_conn.php"); $qstreet = "SELECT cmac.street.id, cmac.street.street, cmac.street.postcode, cmac.street.id_dimos, cmac.street.id_street FROM cmac.street"; $ress = pg_query ($qstreet); while ( $row = pg_fetch_array ( $ress ) ) { $array[]=$row[1]; } if (!empty($_GET['term'])) { $term = $_GET['term']; $pattern = '/^'.preg_quote($term).'/iu'; echo json_encode(preg_grep($pattern, $array)); } ?> area.html: HTML: <html> <head> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="../../css/style.css" /> <title></title> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="//ajax.aspnetcdn.com/ajax/jquery.ui/1.10.3/jquery-ui.min.js"></script> <link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/jquery.ui/1.10.3/themes/sunny/jquery-ui.css"> <script> $(function() { $('#street').autocomplete({ source: 'street.php' }); }); </script> </head> <body> <table> <tbody> <form method="post"> <tr> <td><label for="street">Street:</label></td> <td><input type="text" placeholder="Street name" required="required" id="street" name="street" onchange="sendForm(this.form)"></td> </tr> ----------------------- </form> </tbody> </table> </body> </html> чтобы в новом, объединённом файле area.php, в РНР части проходила выборка и создание массива, а скрипт вставлял его в выпадающий список, как-то типа этого, вместо ссылки на внешний файл: Код (Javascript): $(function() { $('#street').autocomplete({ source: ($pattern, $array) }); });
в чём конкретно затруднение? как отличить get-запрос на вывод страницы от get-запроса про список значений? https://www.google.ru/search?q=php+how+detect+ajax+query --- Добавлено --- или твоя цель в принципе не делать ajax запросы? тогда копай описание функции autocomplete. возможно есть нужные параметры.
вопрос в том, как передать полученный массив в source: ??? внутри файла, чтобы autocomplete его обработал
только я не уверен, что есть какой-то "массив source". строка c URL и массив значений это блин разные вещи. --- Добавлено --- начни с документации по этой функции. воможно есть ДРУГИЕ параметры для массива --- Добавлено --- хотя нет, она и массив скушает, судя по докам: http://api.jqueryui.com/autocomplete/ ну, ёмана, делай echo со значениями массива, чо как маленький!
))) может ты в тело страницы заглянешь, в конце концов, и увидишь, что ТАК echo не работает --- Добавлено --- <?php echo чтоугодно ?> или <?= чтоугодно ?>
текст не мой, работал до этого нормально, сейчас надо просто загнать всё в кучу, поэтому сильно не вникаю, потому что это попутная задача, потому что джумла не хочет видеть сторонний рнр из скрипта внутри Custom HTML модуля, поэтому и уродуюсь срастить коня и трепетную лань )))
это и так очевидно, что не твой ))) хочешь добавить в него ещё немного не твоего. ты либо как программист будешь двигаться, либо как работодатель программиста. выбирай сам. я тебе показал ЧТО нужно сделать чтобы echo работало и КАК проверить результат. не хочешь думать — плати. у нас есть разделы "фриланс" и "работа".
так программисты же и писали этот кривой код ))) ... называться программистом и быть им, две большие разницы ))))... за всю жизнь видел человека три, которые реально понимают что делают, все остальные, копипастеры, типа меня... так я за бесплатно копипастю, а они за это же бабки хотят ))) ... --- Добавлено --- собственно, задача факультативная, всё и так работает нормально, просто захотелось повыёживаться --- Добавлено --- P.S. я еще после программистов неделю причёсывал код, приводя его из просто рабочего, в прилично выглядящий )))
последняя попытка: специальные служебные слова <?php и ?> начинают и заканчивают код на PHP в исходном файле. то, что не является кодом PHP, просто выводится на страницу "как есть". в нём команды PHP не выполняются! следи за тем, где у тебя php и где не-php. смотри что фактически вывелось на страницу — не то что отрендерилось браузером, а что у него внутри — по Ctrl+U у тебя всё что нужно уже есть. только не косячь! вот и всё! --- Добавлено --- ты удалил камент, но я это по прежнему вижу: Код (Javascript): $(function() { $('#street').autocomplete({ source: echo json_encode(preg_grep($pattern, $array)) }); } ); здесь нет оператора php echo. здесь есть текст, который попадает на страницу буквально как есть: "source: echo json_…" ты понял или нет? используй <?php и ?>
я не специально удалил, хотел убрать дубляж текста, а удалился и код, а потом, судя по ответу, понял, что ты его уже видел и было влом снова вставлять
тоже не работает Код (Text): $(function() { $('#street').autocomplete({ source: <?php echo $pattern, $array; ?> // source: '<?php echo $pattern, $array; ?>' }); } ); результат из консоли ----------------- [code=JavaScript]$(function() { $('#street').autocomplete({ source: <br /> <b>Notice</b>: Undefined variable: pattern in <b>/var/www/html/forms/pc/54646/n54647_2.php</b> on line <b>81</b><br /> <br /> <b>Notice</b>: Array to string conversion in <b>/var/www/html/forms/pc/54646/n54647_2.php</b> on line <b>81</b><br /> Array }); } ); похоже что переменные из рнр не передаются в скрипт, ладно, фиг с ним, пускай работает как есть, и так убил кучу времени на эту примочку... а основная работа стоит
они точно никуда не передаются, т.к. код php выполняется на сервере. javascript выполняется в браузере. нет блин никакой передачи из пхп в жс в принципе! есть только вывод текста, который потом будет интерпретироваться так или иначе, в зависимости от места использования. сам пхп понятия не имеет ни про html, ни про js. Notice говорит о том, что этих переменных у тебя тупо нет в php, ты их не задал. значит нечего выводить в echo. --- Добавлено --- Посмотри: в том, исходном файле есть $pattern=… и $array=… а у тебя в "объединённом варианте" похоже этого нет. Вот откуда оно само возьмётся, ёманарот! Похоже программисты не зря деньги получают. Им думать приходится.
я конечно тупой, но не настолько )))) все переменные объявлены в РНР части кода, только мне непонятно, почему массив выводится только Код (Text): echo '<p> id: ' . $row [0] . ' street ' . $row [1] . ' postcobe ' . $row [2] . ' id_dimos ' . $row [3] .' id_street ' . $row [4] . '</p>'; а Код (Text): echo $array[]; ничего не выводит также как и Код (Text): echo $pattern; echo $array; да и Код (Text): echo json_encode(preg_grep($pattern, $array)); тоже ничего не показывает. а если они ничего не показывают в РНР части, то естественно ничего не будут показывать и в скрипте. Хотя в оригинальном варианте, всё работает как часы Код (Text): <?php require_once ("pg_conn.php"); $array[]=""; $qstreet = "SELECT cmac.street.id, cmac.street.street, cmac.street.postcode, cmac.street.id_dimos, cmac.street.id_street FROM cmac.street"; $ress = pg_query ($qstreet); while ( $row = pg_fetch_array ( $ress ) ) { echo '<p> id: ' . $row [0] . ' street ' . $row [1] . ' postcobe ' . $row [2] . ' id_dimos ' . $row [3] .' id_street ' . $row [4] . '</p>'; $array[]=$row[1]; } if (!empty($_GET['term'])) { $term = $_GET['term']; $pattern = '/^'.preg_quote($term).'/iu'; echo json_encode(preg_grep($pattern, $array)); } ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="../../css/style.css" /> <title></title> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="//ajax.aspnetcdn.com/ajax/jquery.ui/1.10.3/jquery-ui.min.js"></script> <link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/jquery.ui/1.10.3/themes/sunny/jquery-ui.css"> <script> $(function() { $('#street').autocomplete({ source: '<?php echo $pattern, $array; ?>' }); } ); </script> </head> <body> <table> <tbody> <form method="post"> <tr> <td><label for="street">Street:</label></td> <td><input type="text" placeholder="Street name" required="required" id="street" name="street" onchange="sendForm(this.form)"></td> </tr> </form> </tbody> </table> </body> </html> --- Добавлено --- наверное надо писать функцию, которая будет собирать всё до кучи и создавать отдельную переменную в скрипте, которая и будет выводить результат, но это уже буду разбираться, когда будет свободное время... думал что побыренькому сращу и запихну в джумлу, только из-за контроля доступа к формам, чтобы кто попадя там ничего не правил ))) --- Добавлено --- удали сам дубликат кода, а то я опять убью весь коммент )))
просто я быстро учусь ))) ... и в этом случае у @artoodetoo нет хамского менторского тона как у @romach, так что я просто принял правила игры, легкого дружеского трёпа... почувствуйте разницу
наверное да, мы же говорим о присутствующих на форумах, а не о тех, кто работает на IT компании и не заходят на форумы. Я профессионал совсем в другой сфере, в программировании я любитель, мне просто нравится воплощать свои задумки в веб решениях с базой данных, но если меня спрашивают конкретный совет по конкретному вопросу в моей профессиональной области, я не начинаю учить человека жизни, а просто отвечаю максимально конкретно, чтобы не тратить его и своё время понапрасну... всё знать невозможно, да и не нужно, некоторые вещи достаточно понять на одном своём примере, а не лопатить гугл тоннами, чтобы найти пару строчек кода, как правило, большинство решений и находятся в этих паре строчек. А тут я получаю только абстрактные советы, да, это направляет мысль... это как вы пришли к доктору, а он Вам начал рассказывать о мировых тенденциях в медицине и общей практике лечения заболеваний с похожими симптомами ... хотя доктора нынче тоже такие
не замечал хамства за Ромачем. Он всегда высказывается очень конструктивно. тут так не получится. тут тянешь за ниточку и вываливается целый клубок, который лень распутывать) не нужно быть плотником, чтобы понимать как устроен деревянный стул. но в IT внешний вид вещей и их устройство отличаются кардинально)
Всё верно, это подход о котором я и сказал... теоретические рассуждения, это для института, а форум, для практических советов. У меня не стоит задача стать специалистом по JSON и JavaScript, мне надо решить маленькую конкретных задачу, чтобы паровоз поехал дальше и больше в жизни я, наверное, не столкнусь с ними именно в этом ракурсе, а если и столкнусь, то всегда смогу обратиться к архиву и посмотреть на решение... как впрочем и еще пару сотен человек, смогут увидеть это решение на этом форуме. Такого вопроса нет в поиске, поэтому я и обратился за советом к профессионалам... а тут начались лекции ... но, не работает тот способ через <?php echo ... ?> Не видит скрипт переменной из РНР, тупо пишет Код (Text): Undefined variable: Даже через создание отдельной переменной Код (Text): $ac = preg_grep($pattern, $array); // $ac = echo json_encode(preg_grep($pattern, $array)); echo json_encode ($ac); -------------- <script> var st = <?php echo json_encode ($ac); ?>; -------------- <script> var st = <br /> <b>Notice</b>: Undefined variable: ac in <b>/var/www/html/forms/pc/54646/n54647_2.php</b> on line <b>79</b><br /> null; ------------- <script> var st = '<?php echo json_encode ($ac); ?>'; ------------- <script> var st = '<br /> <b>Notice</b>: Undefined variable: ac in <b>/var/www/html/forms/pc/54646/n54647_2.php</b> on line <b>79</b><br /> null'; и еще 1001 вариант комбинаций не работают Это как ты стоишь перед витриной в магазине, видишь бутылку виски, но прямо с витрины взять не можешь ... только с заднего двора Если можете предложить другое решение, буду признателен
Я бы кинул ссылку на раздел документации по области видимости переменных, но нынче это считается хамством, эх ))