0

私はajaxとjavascriptを初めて使用し、基本的なエラーがあると確信しているスクリプトに到達しましたが、それは私が現時点で持っているものです.

それぞれをクリックするとチェック画像がオンまたはオフになるボタンがいくつかあります (ボタンは mysql クエリから情報を要求するテーブルの一部であり、その長さは mysql の結果の数によって異なります)。

私はphpとmysqlでスクリプトを作成しましたが、そのページにデータを投稿するためのフォームが必要で、更新できなかったため、今はajaxで立ち往生しています。

だから私がやろうとしているのは、mysqlをajaxの中に入れることです...わかりました、それが大きな間違いだったらごめんなさい、正しい方法でそれを行うのを手伝ってください...

PHPコード:

(...code...)

$query = "SELECT `CÔR`, `keyword`, `Adds`, `PRMédio`, `PRDomínioMédio`, `Searches`, `CPC`, `.com`, `.org`, `.net`, `All in URL`, `All in Title`, `All in Desc.`
FROM keywords WHERE ( `Adds`>='$adds'  && `Adds`<='$addsm' && `PRMédio`>='$pr' && `PRMédio`<='$prm' && `PRDomínioMédio`>= '$prdom' && `PRDomínioMédio`<= '$prdommax'
&& `Searches`>='$s' && `Searches`<='$smax' && `CPC`>='$cpc' && `CPC`<='$cpcmax')";  

if ($query_run = mysql_query($query)){


while($query_row = mysql_fetch_assoc($query_run)){

$côr = $query_row['CÔR'];

(...code...)

<td>            
<button id='ajaxButton'>Select</button>
</td>

(...code... 'CÔR' is the only variable that matters, it's the binnary one that turns on and off the image)

ジャバスクリプト:

(function() {
  var httpRequest;
  document.getElementById('ajaxButton').onClick = function('$q') {


    $n = "SELECT `CÔR` FROM `keywords` WHERE `keyword`='$q'";
    $b = mysql_query ($n);
    $row = mysql_fetch_array($b);


    echo "$row['CÔR'];";
    $t = $row['CÔR'];
    if ($t == 1) {
    $m = "UPDATE `keywords` SET `CÔR`=0 WHERE `keyword`='$q'";
    mysql_query ($m);
        }
    if ($t == 0) {
    $l = "UPDATE `keywords` SET `CÔR`=1 WHERE `keyword`='$q'";
    mysql_query ($l);
        }

};

  function makeRequest(index.php) {
    if (window.XMLHttpRequest) { 
      httpRequest = new XMLHttpRequest();
    } else if (window.ActiveXObject) { 
      try {
        httpRequest = new ActiveXObject('Msxml2.XMLHTTP');
      } 
      catch (e) {
        try {
          httpRequest = new ActiveXObject('Microsoft.XMLHTTP');
        } 
        catch (e) {}
      }
    }

    if (!httpRequest) {
      alert('Giving up :( Cannot create an XMLHTTP instance');
      return false;
    }
    httpRequest.onreadystatechange = alertContents;
    httpRequest.open('GET', index.php);
    httpRequest.send();
  }

  function alertContents() {
    if (httpRequest.readyState === 4) {
      if (httpRequest.status === 200) {
        alert(httpRequest.responseText);
      } else {
        alert('There was a problem with the request.');
      }
    }
  }
})
();

繰り返しますが、これが専門家の心を怒らせる場合は申し訳ありません。正しい方法を教えてください。

4

2 に答える 2

0

JavaScript はクライアント側、PHP (および Mysql) はサーバー側です。これは、JavaScript で収集したデータをクライアントからサーバーに送信する必要があることを意味します。これは、AJAX を介して行うことができます。必要に応じて、jQuery には AJAX を使用するための非常に優れた便利なインターフェイスがあります。

POST の場合 はhttp://api.jquery.com/jQuery.post/ 、GET の場合は http://api.jquery.com/jQuery.post/ を参照してください。

于 2013-04-30T11:46:10.597 に答える
0

また、実際には適切な場所ではないjavascriptにmysqlコード/関数を入れているようです。

あなたがすべきことは次のとおりです。

  1. AJAX 呼び出しの応答として期待する結果を含む PHP ファイル yourcode.php を作成します。

  2. それから

    document.getElementById('ajaxButton').onClick = function('$q') {
        url = 'yourcode.php';
        makeRequest(url);
    

    次に、コードを変更します

    function makeRequest(url) {
        httpRequest.open('GET', url);
    
  3. これは、inturn が「yourcode.php」を呼び出し、そのファイルによってレンダリングされた出力を返すメソッドを呼び出します。

また、データを投稿する場合は、それを JSON オブジェクトに変換することを検討する必要があります。

于 2013-04-30T11:50:23.327 に答える