Пользовательский интерфейс jQuery - изменение источника данных MySQL - PullRequest
0 голосов
/ 26 ноября 2011

Я пытаюсь создать несколько полей для автозаполнения на веб-странице.У меня есть 2 рабочих, один с использованием локального массива в качестве источника, а другой с использованием страницы с именем search.php, но тот, который использует search.php не работает.

Вот код для базовой страницы:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>jQuery UI Autocomplete - Remote datasource</title>
    <link rel="stylesheet" href="../../themes/base/jquery.ui.all.css">
    <script src="../../jquery-1.6.2.js"></script>
    <script src="../../ui/jquery.ui.core.js"></script>
    <script src="../../ui/jquery.ui.widget.js"></script>
    <script src="../../ui/jquery.ui.position.js"></script>
    <script src="../../ui/jquery.ui.autocomplete.js"></script>
    <link rel="stylesheet" href="../demos.css">
    <style>
    .ui-autocomplete-loading { background: white url('images/ui-anim_basic_16x16.gif') right center no-repeat; }
    </style>
  <script type="text/javascript">

 $(function() {

      var availableTags = ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby", "python", "c", "scala", "groovy", "haskell", "perl"];

      $("#tags").autocomplete({

          source: availableTags

      });

  });


 $(function() {

      var availableTags = ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby", "python", "c", "scala", "groovy", "haskell", "perl"];

      $("#tags2").autocomplete({

          source: "search2.php",
          minLength: 3

      });

  });


  </script>



  <input id="tags" />

  <input id="tags2" />




</body>
</html>

А вот код страницы search.php

<?php

    // PHP5 Implementation - uses MySQLi.
    // mysqli('localhost', 'yourUsername', 'yourPassword', 'yourDatabase');
    $db = new mysqli(localhost', 'username' ,'password', 'database_name');

    if(!$db) {
        // Show error if we cannot connect.
        echo 'ERROR: Could not connect to the database.';
    } 


$term = $_GET['term'];   

$result = $db->query("SELECT registeredName FROM names WHERE registeredName LIKE '%".$term."%' ");


$array = array();   

while ($data = mysql_fetch_array($result))   
{   
    $row_array['id'] = $data['id'];   
    $row_array['value'] = "$data[value]";   

    array_push($array, $row_array);   
}   

echo json_encode($array); 


?>

Буду признателен за любой совет

1 Ответ

0 голосов
/ 26 ноября 2011

Staggan,

В файле php вы создаете многомерный массив, состоящий из идентификатора и значения из вашей таблицы базы данных.В приведенном выше автозаполнении, где вы ссылаетесь на массив, который жестко запрограммирован, его одномерный (один столбец) заставляет меня поверить, что автозаполнение может не справиться с многомерным массивом во втором случае.

Попробуйте вынести (просто закомментировать строку) столбец id из массива в назначении php и просто заполнить его значением (которое, как я полагаю, лежит там, где покоятся реальные потенциалы автозаполнения) и передать обратно этот массив.

Посмотрите, поможет ли это.

Росс

Обновление - Staggan - код:

$row_array['value'] = "$data[value]";    

должно быть: $ row_array ['value']= $ data ['value'];

Я предполагаю, что PHP выдает ошибку, которую вы можете просмотреть в своем файле error_log для httpd, и что ваш уровень error_reporting таков, что он ничего не возвращает в json и, следовательно, не заполняет для вас массив автозаполнения.Измени это и дай мне знать.

R

...