1

現在、現在の d/m/y にデフォルト設定される変数があります。これは、テーブル WHERE date='$dday' AND month='$dmonth' AND year=' のすべてのデータを表示する mySQL クエリにポップされます。 $年」。

$ddate = date("d");
$dmonth = date("m");
$dyear = date("Y");

代わりに、選択したオプションに基づいて変数を変更する選択ボックスが必要です。そのため、Day select のデフォルト オプションは現在の日付になりますが、たとえばそれを 12 日目に変更すると、select オプションが変更されたときに変数が変更され、データベースを自動的に再クエリするようになります。これはAJAXで行われると思います。

私が話していることは可能ですか?クエリの自動化によって複雑さが増す場合は、変数を変更し、送信ボタンの押下に基づいて更新するだけで問題ありません。

私の単純なレベルに満たない質問がされた場合でも、質問をするのをやめて、いくつか答え始めることを約束します.

4

3 に答える 3

1

はい、可能です。jQueryはそれを簡単にします。

  1. 要素を作成<select>し、ID を付けて、jQuery で使用できるようにします。

  2. <select>が変更されたときに発生するイベント リスナーを jQuery に追加し$("#date").change()ます。

  3. change イベントのイベント ハンドラーで、 の現在の値を取得し、<select>jQuery の AJAX$.post()関数を使用してそのデータを PHP ファイルに送信します。

  4. その PHP ファイルで、MySQL インジェクションを防ぐためにデータをサニタイズしてから、新しいデータについてデータベースにクエリを実行します。

  5. PHP のecho関数を使用して、データを送り返します。

  6. jQuery$.post()コールバック関数 (第 3 パラメーター) で、エコーされたデータを受け取り、それを変数に入れます。

  7. jQuery を使用して、HTML をデータで更新します。

于 2012-08-20T03:53:58.487 に答える
0

例を次に示します。クエリを実行する必要があります。

<?php 
//Some pseudo data kinda as your receive it from your query
$datafromSql = array(
array('id'=>1,'date'=>1,'month'=>1,'year'=>2012,'theData'=>'This is some data when the user select 1/1/2012'),
array('id'=>2,'date'=>2,'month'=>2,'year'=>2012,'theData'=>'This is some data when the user select 2/2/2012'),
array('id'=>3,'date'=>3,'month'=>3,'year'=>2012,'theData'=>'This is some data when the user select 3/3/2012'),
);

//Super simple API to access the data
if($_SERVER['REQUEST_METHOD']=='POST' && isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest'){
    header('Content-Type: text/html');
    //pseudo code, really you would just format your query result   
    $return=array();
    foreach($datafromSql as $row){
        //Select all from array which match select choice
        if($row['date']==$_POST['day'] || $row['month']==$_POST['month'] || $row['year']==$_POST['year']){
            $return[]=$row['theData'].'<br />';
        }
    }
    //output, with a fancy horizontal rule
    echo implode('<hr />',$return);
    die;
}?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js" charset="utf-8"></script>
<script type="text/javascript">
function update(){
    $.post('./<?php echo basename(__FILE__)?>',
       {
        day:  $("#day").val(),
        month: $("#month").val(),
        year:  $("#year").val()
       },
    function(data) {
            $('#result').replaceWith('<div id="result"><h1>The Result:</h1>'+ data +'</div>');
    });
}

$(document).ready(function(){
    update();
});
</script>

</head>

<body>

<form id="dateform" >
 <p>Select Date: 
  <select size="1" name="day" id="day" onChange="update()">
  <?php foreach(range(1,31) as $i){echo '<option value="'.$i.'">'.$i.'</option>';} ?>
  </select>
  <select size="1" name="month" id="month" onChange="update()">
  <?php foreach(range(1,12) as $i){echo '<option value="'.$i.'">'.$i.'</option>';} ?>
  </select>
  <select size="1" name="year" id="year" onChange="update()">
  <?php foreach(range(2008,2012) as $i){echo '<option value="'.$i.'">'.$i.'</option>';} ?>
  </select>
 </p>
</form>

<p id='result'></p>

</body>

</html>
于 2012-08-20T04:32:07.793 に答える
0

あなたが提案する解決策は両方ともうまくいきます。AJAXを使用して選択ボックスからphpスクリプトに値を送信するか、フォームを送信して、フォームメソッドを介して$_POST、または$_GETフォームメソッドに応じてその方法でアクセスすることができます。

于 2012-08-20T03:49:23.170 に答える