簡體   English   中英

將 jquery 值傳遞給 php 變量

[英]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>
我在我的 sql 查詢中需要這個變量:

 $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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM