2010-10-18 1 views
0

Я использую автозаполнение jQuery UI, и я относительно новичок в jQuery и JSON. Ниже мой код. Мне было интересно, можно ли указывать имя поля и имя таблицы данных в URL-адресе обратного вызова, чтобы файл php захватывал его позже. У меня много полей ввода с разными именами и идентификаторами, которые должны иметь автозаполнение. Каждое поле ввода относится к разным столбцам и таблицам данных в MySQL. Поэтому я действительно хочу заменить «SELECT * FROM projects WHERE project_title REGEXP». $ Param '"; в нечто вроде «SELECT [переменная столбца] FROM [переменная таблицы данных] WHERE [переменная столбца] REGEXP '. $ param'";pass mysql datatable name in autocomplete jsonp

Большое вам спасибо.

Абу

<script type="text/javascript"> 
     $(function(){ 

      //attach autocomplete 
      $("#project-title").autocomplete({ 

       //define callback to format results 
       source: function(req, add){ 

        //pass request to server 
        $.getJSON("bin/test.php?callback=?", req, function(data) { 

         //create array for response objects 
         var suggestions = []; 

         //process response 
         $.each(data, function(i, val){         
          suggestions.push(val.name); 
         }); 

         //pass array to callback 
         add(suggestions); 
        }); 
       }, 
       minLength: 1, 


      }); 
     }); 

Ниже test.php файл

<?php 

include('../db.php'); 
$param = $_GET["term"]; 

//query the database 
$query = "SELECT * FROM projects WHERE project_title REGEXP '.$param'"; 
$res = connect($query); 
//build array of results 
for ($x = 0, $numrows = mysql_num_rows($res); $x < $numrows; $x++) { 
    $row = mysql_fetch_array($res); 

    $friends[$x] = array("name" => $row["project_title"]); 
} 

//echo JSON to page 
$response = $_GET["callback"] . "(" . json_encode($friends) . ")"; 
echo $response; 

?>

+0

милю шириной отверстия в безопасности ... –

+0

Спасибо за напоминание мне о безопасности. Я читал статью, где упоминал о простом решении, поставив autocomplete = "off" внутри тега . Имеет ли это смысл? Как я могу сделать его более безопасным? Благодарю. – Abu

ответ

-1

Ничего. Я понял. Я использовал что-то вроде этого.

$.getJSON("bin/test.php?callback=?&table=projects&col=project_title", req, function(data) 

чем захватить дополнительные значения с помощью этого

$param = filter_input(INPUT_GET, 'term', FILTER_SANITIZE_STRING); 
$param_table = filter_input(INPUT_GET, 'table', FILTER_SANITIZE_STRING); 
$param_column = filter_input(INPUT_GET, 'col', FILTER_SANITIZE_STRING); 
+0

Мне все еще хотелось бы знать, как я могу сделать его более безопасным. Спасибо. – Abu

+0

это не поможет вам даже немного –

+0

Страница не является общедоступной. Он имеет безопасную систему входа в систему. Я добавил заголовок no-cache и заголовок («Content-Type: application/json; charset = utf-8»); И я использую более безопасный filter_input. Если вы знаете больше способов обеспечить безопасность, даже после этого я бы хотел их услышать. Спасибо – Abu