【发布时间】:2012-01-22 20:14:17
【问题描述】:
我有一个 Ajax PHP MySQL 实时搜索,它基本上从 MySQL 数据库中提取食物项目并将它们显示在一个下拉列表中,当用户输入他们的搜索词时,每行一个项目,就像在 Google 中搜索一样。
我需要一种允许用户点击特定结果项目的方法,然后在点击的项目下方打开一个带有几个单选按钮的框,其中列出了包含各种数量的特定食物项目的选项.然后,用户将能够选择一个金额选项并单击提交以保存他们的选择。
我非常了解 PHP、MySQL 和 HTML,但 JS 有点挑战,所以如果您能详细回答,我将不胜感激。
以下是我目前拥有的一些代码 sn-ps:
-
HTML 搜索表单:
<input type="text" size="30" name="food_name" id="q" value="" onkeyup="sendRequest(this.value);" autocomplete="off"/> -
带有搜索表单的同一页面上的 AJAX 代码:
function createRequestObject() { var req; if(window.XMLHttpRequest){ // Firefox, Safari, Opera... req = new XMLHttpRequest(); } else if(window.ActiveXObject) { // Internet Explorer 5+ req = new ActiveXObject("Microsoft.XMLHTTP"); } else { alert('Problem creating the XMLHttpRequest object'); } return req; } // Make the XMLHttpRequest object var http = createRequestObject(); function sendRequest(q) { // Open PHP script for requests http.open('get', 'checkfoods.php?q='+q); http.onreadystatechange = handleResponse; http.send(null); } function handleResponse() { if(http.readyState == 4 && http.status == 200){ // Text returned FROM the PHP script var response = http.responseText; if(response) { // UPDATE ajaxTest content document.getElementById("searchResults").innerHTML = response; } } } -
PHP 脚本在 MySQL 中查看名为 FOOD_DES 的表并返回填充食物下拉列表的结果:
include 'my-food-dtabase.php'; $searchQry = isset($_GET['q']) ? mysql_real_escape_string($_GET['q']) : false; if ($searchQry) { $searchString = $_GET['q']; $sql = mysql_query("SELECT NDB_No, FdGrp_Cd, Long_Desc FROM FOOD_DES WHERE Long_Desc LIKE '%".$_GET['q']."%' ORDER BY Long_Desc ASC"); if($searchString != NULL) { while($row = mysql_fetch_assoc($sql)) { echo "<span id=foodlist><a href=calorie-counter-serving.php?NDB_No=".$row['NDB_No'].">".$row['Long_Desc']."</a><br /></span>"; } } if(mysql_num_rows($sql) == 0) { echo "<span class=medium_white>Food item not found. Try a different name or keyword.</span>"; } }
【问题讨论】:
-
确保您在处理此问题时可以看到 AJAX 请求/响应 - 这非常有帮助。 Chrome 原生有这个,或者 Firefox+Firebug 也不错。
标签: php mysql ajax search live