0

以下に示すような予約グリッドがあります。

ここに画像の説明を入力してください

この予約グリッドには、jqueryダイアログを開くdblClickイベントがあります。

<div id="cp-bookings-dialog">

    <div class="cp-tiles-wrapper-dlg">

        <div class="cp-booking-info left">

            <p class="pno-margin">Booking Date: &nbsp;<strong>Booking Reference is = <? echo BookingDocket::get_bookref(); ?></strong></p>
            <p class="pno-margin">Return Date: &nbsp;<strong><? echo BookingDocket::get_bookdate(); ?></strong></p>
            <p class="pno-margin">Journey: &nbsp;<strong></strong></p>
            <p class="pno-margin">Passenger Tel: &nbsp;<strong></strong></p>
            <p class="pno-margin">E-mail: &nbsp;<strong></strong></p>

        </div>

    </div>

 </div>

Jqueryコード:

    ondblClickRow: function(rowid)
    {
    var rowData = new Array();
        rowData = $("#bookings").getRowData(rowid);
        var brData = rowData['bookref'];

        getGridRow(brData);

        $("#cp-bookings-dialog").dialog({ hide: 'slide', height: 625, width: 733, title: 'Booking Reference: - '+ brData});
    },

ここで、brDataは、PHPスクリプトで使用する「予約参照」値です。現在、このdblClickイベントは次のAjaxリクエストに送信されています。

function getGridRow(brData) {

   $.ajax({

    url: 'scripts/php/bootstrp/all.request.php',
    type: 'POST',

    data: {

        rowdata: brData,

        id: null,
        condition: null
    },
    dataType: 'text/xml',
    timeout: 20000,
    error: function(){
        alert("It failed");
        $('#cp-div-error').html('');
        $('#cp-div-error').append('<p>There was an error inserting the data, please try again later.</p>');
        $('#cp-div-error').dialog('open');
    },
    success: function(response){

        // Refresh page

        //response = brData;
        //alert(response);  <--- This alerts the correct Booking Reference

    }
});

これはall.request.phpに送信されます

// Switch to determine method to call
switch ($_REQUEST['fnme']) {

case 'getDGRow':
header('Content-type: text/xml');
GetBookings::getGridRow($_REQUEST['rowdata']);
break;

そして最後に、このJquery値を使用したいPHPスクリプトに移ります。

class GetBookings {

public static function getGridRow($rowdata) {

    $rowdata = $_REQUEST['rowdata'];

    $pdo = new SQL();
    $dbh = $pdo->connect(Database::$serverIP, Database::$serverPort, Database::$dbName, Database::$user, Database::$pass);

    try {

        $query = "SELECT * FROM tblbookings WHERE bookref = '$rowdata'";

        $stmt = $dbh->prepare($query);

            $stmt->execute();

        $row = $stmt->fetch(PDO::FETCH_BOTH); 

            {variables are all here}

        $stmt->closeCursor();

    }

    catch (PDOException $pe) {
        die("Error: " .$pe->getMessage(). " Query: ".$stmt->queryString);
    }

    $dbh = null;

    }


    }

理由はわかりませんが、うまくいかないようです。また、予約をdblClickすると、jQueryダイアログボックスが開き、予約に関するすべての詳細が表示され、からのすべての結果が返されることに注意してください。$query = "SELECT * FROM tblbookings WHERE bookref = '$rowdata'";

私がする必要があるのは、このデータを正しく渡すことだけです$rowdata。これは、予約参照値に置き換えるかのように機能します。これは、正常に機能します。

誰かがこれを手伝ってくれるなら、私はこれをかなり長い間機能させようとしてきたので、私は非常に感謝します:(

4

2 に答える 2

1

なぜあなたはそれを次のように送るのですか

 data: {

    rowdata: 'fnme=getDGRow&row_data='+brData,

    id: null,
    condition: null
},

好きではない

 data: {

    fname: 'getDGRow',
    rowdata: brData,

    id: null,
    condition: null
},

phpファイルでは、単一の値を取得する$_POST['fname']ために使用できます。$_POST['rowdata']

現在、$_REQUEST['rowdata']文字列全体'fnme=getDGRow&row_data='+brDataです!

mysqlクエリでbrDataを使用する場合は$_REQUEST['row_data']、上記の例を使用するか使用して、変数を$_REQUEST['rowdata']正しく設定してみてください。


動作するはずのコード全体

function getGridRow(brData) {

   $.ajax({

    url: 'scripts/php/bootstrp/all.request.php',
    type: 'POST',

    data: {

        fnme: 'getDGRow',
        rowdata: brData,

        id: null,
        condition: null
    },
    dataType: 'text/xml',
    timeout: 20000,
    error: function(){
        alert("It failed");
        $('#cp-div-error').html('');
        $('#cp-div-error').append('<p>There was an error inserting the data, please try again later.</p>');
        $('#cp-div-error').dialog('open');
    },
    success: function(response){

        // Refresh page

        //response = brData;
        alert(response); // <--- This alerts the correct Booking Reference

    }
});

-

// Switch to determine method to call
switch ($_REQUEST['fnme']) {

case 'getDGRow':
header('Content-type: text/xml');
GetBookings::getGridRow($_REQUEST['rowdata']);
break;

-

class GetBookings {

public function getGridRow($rowdata) {

    $pdo = new SQL();
    $dbh = $pdo->connect(Database::$serverIP, Database::$serverPort, Database::$dbName, Database::$user, Database::$pass);

    try {

        $query = "SELECT * FROM tblbookings WHERE bookref = '$rowdata'";

        $stmt = $dbh->prepare($query);

            $stmt->execute();

        $row = $stmt->fetch(PDO::FETCH_BOTH); 

            {variables are all here}

        $stmt->closeCursor();

    }

    catch (PDOException $pe) {
        die("Error: " .$pe->getMessage(). " Query: ".$stmt->queryString);
    }

    $dbh = null;

    }


    }
于 2012-07-10T08:51:12.647 に答える
0

あなたのコードを見てください:

var rowData = new Array();
    rowData = $("#bookings").getRowData(rowid);
    var brData = rowData['bookref'];

2行目は1行目を上書きしたため、を削除できますrowData = new Array()

さて、あなたはそれが存在することを確信してい$_REQUEST['fnme']ますか?ステートメントswitchにはデフォルト値getGridRow()がなく、実行されないようです。

さらに、$rowdata = $_REQUEST['rowdata']意味がないので、削除できます。

お役に立てば幸いです。

于 2012-07-10T09:34:38.627 に答える