2011-06-28 29 views
0

我已經按照教程介紹瞭如何創建一個在MySQL數據庫中動態搜索表的查找字段 - 目的是通過郵政編碼來處理聯繫人查找。我有搜索工作,並將值(在頁面上)插入到字段中,但我需要將輸入字段的value =「idhere」參數中選擇的記錄的id。我已經在下面添加了PHP和HTML,任何人都可以看看並幫助解決我的問題。JQuery和PHP查找字段

的Javascript & CSS

 <script type="text/javascript"> 
     function getSuggestions(value) { 
      if(value != ""){ 
      $.post("lookup.php", {contactPart:value}, function(data) { 
       $("#suggestions").html(data); 
       runCSS(); 
      }); 
      }else{ 
       removeSuggestions(); 
      } 
     } 

     function removeSuggestions() { 
      $("#suggestions").html(""); 
      stopCSS(); 
     } 

     function addText(value) { 
      $("#inputContact").val(value); 
      $("#inputContact").val() { 
       $(this).val() 
      } 
     } 

     function runCSS() { 
      $("#suggestions").css({ 
       'border' : 'solid', 
       'border-width' : '1px' 
      }); 
     } 

     function stopCSS() { 
      $("#suggestions").css({ 
       'border' : '', 
       'border-width' : '' 
      }); 
     } 
     </script> 

     <style type="text/css">  
     #suggestions { 
      text-align: left; 
      padding-left: 3px; 
     } 

     #link:hover { 
      background-color: #f0f0f0; 
      cursor: default;  
     } 
     </style> 

HTML

<input type="text" name="userA" id="inputContact" onblur="setTimeout('removeSuggestions()', 200)" onkeyup="getSuggestions(this.value);" value="idhere" /> 
<div id="suggestions"></div> 

PHP

<?php 

mysql_connect("127.0.0.1", "root", "root")or die(mysql_error()); 
mysql_select_db("gEntry")or die(mysql_error()); 

$contactPart = mysql_real_escape_string(addslashes($_POST['contactPart'])); 
$result = mysql_query("SELECT id, title, firstname, lastname, postcode FROM contact WHERE postcode LIKE '%".$contactPart."%'")or die (mysql_error()); 

while ($row = mysql_fetch_assoc($result)) { 
    echo "<div id='link' onClick='addText(\"".$row['id']. ' - ' .$row['title']. ' ' .$row['firstname']. ' '.$row['lastname']."\");'>" . $row['id'] . ' - ' . $row['title'] . ' ' . $row['firstname'] . ' ' . $row['lastname'] . ' - ' . $row['postcode'] . "</div>"; 
} 

?> 

我使用標準的MySQL語法的mysqli將不是我的服務器上運行。提前

感謝

+1

什麼「ID在這裏」我不明白,在你的代碼 – mplungjan

+0

@mplungjan - 我更新了代碼對不起 –

回答

0

只是刪除這部分,因爲它是無效的,並且不添加任何東西:

$("#inputContact").val() { 
    $(this).val() 
} 

您只能使用大括號function() {}if() {},等我不知道你是什麼期待這樣做,但如果你只是刪除這3條線呢?

1

我不知道你想把你的id放在哪裏,但我建議你返回json對象,這樣你就可以做你想做的。我會做:

$row = mysql_fetch_assoc($result); 

    $json['id'] = $row['id']; 
    $json['title'] = $row['title']; 
    $json['firstname'] = $row['firstname']; 
    $json['lastname'] = $row['lastname']; 
    echo json_encode($json); 

然後客戶端,你可以建立自己的股利,並把你的身份證,你想:

$.post("lookup.php", {contactPart:value}, function(data) { 
     var message = data.id+" - "+data.title+" "+data.firstname+" "+data.lastname; 
     var resultdiv = "<div id='link' onClick='addText('"+message+"')>"+message+"</div>"; 
     $("#suggestions").html(resultdiv); 
     //put your data.id where you need to put it 
     $(this).val(data.id); 
     runCSS(); 
     }, "json"); 
+0

@ pimvdb感謝您的這一切,所以JSON進入PHP?和JavaScript替換我有什麼? –

+0

@Justin Erswell:實際上是@Nicola Peluchetti提出了他的想法。無論如何,PHP會將數據放入一個數據包併發送出去,然後JavaScript將它解包成一個對象(這樣就可以訪問'id'屬性)。這是發送數據的一種便捷方式。 – pimvdb

+0

@Justin Erswell是的,第一部分是在PHP中(我沒有得到一件事:你期望得到多少結果?只有一個?多於一個?你應該把檢查結果放在那裏)。無論如何,這個想法只是打包你的數據並將其返回給客戶端,以便他可以重複使用:在你的情況下,你需要兩次id,它可以在'data'屬性中獲得。 –