2011-12-08 9 views
-4

編集:
私はこのコンセプトで私の問題を抱えていますが、これはいくつかの他の誰かを助けるかもしれません。




は、私は1つのコードをチェックし、それが適切に働いていたと私は驚いています!それはAJAXなしで済んだからです。
コードはWAMPでテストされ、ここにコードされています。また、「テスト」という名前のDBとの「試験」:JavaScriptとAjaxを使用しないJavaScriptのクエリ

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1 
/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 

<head> 

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

<title>Untitled Document</title> 

<style type="text/css"> 

*{font-size:8pt;} 

div#result{ 

    border:1px solid gray; 

    width:50%; 

    min-height:50px; 

    text-align:right; 

    color:#666666; 

    font-family:Tahoma; 

    padding:3px; 

    } 

div#result b{color:red;} 

</style> 

<script type="text/javascript"> 

function GetResult(s){ 

    var s=document.getElementById('s'); 

    var resultDiv = document.getElementById('result'); 

    resultDiv.innerHTML = '<?php 

    //My PHP Codes 

    $conn = mysql_connect("127.0.0.1","root",""); 

    if(!$conn){echo "Error in DB connection"; } 

    mysql_select_db("test"); 

    mysql_query("set character set utf8"); 


    $s=sprintf("'+s.value+'"); 

    $sql = "SELECT * 

       FROM `test`"; 

    $result = mysql_query($sql); 

    while($row=mysql_fetch_array($result)){ 

     echo $row["1"]; 

     echo "<br />"; 

     } 

    echo "You searched: <b>".$s."</b>"; 

    ?>'; 

    } 

</script> 

</head> 


<body> 


<form id="searchForm" onsubmit="javascript:GetResult(document.getElementById('s'));return 
false;"> 

<input type="text" id="s" /> 

<input type="submit" value="Search!" /> 

</form> 

<div id="result"> 
</div> 


上記のコードは、指定したテーブルからすべてのデータを取得します。
私のクエリは次のとおりです。

$sql = "SELECT * FROM test"; 

が、以下のクエリ用量動作しない:

$sql = "SELECT * FROM test WHERE `name` LIKE \'%".$s."%\'"; 

なぜいただきました!問題?
よろしくお願いいたします。

+1

'$ s = sprintf(" '+ s.value +' ");' - wth – ThiefMaster

+0

JSからの入力値を取得します。 – G0back

+0

あなたは、PHPがサーバ上で動作し、JavaScriptがクライアント上で動作していることを全く理解していませんでした。あなたはブラウザでソースコードを見たことがありますか? – ThiefMaster

答えて

0

構文が正しくありません。どの列がLIKE \'%".$s."%\'である必要がありますか?その列はcolnameと言ってください。あなたの質問は:

$sql = "SELECT * FROM test WHERE colname LIKE \'%".$s."%\'"; 

でなければなりません。あなたのコードを振り返ってみると、何か/本当に変です。そのPHPが実行されている/ javascriptがクライアント/に送信される前に。 PHPはserversideを実行し、JSはclientsideを実行するので、JSはPHPにパラメータを渡すことができません。

+0

これらのスラッシュは何ですか? –

+0

PHPは/ javascriptの後に/評価されたので、彼は彼がやっていたと思った一重引用符をエスケープするためにスラッシュを使いました。それは明らかにそれがどのように動作するのではないので必要ではありませんが、その理由は何ですか?私は私の答え – Dan

+0

tnxの最後の段落で編集しましたが、私は知っていましたが、私はそれを忘れてしまいました。 – G0back

4

PHPはサーバサイド言語であり、実行するために何らかの形式のページリロードが必要であることを理解する必要があります。これは通常、AJAXまたはフォームで行われます。

あなたのコードを構造化する方法は、javascript関数が検索結果を返すようにすることを意味します。これは、実行したくない方法では不可能です。

私はここにも書きます。 あなたのコードはこのように動作しません。

+0

plzテストし、答えてください!私はすべてのデータを取得するためにそれをテストしたと言いましたが、LIKEクエリではうまくいかなかったのですが、なぜですか? – G0back

+3

私は理由を掲示した。 javascriptとphpはあなたが思うように動作しません。 –

+0

なぜ最初のクエリで動作し、2番目のクエリでは機能しないのですか? – G0back

0

クライアントマシンがデータを受信する前に、PHPがサーバ上でのみ実行されます。クライアントの観点からは、PHPを使用して書かれた部分は固定されており、クライアントサイドのルーチンを使用して変更されることはありません。 PHPコードを再解釈するには、サーバーから新しい要求を行う必要があります。

PHPクエリが実行され、ページを受け取る前にデータが送信されるため、「初めて」動作します。

+0

はい! PHPのクエリが実行され、データがページを受け取る前に発行されるため、「これは」初めての「作品」です。私の質問は初めての理由だった。 – G0back

関連する問題