2016-04-02 15 views
0

mysqlクエリに1つの変数を渡すこのajaxコードがあります。私は他の変数を渡す必要があります。変数は既に取得済みですが、既存のコードに追加する方法はわかりません。mysqlクエリの複数の値を投稿するajax

これはコード

function Docent(){ 

var opleidingid = $('#opleidingddl').val(); 
var datum = $('#datumddl :selected').text(); 

$('#docentddl').html(); 
$('#docentddl').html("<option>Loading.....</option>"); 
$.ajax({ 
     type:"POST", 
     url:"Docent.php" 
     data : 
     { 
     'opleidingid': opleidingid, 
     'datum'  : datum 
     }, 
     success: function(data){ 
     $('#docentddl').html(); 
     $('#docentddl').html("<option value='0'>Selecteer docent</option>"); 
     $.each(data,function(i,item){ 
       $('#docentddl').append('<option value="'+ data[i].Opleiding_ID +'">'+ data[i].Docent+'</option>'); 
       $('#docentddl').selectpicker('refresh'); 
       }); 
     }, 
     complete: function(){ 
     } 
     }); 

} 

PHP

<?php 

include ('config.php'); 

$opleidingid = $_POST['opleidingid']; 
$datum  = $_POST['datum']; 


$sql=mysql_query("SELECT * FROM Docent_relatie WHERE Opleiding_ID = 'opleidingid'"); 
if(mysql_num_rows($sql)){ 
    $data = array(); 
    while($row=mysql_fetch_array($sql)){ 
     $data[] = array(
         'Opleiding_ID' => $row['Opleiding_ID'], 
         'Docent' => $row['Docent'], 
         'OpleidingDatum' => $row['OpleidingDatum'] 
         ); 
    } 
    header('Content-type: application/json'); 
    echo json_encode($data); 
} 

?> 
+0

それは... URLと設定AJAX方式のポストであるか、取得としてURLを使用するデータを使用します。あなたの中にAJAXあなたが望むものは何でも渡してください。例:data:{id:sid、var1:var1 – cpugourou

+0

これはまさに私が試したものですが、それは正しくできません。私はpostメソッドを使用する方法を知らず、#docentddlの正しいクエリを取得します。 – RoyBerner

+0

タイプ: "post"、url: "Docent.php"、データ:{var1:var1、var2:var2}データ型とcontentTypeを削除します。 PHP $ _POST( 'var1')、$ _POST( 'var2')です。 – cpugourou

答えて

0

okです。私は自分のコンピュータに戻っています。 これは次のようになります。 重要なコメントが1つあります。 は、廃止予定のmysqlメソッドを使用します。

DO WANT mysqlまたはmysqliの代わりにPDOを使用する。

は常に、この規則に従ってください:

PDOは自由に再利用することができ、プリペアドステートメントを使用しています。

1:あなたは文章を使用して準備していますか?値ごとに。

2:あなたは

3(....、クエリ内の出現順で1,2,3)の値をバインド:あなたは文を実行します。

4:しばらくではなく、結果配列を横断するためにforeachループを使用します。

注意してください。 PHPでは、結果を渡るforeachループは冗長性です。 単に$ resultをechoしてjavascriptで処理することができます(この場合はselect *ではなく、Opleiding_ID、Docent、OpleidingDatumを選択します)。

Javascriptを:

function Docent() { 
var opleidingid = $('#opleidingddl').val(); 
var datum = $('#datumddl :selected').text(); 

$('#docentddl').html("<option>Loading.....</option>"); 
var datas = {'opleidingid': opleidingid, 'datum': datum}; 

$.ajax({ 
    cache: false, 
    type: "POST", 
    url: "Docent.php", 
    data: datas, 
    success: function (data) { 
     var result = $.parseJSON(data); 
     if (result.ctrl === true) { 
       $('#docentddl').html("<option value='0'>Selecteer docent</option>"); 
       $.each(result.response, function (i, item) { 
        $('#docentddl').append('<option value="' + item.Opleiding_ID + '">' + item.Docent + '</option>'); 
       }); 
       $('#docentddl').selectpicker('refresh'); 
     }else{ 
      alert(result.response);// error message from php 
     } 
    } 
}); 

}

PHP:

define("SQLHOST", "127.0.0.1"); 
define("SQLDB", "databasename"); 
define("SQLUSER", "login"); 
define("SQLPASS", "password"); 
try { 
    $con = new PDO('mysql:host=' . SQLHOST . ';dbname=' . SQLDB . ';charset=UTF8', SQLUSER, SQLPASS); 
    $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $stmt= $con->prepare("SELECT * FROM Docent_relatie WHERE Opleiding_ID = ? AND datum= ?"); 
} catch (PDOException $e) { 
    echo json_encode(['ctrl' => false, 'response' => 'Connection failed to the database: ' . $e->getMessage()]); 
} 
$opleidingid = (isset($_POST['opleidingid'])) ? $_POST['opleidingid'] : null; // control if ajax sent proper value 
$datum = (isset($_POST['datum'])) ? $_POST['datum'] : null; // control if ajax sent proper value 
if ($opleidingid !== null && $datum !== null) { 
    $stmt->bindParam(1, $opleidingid, PDO::PARAM_INT); // could be PARAM_STR depending if $opleidingid is a int or a string 
    $stmt->bindParam(2, datum, PDO::PARAM_STR); 
    $stmt->execute(); 
    $result = $stmt->fetchall(PDO::FETCH_ASSOC); 
    $data = array(); 
    if (count($result) !== 0) { 
     foreach ($result as $key => $row) { 
      $data[] = array(
       'Opleiding_ID' => $row['Opleiding_ID'], 
       'Docent' => $row['Docent'], 
       'OpleidingDatum' => $row['OpleidingDatum'] 
      ); 
     } 
     echo json_encode(['ctrl' => true, 'response' => $data]); 
    }else{ 
     echo json_encode(['ctrl' => false, 'response' => 'No results found']); 
    } 
} else { 
    echo json_encode(['ctrl' => false, 'response' => 'ajax did not send values']); 
} 
+0

ありがとうございました。私は私がしたいように動作します。 – RoyBerner

+0

ようこそ。 valiyate upvoteしてください。どうも – cpugourou

関連する問題