За последние 24 часа нас посетили 16948 программистов и 1626 роботов. Сейчас ищут 1738 программистов ...

Объединение PHP запроса и скрипта autocomplete в одном файле

Тема в разделе "JavaScript и AJAX", создана пользователем Pumbaa, 25 янв 2018.

Метки:
  1. Pumbaa

    Pumbaa Новичок

    С нами с:
    17 янв 2018
    Сообщения:
    35
    Симпатии:
    2
    спасибо, документации за последние два дня я прочёл вагон, если нет конкретного предложения, то это вряд ли будет результативно
     
  2. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    А между тем - это важно. Потому как переменная существует только в рамках своей области видимости, а затем изничтожается сборщиком мусора. "Undefined variable" говорит о том, что переменной, которую ты выводишь уже к тому времени не существует (ну или имя набрано с ошибкой, такое тоже бывает). Соответственно способ, которым ты пытаешься её вывести уже не важен. В итоге получается, что способы эти скорее всего верны, надо лишь разобраться в том куда и почему пропала эта переменная.
     
  3. Pumbaa

    Pumbaa Новичок

    С нами с:
    17 янв 2018
    Сообщения:
    35
    Симпатии:
    2
    я уже писал, но повторюсь... я вставил РНР код из рабочего РНР файла, который кормит JSON массивом скрипт
    Код (Text):
    1. $(function() {          
    2.     $('#street').autocomplete({
    3.             source: street.php
    4.         });
    5.     }  
    6. );
    при этом, скрипт отлично читает передаваемый массив и вываливает всё мгновенно при вводе первой же буквы в поле street
    Теперь, после слияния кодов, я не могу вызвать строку
    Код (Text):
    1. echo json_encode(preg_grep($pattern, $array));
    из РНР части этого же area.php файла в его HTML часть... бред
    То есть, JSON массив уже сидит в этом файле, потому что я вижу его через
    Код (Text):
    1. echo '<p> id: ' . $row [0] . ' street ' . $row [1] . ' postcobe ' . $row [2] . ' id_dimos ' . $row [3] .' id_street ' . $row [4] . '</p>';
    только чуть выше, но забрать его в source: ???? я не могу... как он может уничтожиться, если я вижу это эхо на странице, выше формы... значит он живой, но автозаполнение его не видит
     
  4. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Открою секрет. Если ты видишь PHP код на сформированной странице, значит он не работает :)
     
  5. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Так, а можно весь код страницы целиком?
     
  6. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    абонент временно завис)
     
  7. Pumbaa

    Pumbaa Новичок

    С нами с:
    17 янв 2018
    Сообщения:
    35
    Симпатии:
    2
    уже отвис :)...
    --- Добавлено ---
    Лишние поля формы обрезал, но структура файла полностью сохранена:
    Код (Text):
    1. <?php
    2. require_once ("pg_conn.php");
    3. $array[]="";
    4. $qstreet = "SELECT
    5.             cmac.street.id,
    6.             cmac.street.street,
    7.             cmac.street.postcode,
    8.             cmac.street.id_dimos,
    9.             cmac.street.id_street
    10.             FROM
    11.             cmac.street";
    12.     $ress = pg_query ($qstreet);
    13.     while ( $row = pg_fetch_array ( $ress ) ) {
    14.     echo '<p> id: ' . $row [0] . ' street ' . $row [1] . ' postcobe ' . $row [2] . ' id_dimos ' . $row [3] .' id_street ' . $row [4] . '</p>';
    15.     $array[]=$row[1];
    16. }
    17. if (!empty($_GET['term']))
    18. {
    19.     $term = $_GET['term'];
    20.     $pattern = '/^'.preg_quote($term).'/iu';
    21.     echo json_encode(preg_grep($pattern, $array));
    22. }
    23. ?>
    24. <!DOCTYPE html>
    25. <html>
    26. <head>
    27. <meta charset="utf-8">
    28. <link rel="stylesheet" type="text/css" href="../../css/style.css" />
    29. <title></title>
    30. <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    31. <script src="//ajax.aspnetcdn.com/ajax/jquery.ui/1.10.3/jquery-ui.min.js"></script>
    32. <link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/jquery.ui/1.10.3/themes/sunny/jquery-ui.css">
    33. <script>
    34. $(function() {        
    35.     $('#street').autocomplete({      
    36.         source: '<?.......... ?>'
    37.         });
    38.     }
    39. );
    40. </script>
    41. </head>
    42.     <body>
    43.       <table>
    44.         <tbody>
    45.             <form method="post">    
    46.             <tr>
    47.             <td><label for="street">Street:</label></td>
    48.             <td><input type="text" placeholder="Street name" required="required" id="street" name="street" onchange="sendForm(this.form)"></td>
    49.             </tr>                
    50.         </form>
    51.     </tbody>
    52. </table>
    53. </body>
    54. </html>
    --- Добавлено ---
    если это поможет, могу дать ссылки на реальные страницы с формой... одна, работающая от внешнего файла и вторая с инкорпорированным
     
  8. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    PHP:
    1. <?php
    2. require_once ("pg_conn.php");
    3. $array[]="";
    4. $qstreet = "SELECT
    5.            cmac.street.id,
    6.            cmac.street.street,
    7.            cmac.street.postcode,
    8.            cmac.street.id_dimos,
    9.            cmac.street.id_street
    10.            FROM
    11.            cmac.street";
    12. $ress = pg_query ($qstreet);
    13. while ( $row = pg_fetch_array ( $ress ) ) {
    14.     $array[]=$row[1];
    15. }
    16. ?>
    17. <!DOCTYPE html>
    18. <html>
    19. <head>
    20. <meta charset="utf-8">
    21. <link rel="stylesheet" type="text/css" href="../../css/style.css" />
    22. <title></title>
    23. <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    24. <script src="//ajax.aspnetcdn.com/ajax/jquery.ui/1.10.3/jquery-ui.min.js"></script>
    25. <link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/jquery.ui/1.10.3/themes/sunny/jquery-ui.css">
    26. <script>
    27. $(function() {      
    28.     $('#street').autocomplete({    
    29.         source: '<?= json_encode($array) ?>'
    30.         });
    31.     }
    32. );
    33. </script>
    34. </head>
    35.     <body>
    36.       <table>
    37.         <tbody>
    38.             <form method="post">  
    39.             <tr>
    40.             <td><label for="street">Street:</label></td>
    41.             <td><input type="text" placeholder="Street name" required="required" id="street" name="street" onchange="sendForm(this.form)"></td>
    42.             </tr>              
    43.         </form>
    44.     </tbody>
    45. </table>
    46. </body>
    47. </html>
    ?
     
  9. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Код (Text):
    1. source: <?= json_encode($array) ?>
     
  10. Pumbaa

    Pumbaa Новичок

    С нами с:
    17 янв 2018
    Сообщения:
    35
    Симпатии:
    2
    @romach .. Прошу прощения, зашёл в офис, сразу не увидел ответа в почте и выложил код.
    Вставил:
    Код (Javascript):
    1. $(function() {      
    2.     $('#street').autocomplete({    
    3.         source: '<?= json_encode($array) ?>'
    4.         });
    5.     }
    6. );
    Ошибки не выдаёт, но и список не выпадает. В консоли виден весь список улиц:
    Код (Javascript):
    1. $(function() {          
    2.     $('#street').autocomplete({
    3.             source: '["","25 Martiou Street","Alexandreias Byway","Alexandreias Street","Alkiviadou Street","Anninou Mpampi Street","Christovasili Christou Street","Delfon Street","Ierolochiton Street","Kallas Marias Street","Kapetan Mitrousi Street","Kapetan Vangeli Street","Kornovou Street","Kritis Street","Laskaratou Street","Mela Natalias Street","Mousouri Street","Ormylias Street","Papandreou Georgiou Street","Papantoniou Zacharia Street","Skiathou Street","Sofouli Themistokli Byway","Sofouli Themistokli Street","Spetson Street","Sporadon Street","Thalitos Street","Typa Nestoros Street","Vafopoulou Georgiou Street","Vasilissis Olgas Avenue","Voga Kimonos Street"]'
    4.         });
    5.     }  
    6. );
    При вводе буквы, в консоли пишет:
    Код (Text):
    1. https://......
    2. Failed to load resource: the server responded with a status of 403 (Forbidden)
    3. -------------
    4. <html><head>
    5. <title>403 Forbidden</title>
    6. </head><body>
    7. <h1>Forbidden</h1>
    8. <p>You don't have permission to access /forms/pc/54646/[&quot;&quot;,&quot;25 Martiou Street&quot;,&quot;Alexandreias Byway&quot;,&quot;Alexandreias Street&quot;,&quot;Alkiviadou Street&quot;,&quot;Anninou Mpampi Street&quot;,&quot;Christovasili Christou Street&quot;,&quot;Delfon Street&quot;,&quot;Ierolochiton Street&quot;,&quot;Kallas Marias Street&quot;,&quot;Kapetan Mitrousi Street&quot;,&quot;Kapetan Vangeli Street&quot;,&quot;Kornovou Street&quot;,&quot;Kritis Street&quot;,&quot;Laskaratou Street&quot;,&quot;Mela Natalias Street&quot;,&quot;Mousouri Street&quot;,&quot;Ormylias Street&quot;,&quot;Papandreou Georgiou Street&quot;,&quot;Papantoniou Zacharia Street&quot;,&quot;Skiathou Street&quot;,&quot;Sofouli Themistokli Byway&quot;,&quot;Sofouli Themistokli Street&quot;,&quot;Spetson Street&quot;,&quot;Sporadon Street&quot;,&quot;Thalitos Street&quot;,&quot;Typa Nestoros Street&quot;,&quot;Vafopoulou Georgiou Street&quot;,&quot;Vasilissis Olgas Avenue&quot;,&quot;Voga Kimonos Street&quot;]
    9. on this server.</p>
    10. </body></html>
    Проверил права доступа к папке:
    Код (Text):
    1. [root@iotanet 54646]# cd /var/www/html/forms/pc
    2. [root@iotanet pc]# ls -l
    3. total 4
    4. drwxrwxr-x 2 apache apache 4096 Jan 26 12:24 54646
    С какого перепуга появился вопрос доступа, все файлы и папки принадлежат апачу и туда ничего не пишется, только читается... еще раз перепроверил и на всякий случай задал всем папкам и файлам в папке /forms и ниже chmod -R 775, но ошибка доступа не исчезла
     
  11. Pumbaa

    Pumbaa Новичок

    С нами с:
    17 янв 2018
    Сообщения:
    35
    Симпатии:
    2
    @romach ... Спасибо большое за практическую помощь, я пробовал аналогичную конструкцию
    Код (Text):
    1.  json_encode($array)
    , но безуспешно пытался вставить её с помощью echo, как советовали.
    Считаем вопрос закрытым, дальше буду разбираться с правами доступа.
    Надеюсь, кому-нибудь еще тоже пригодится это решение ;)
     
  12. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    @Pumbaa без кавычек надо:
    Код (Text):
    1. source: <?= json_encode($array) ?>
    я просто не могу отредактировать то сообщение.
     
    denis01 нравится это.
  13. Pumbaa

    Pumbaa Новичок

    С нами с:
    17 янв 2018
    Сообщения:
    35
    Симпатии:
    2
    denis01 и romach нравится это.
  14. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    А ты говоришь хамло)
    --- Добавлено ---
    Мы тут все простые ребята)
    Вот и тыкаем)
     
  15. Pumbaa

    Pumbaa Новичок

    С нами с:
    17 янв 2018
    Сообщения:
    35
    Симпатии:
    2
    я очень ответственный и честный человек, и абсолютно ни от кого не зависимый, поэтому имею привычку говорить то что вижу... если неправ, скажу, что неправ, не промолчу и буду тихо ненавидеть... а если молодец, всегда это скажу, тоже не промолчу... но если мне хамят, имею привычку бить мокрыми трусами по лицу, и я не злопамятный... злая память разрушает психику того кто злится и не выплёскивает эти эмоции, а в моём возрасте надо уже беречь себя :):):) ... у меня дети вашего возраста ;)
     
  16. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Главное, что мы все в итоге друг друга поняли )
     
  17. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    не хочу копаться в ситуации...
     
  18. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    это ж интернет, тут могут послать нахер ))
     
  19. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    тут и сам можешь послать, так что все честно)
     
  20. Pumbaa

    Pumbaa Новичок

    С нами с:
    17 янв 2018
    Сообщения:
    35
    Симпатии:
    2
    парни, просто не надо демонстрировать своё превосходство ни в чём, вы же не знаете с кем на самом деле вы разговариваете... будьте сдержанней и терпимей к людям, которые сегодня В ПРОГРАММИРОВАНИИ знают меньше вас, может вы в других вопросах им до коленок не достаёте... как говорил кот Леопольд... давайте жить дружно :):):)