0

jQuery オートコンプリートによるフォームへの入力 mysql への接続方法

このコードは配列の結果を表示しています。mysql データベースに接続したいのですが、どうすれば mysql に接続できますか? この問題の解決を手伝ってください。

autocomplete.htm

<link rel="stylesheet" href="http://static.jquery.com/ui/css/base2.css" type="text/css" media="all" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.min.js" type="text/javascript"></script>
<script type="text/javascript">

$(document).ready(function(){
    var ac_config = {
        source: "/ajax/demo_cities.php",
        select: function(event, ui){
            $("#city").val(ui.item.city);
            $("#state").val(ui.item.state);
            $("#zip").val(ui.item.zip);
        },
        minLength:1
    };
    $("#city").autocomplete(ac_config);
});
</script>
<form action="#" method="post">
     <p><label for="city">City</label><br />
         <input type="text" name="city" id="city" value="" /></p>
     <p><label for="state">State</label><br />
         <input type="text" name="state" id="state" value="" /></p>
     <p><label for="zip">Zip</label><br />
         <input type="text" name="zip" id="zip" value="" /></p>
</form>

demo_cities.php

<?php

// Data could be pulled from a DB or other source
$cities = array(
    array('city'=>'New York', state=>'NY', zip=>'10001'),
    array('city'=>'Los Angeles', state=>'CA', zip=>'90001'),
    array('city'=>'Chicago', state=>'IL', zip=>'60601'),
    array('city'=>'Houston', state=>'TX', zip=>'77001'),
    array('city'=>'Phoenix', state=>'AZ', zip=>'85001'),
    array('city'=>'Philadelphia', state=>'PA', zip=>'19019'),
    array('city'=>'San Antonio', state=>'TX', zip=>'78201'),
    array('city'=>'Dallas', state=>'TX', zip=>'75201'),
    array('city'=>'San Diego', state=>'CA', zip=>'92101'),
    array('city'=>'San Jose', state=>'CA', zip=>'95101'),
    array('city'=>'Detroit', state=>'MI', zip=>'48201'),
    array('city'=>'San Francisco', state=>'CA', zip=>'94101'),
    array('city'=>'Jacksonville', state=>'FL', zip=>'32099'),
    array('city'=>'Indianapolis', state=>'IN', zip=>'46201'),
    array('city'=>'Austin', state=>'TX', zip=>'73301'),
    array('city'=>'Columbus', state=>'OH', zip=>'43085'),
    array('city'=>'Fort Worth', state=>'TX', zip=>'76101'),
    array('city'=>'Charlotte', state=>'NC', zip=>'28201'),
    array('city'=>'Memphis', state=>'TN', zip=>'37501'),
    array('city'=>'Baltimore', state=>'MD', zip=>'21201'),
);  

// Cleaning up the term
$term = trim(strip_tags($_GET['term']));

// Rudimentary search
$matches = array();
foreach($cities as $city){
    if(stripos($city['city'], $term) !== false){
        // Add the necessary "value" and "label" fields and append to result set
        $city['value'] = $city['city'];
        $city['label'] = "{$city['city']}, {$city['state']} {$city['zip']}";
        $matches[] = $city;
    }
}

// Truncate, encode and return the results
$matches = array_slice($matches, 0, 5);
print json_encode($matches);
4

3 に答える 3

0

PHP を使用して MySQL データベースに接続するには、MySQL または MySQLi の 2 つの方法のいずれかを実行できます。

編集:データベースに接続して配列を返したら、現在のコードを使用してオートコンプリート クエリのデータを準備できます。

MySQL の例:

<?php

     // Connect to server and select database
     $conn = $mysql_connect('HOST', 'USER', 'PASS');
     $db   = $mysql_select_db('DATABASE');

     // To retrieve data from database:
     $query = "SELECT column_name FROM table_name"; // Your query
     $result = mysql_query($query);

     if($result) {
          if(mysql_num_rows($result) != 0 {

               while($row = mysql_fetch_assoc($result)) {
                    echo $row[column_name];
               }
          } else {
               echo "Your query returned 0 rows.";
     } else {
          echo "Your query is invalid.<br />MySQL error " . $mysql_error();
     }
?>

MySQL:

<?php

     $mysqli = new mysqli('HOST', 'USER', 'PASS', 'DATABASE');

     $query = "SELECT column_name FROM table_name WHERE column_name = ?";
     $result = $mysqli->query($query);
     while($row = $result->fetch_array()) {
          $rows[] = $row;
     }
?>

データを取得するための迅速かつ簡単な方法。問題のトラブルシューティングを支援し、エンド ユーザーに問題を警告するために、if/else ステートメントを使用したエラー チェックをお勧めします。

于 2013-01-23T07:50:16.087 に答える
0

私があなたの質問を正しく理解していれば、その配列から取得したのと同じ結果を取得したいだけですが、php コードのデータベースから取得したいだけです。もしそうなら、あなたはこれらの線に沿って何かを使うことができます...

<?php
$conn = mysql_connect('host', 'user', 'pass'); //You want to replace that with your connection details, though it should be in a class so you aren't reconnecting every page call
if(!$conn) {
    echo json_encode(array('success' => false, 'reason' => 'Could not connect'));
    exit;
}
@mysql_select_db('dbname'); // replace with your database name
$term = trim(strip_tags($_REQUEST['term']));
$sql = "SELECT `city`, `state`, `zip` FROM tablename WHERE city LIKE '".$term."%'";
$results = mysql_query($sql);
if($results) {
    while($row = mysql_fetch_assoc($results)) {
        $matches[] = array('city' => $row['city'], 'label' => "{$row['city']}, {$row['state']}, {$row['zip']}"; //honestly not sure what thats about but you had it so im adding it
    }
    $matches = array_slice($matches, 0, 5); // again not sure about this, but you have it so here it is
} else {
    $matches = array('success' => false, 'reason' => 'no matches found');
}
echo json_encode($matches);
?>
于 2013-01-23T07:52:26.563 に答える
-1

13 行目のコードを次のように変更します。

$matches[] = array('city' => $row['city'], 'label' => "{$row['city']}, {$row['state']}, {$row['zip']}"
于 2013-07-07T13:51:45.303 に答える