2013-04-18 13 views
6

私は多くのチュートリアルをオンラインで見つけたので、それぞれの手順を順を追って説明しました。私の問題は、私がPHPを知っているよりもjavascript/jQueryがはるかに優れていることを知っていることで、そのセクションで何がうまくいかないのかをデバッグする方法も分かりません。基本的にはボタンとボタンの束があります。ボタンを押すと、デフォルト値がどのようなものかが決まります。jQueryはPHPファイルを呼び出してmysqlデータベースからデータを取得しますか?

jQueryのサイド

$(document).ready(function(){ 
// CSPC and ADDUPDATE TOGGLE ARE DEFINED GLOBALLY 
    $('ul#parts').on('click', 'button', function(){ 
     ADDUPDATETOGGLE = "ADD"; 
     CSPC = $(this).attr("data-cspc"); 
     var form = $('div.sidebar form'), 
       sr = 0; 
     form.find("#cspc").val(CSPC); 
     $.ajax({ 
      type: "GET", 
      url: "getRate.php", 
      data: "pid=A5843", 
      dataType: "json", 
      success: function(data){ 
       sr = data; 
      } 
     }); 
     form.find("#strokeRate").val(sr); 
     showForm(); 
    }); 
}); 

PHP側

<?php 

$host = "localhost"; 
$user = "username"; 
$pass = "password"; 
$databaseName = "movedb"; 
$tableName = "part parameters"; 

$con = mysql_connect($host, $user, $pass); 
$dbs = mysql_select_db($databaseName, $con); 
//get the parameter from URL 
$pid=$_GET["pid"]; 
if (empty($pid)){ 
    echo "1"; //default rate 
} 
else{ 
    $db=mysql_pconnect("localhost");//connect to local database 
    mysql_select_db("movedb", $db);//select the database you want to use 
    if (!$db){ 
     echo ("error connecting to database");    
    } 
    else{ 
     //connection successful 
     $sql = "SELECT 'Processing Rate (ppm)' FROM 'part parameters' WHERE 'Part Number' LIKE '" . $pid . "'";//sql string command 
      $result=mysql_query($sql);//execute SQL string command 
      //result contains rows 
      $rows = mysql_fetch_row($result) 
      echo json_encode($rows["Processing Rate (ppm)"]); 
    } 

} 

?> 

SRが設定されて取得されていない理由を任意のアイデア?

私はオフベースですか?

$ userと$ passを設定する必要があるかどうか分かりません。私はどこでも説明が見つかりません

ありがとうございます!

編集:私は、以下の指示のほとんどを踏襲し、今私は

http://localhost/getRate.php?pid=A5843 

を実行すると、それは言う、「いいえデータベースが選択されていません。」また、元のMS Accessファイルにアクセスすることはできません(私のチームメンバーの1人が持っています)が、一度入手すれば、すべてのヘッダーを1つの単語ヘッダーにします。これはWebプログラミング/データベース管理の最初の仕事であり、私たちは常に学習しています。

+0

MySQLは実際に動作していますか?ブラウザコンソールでリクエストエラーを確認しましたか? –

+1

'$ rows = mysql_fetch_row($ result)'にセミコロンがないと構文エラーが発生し、このページは役に立たなくなります –

+1

'$ user'と' $ password'はデータベース上の信用度でなければなりませんサーバ。彼らはおそらく間違っている、あなたがこれを解決するまで何も動作しません。 – RandomSeed

答えて

5

$userおよび$passは、MySqlユーザーのユーザー名とパスワードに設定する必要があります。

私はこのようなものを使用したい:=別のユーザーが言ったように、あなたがそうpart parametersスペースを入れずにデータベースのフィールドの名前を変更しようとする必要があり

<?php 

    $host = "localhost"; 
    $user = "username"; 
    $pass = "password"; 
    $databaseName = "movedb"; 
    $tableName = "part parameters"; 

    $con = mysql_pconnect($host, $user, $pass); 
    $dbs = mysql_select_db($databaseName, $con); 
    //get the parameter from URL 
    $pid = $_GET["pid"]; 
    if(empty($pid)){ 
     echo json_encode(array('status' => 0, 'message' => 'PID invalid.')); 
    } else{ 
     if (!$dbs){ 
      echo json_encode(array('status' => 0, 'message' => 'Couldn\'t connect to the db'));  
     } 
     else{ 
      //connection successful 
      $sql = "SELECT `Processing Rate (ppm)` FROM `part parameters` WHERE `Part Number` LIKE `" . mysqli_real_escape_string($pid) . "`"; //sql string command 
      $result = mysql_query($sql) or die(mysql_error());//execute SQL string command 
      if(mysql_num_rows($result) > 0){ 
       $rows = mysql_fetch_row($result); 
       echo json_encode(array('status' => 1, 'rows' => $rows["Processing Rate (ppm)"]); 
      }else{ 
       echo json_encode(array('status' => 0, 'message' => 'Couldn\'t find processing rate for the give PID.')); 
      } 
     } 

    } 

?> 

JS

success: function(data){ 
      if(data.status === 1){ 
       sr = data.rows; 
      }else{ 
       // db query failed, use data.message to get error message 
      } 
     } 

PHPを>part_parameters,Part Number =>part_number

あなたはまだあなたのphpファイルの先頭にこれを置く(限り、それは本番サーバではないとして)その後、問題がある場合:

error_reporting(E_ALL); 
ini_set('display_errors', '1'); 

これが出力されたエラー、あなたがうまく助けるべきです何がうまくいかない。

3

sr成功コールバック関数外です。あなたは

5
データを直接使用することはできませんので、それは、jsオブジェクトになり、成功の機能にそれを入れて起動し、データをJSONであることが予想される場合

$.ajax({ 
     type: "GET", 
     url: "getRate.php", 
     data: "pid=A5843", 
     dataType: "json", 
     success: function(data){ 
      sr = data; 
      form.find("#strokeRate").val(sr); 
     } 
    }); 

は、以下のことを覚えて何が起こるかを見ます

あなたのDBクエリコードが正しくありません:クエリで物事を引用する'を使用して

$sql = "SELECT 'Processing Rate (ppm)' FROM 'part parameters' WHERE 'Part Number' LIKE '" . $pid . "'";//sql string command 

はSTRINGS、ないフィールド/テーブル名にそれらを回します。したがって、あなたの問合せは構文的にも論理的にも間違っています。あなたのコードは単純に成功を前提としており、mysqlが吐き出されるエラーは決して受け止めません。

クエリは次のようになります。

SELECT `Processing Rate (ppm)` 
FROM `part parameters` 
WHERE `Part Number` = '$pid' 

注フィールド/テーブル名にバッククォート( `)を使用すると、$ pidの値に単一引用符(')の使用。これが失敗した場合、あなたは、MySQLを返すエラーメッセージが表示されます

$result = mysql_query($sql) or die(mysql_error()); 

次にあなたがクエリを実行します。

物事の壮大な計画では、あなたのコードはSQL injection attacksに脆弱です。あなたがこのコードでもっと遠くに行く前にそれを防ぐ方法を覚えておいてください。

+2

フィールド名とテーブル名に空白とかっこを使用するのは非常に不合理です。スペースやかっこをなくすためにこれらを変更することを強く検討する必要があります。 –

関連する問題