[英]passing a jquery value to php variable
我有一個表單,它顯示一個輸入日期選擇器和一個有很多次選擇的選擇,以選擇客戶在第一個日期必須選擇的時間。
這是我的代碼:
echo '<form action="my_account.php" method="post">
Date : <input required type="text" id="datepicker" name="BIRTHDATE">';
echo'
<select id="slots" name="slots" >
<option value=""></option>';
<script> $("#slots").on("click", function() { if($( "#datepicker" ).val() == ''){ alert('veuillez remplir le champ date en premier'); return false; }else{ var date_book = $( "#datepicker" ).val(); alert(date_book); alert('champ rempli'); $.ajax({ type : 'POST', url : 'my_account.php', data : { param : date_book }, success : function(data) { alert('ok'); } }); } }); </script>
$start_time="09:45"; $end_time="16:45"; for($i = strtotime($start_time); $i<= strtotime($end_time); $i = $i + $duration * 60) { $slots[] = date("H:i:s", $i); } echo'post param :'. $_POST['param']; $sql_book="select id, start, date from bookings where id_event=".$id_eve." and id_cust=".$_SESSION['id']." and date =". $_POST['param']; echo'sql book :'.$sql_book; $times=db_query($db_name,$sql_book); foreach($times as $time) { if($time->id != NULL){ $start_book[] = $time->start; $date_book[] = $time->date; } } for($j=0; $j < count($slots); $j++){ echo' <option value='.$slots[$j].'">'.$slots[$j].'</option>'; } echo'</select> <input type="submit" id="form_sendbutton" name="BT_Envoyer" value="Envoyer" /> </form>';
但是變量沒有分配給php。 謝謝你的幫助
您以 JSON 格式發送日期,並且在 PHP 腳本中,您不會對其進行解碼。
但由於只有一個值......我只想刪除 JSON 格式。
$.ajax({
type : 'POST',
url : 'my_account.php',
data : "param="+date_book,
success : function(data) {
alert('ok');
}
});
-----------
編輯
我在這個方面做了一些工作,因為我討厭被否決。
好的...我的回答並沒有解決所有問題。
有很多事情要解決!
好吧,我認為您希望select
字段填充 dB 查詢的結果,基於日期選擇器的結果。 如果我錯了……就不要在這里閱讀這個答案! 並嘗試解釋我做錯了什么。
;)
首先,您在單擊select
觸發 ajax 調用...這是錯誤的。
即使它填充了一些數據庫結果,用戶每次嘗試選擇一個option
都會觸發 ajax 調用。
所以我把它改成了日期字段的onchange
。
然后......我的第一個答案沒有錯。 只需將日期作為POST
值發送。 沒有必要對它進行 JSON。
而最重要的是:
您必須為您的數據庫查詢創建一個單獨的 PHP 文件。
其結果將是HTML options
土地的select
。
這是您的my_account.php
:
<?php
// Your PHP code before this, if any...
?>
<form action="my_account.php" method="post">
Date : <input required type="text" id="datepicker" name="BIRTHDATE">
<select id="slots" name="slots" ></select>
<input type="submit" id="form_sendbutton" name="BT_Envoyer" value="Envoyer" />
</form>
<script>
$("#datepicker").on("change", function() {
if($( "#datepicker" ).val() == ''){
return false;
}else{
var date_book = $( "#datepicker" ).val();
console.log("champ rempli "+date_book);
$.ajax({
type : 'POST',
url : 'my_account_options.php',
data : "param="+date_book,
success : function(data) {
console.log("ajax success");
$("#slots").html(data);
}
});
}
});
// Datepicker - I added this too to trigger the datepicker.
// It may be different in your code.
$('#datepicker').fdatepicker('yy-mm-dd');
</script>
這是第二個 PHP 文件,我將其命名為my_account_options.php
:
<?php
if($_POST['param']){
$start_time="09:45";
$end_time="16:45";
$duration=1; // Added to test... Remove it.
for($i = strtotime($start_time); $i<= strtotime($end_time); $i = $i + $duration * 60) {
$slots[] = date("H:i:s", $i);
}
$id_eve="someEvent"; // Added to test... Remove it.
$_SESSION['id']="custId"; // Added to test... Remove it.
$sql_book="select id, start, date from bookings where id_event='".$id_eve."' and id_cust='".$_SESSION['id']."' and date='". $_POST['param']."'";
// Commented out to test...
/*
$times=db_query($db_name,$sql_book);
foreach($times as $time)
{
if($time->id != NULL){
$start_book[] = $time->start;
$date_book[] = $time->date;
}
}
for($j=0; $j < count($slots); $j++){
echo ' <option value="'.$slots[$j].'">'.$slots[$j].'</option>';
}
*/
// Added to test... Remove it.
echo ' <option value="sql query">'.$sql_book.'</option>';
}
?>
因為我沒有你的數據庫。
我“模擬”了你的$duration
, $_SESSION['id']
和$id_eve
變量...
現在,這里的選項文本中有什么內容......您的數據庫查詢是否供您檢查。
我得到的結果是: select id, start, date from bookings where id_event="someEvent" and id_cust="custId" and date="2016-05-05"
請注意包裝值的雙引號(在查詢中):它丟失了。
所以......希望被“取消投票”(!!!)並且這會對你有所幫助。
;)
-----------
編輯
最后一件事要檢查......
您可能在 my_account_options.php 中沒有$duration
和$id_eve
變量。
只需將這些設置為 my_account.php 中的 $_SESSION 變量,這樣它就可以用於您的 sql 查詢......不要忘記session_start();
如果是這樣的話。
或者將它們作為 post 值傳遞,如下所示:
data : "param="+date_book+"&duration=<?php echo $duration; ?>&id_eve=<?php echo $id_eve; ?>",
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.