2016-04-02 80 views
0

我有這個ajax代碼,爲mysql查詢傳遞一個變量。我需要傳遞其他變量。我已經得到了這個變量,但是我不知道如何將它添加到現有的代碼中。ajax發佈mysql查詢的多個值

這是代碼

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中使用的數據:在你阿賈克斯通過任何你想要的。示例:data:{id:sid,var1:var1 – cpugourou

+0

這正是我所嘗試的,但我無法正確理解。我不知道如何使用post方法,並仍然爲#docentddl獲取正確的查詢。 – RoyBerner

+0

類型:「post」,url:「Docent.php」,數據:{var1:var1,var2:var2}。刪除dataType和contentType。在PHP $ _POST('var1'),$ _POST('var2')中。 – cpugourou

回答

0

確定。所以我回到了我的電腦。 它應該看起來像這樣。 一個重要的評論。 you 不要想使用mysql的棄用方法。

you DO WANT使用PDO而不是mysql或mysqli。

遵循這個規則,總是:

PDO使用準備statment可以隨意重用。

1:你準備使用?每個值。

2:綁定中的值(通過外觀在查詢,1,2,3的順序....)

3:你執行該語句。

4:你使用foreach循環遍歷結果數組,而不是一段時間。

要注意。在PHP中,結果中的foreach循環是冗餘的。 你可以簡單地直接echo $ result並在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

不客氣。請嘗試和upvote。謝謝 – cpugourou