2012-12-14 49 views
0

我有一个简单的html表单,可以通过输入ID自动填充字段。它的工作正常。但是,如果在数据库中找不到ID,则只能将空值返回给表单域。我试图显示一条错误消息(可以是弹出窗口),说ID找不到!但我没能做到。这里是我的代码呼应信息到表单字段:如果ID未找到,则显示错误消息

if (strlen($param) > 0) { 
    $result = mysql_query("SELECT * FROM contact 
    WHERE contactid LIKE '$param%'"); 
    if (mysql_num_rows($result) == 1) { 
     while ($myrow = mysql_fetch_array($result)) { 
      $agentname = $myrow["contactfullname"]; 
      $agenttel = $myrow["contacttel"]; 
      $agentsal = $myrow["contactsalutation"]; 
      $agentid = $myrow["contactid"]; 
      $textout .= $agentid . ", " . $agentname . ", " . $agenttel . ", " . $agentsal; 
     } 
    } else { 
     $textout = " , , ," . $param; 
    } 
} 
echo $textout; 

这里是我的ajaxFunction:

function ajaxFunction(e){ 
    var e=e || window.event; 
    var keycode=e.which || e.keyCode; 
    if(keycode==13 || (e.target||e.srcElement).value==''){ 
    var http; // The variable that makes Ajax possible! 

    try{ 
     // Opera 8.0+, Firefox, Safari 
     http = new XMLHttpRequest(); 
    } catch (e){ 
     // Internet Explorer Browsers 
     try{ 
      http = new ActiveXObject("Msxml2.XMLHTTP"); 
     } catch (e) { 
      try{ 
       http = new ActiveXObject("Microsoft.XMLHTTP"); 
      } catch (e){ 
       // Something went wrong 
       alert("Your browser broke!"); 
       return false; 
      } 
     } 
    } 
var url = "getagentids.php?param="; 
       var idValue = document.getElementById("agid").value; 
       var myRandom = parseInt(Math.random()*99999999); // cache buster 
       http.open("GET", "getagentids.php?param=" + escape(idValue) + "&rand=" + myRandom, true); 
       http.onreadystatechange = handleHttpResponse; 
       http.send(null); 

       function handleHttpResponse() { 
        if (http.readyState == 4) { 
         results = http.responseText.split(","); 
         document.getElementById('agfn').value = results[0]; 
         document.getElementById('agsal').value = results[1]; 
         document.getElementById('agtel').value = results[2]; 
         document.getElementById('agid').value = results[3]; 
        } 
      } 
    } 
} 
+1

难道你还可以添加你的Ajax代码,它可能会变成你可以'回声'';'在其他部分 – Dale

回答

4
  1. 不使用mysql_做到这一点*功能,请改用PDOMysqli
  2. take care约$参数值的方式
  3. 如果你的查询应返回1分的结果,你可以使用LIMIT 1,也没有必要使用一段时间。

改变这一点:

$result = mysql_query("SELECT * FROM contact 
    WHERE contactid LIKE '$param%'"); 
if (mysql_num_rows($result) == 1) { 
     while ($myrow = mysql_fetch_array($result)) { 

$result = mysql_query("SELECT * FROM contact 
    WHERE contactid LIKE '$escaped_param%' LIMIT 1"); 
if (mysql_num_rows($result) == 1) { 
    $myrow = mysql_fetch_array($result); 

4.如果你想展示你的Ajax响应的消息,您可以使用JSON或....作为一个简单例如,返回错误字符串:

error|" , , ," . $param; 

并检查是否发生错误d您的客户端上:

var result = "error|anything"; 
if(result.substr(0,6) == 'error|') 
{ 
    alert('An error occured.'); 
} 
else 
{ 
    //do what you need! 
} 

编辑:

function handleHttpResponse() 
{ 
    if (http.readyState == 4) 
    { 
     results = http.responseText; 
     if(results.substr(0,6) == 'error|') 
     { 
      alert('An error occured.'); 
     } 
     else 
     { 
      results = results.split(","); 
      document.getElementById('agfn').value = results[0]; 
      document.getElementById('agsal').value = results[1]; 
      document.getElementById('agtel').value = results[2]; 
      document.getElementById('agid').value = results[3]; 
     } 
    } 
} 
+0

谢谢你的回答,但我不明白在哪里添加'var result =“error | anything”; if(result.substr(0,6)=='error |') { alert('An error occured。'); } else { //做你所需要的! }'。我试过了,但如果** ID **存在,仍然会弹出窗口,然后填充窗体..我在这里添加了我的ajaxFunction,可能是你可以帮助我如何解决它.. –

+0

你的欢迎,在你的javascript ajax函数中,var结果就是一个例子,结果就是你的php代码的返回答案。请向我们展示您的ajax代码。 – RezaSh

+0

我已经将它添加到我的问题中。 –

1

尝试在SQL

LIKE '%" . $param . "%' 
相关问题