1

医師のオフィス用のロケーションファインダーアプリケーションを作成しています。アプリには、チェックインを待っている複数の患者のリストがあります。

たとえば、最初の患者は患者Xです。これが段階的なプロセスです(私の問題を説明する最も簡単な方法)

1)患者Xの名前の横には、[チェックイン]というラベルの付いたボタンがあります。[チェックイン]をクリックすると、患者ID(selectidと呼ばれる)がAjax経由でchangeloc.phpに送信され、チェックインの日時が記録されます。

2)成功すると、ユーザーは、ユーザーが選択できる複数の場所を含むドロップダウン(最初のボタンを置き換える)が表示されます。選択から場所を選択すると、変数locationSelectがchangeloc.phpに送信され、そこでログに記録されます。

3)次に、ユーザーはステップ2を繰り返して、複数の場所を選択することを決定する場合があります。

4)最後に、ユーザーが場所の選択を終えたら、ステップ2と3でユーザーが場所をクリックした場所と同じ選択の最後のオプションをクリックします。これをクリックすると、checkloc.phpに送信され、ログに記録されます。

5)最後に、ドロップダウンが消え、チェックアウトされた単語が表示されます

これが私のコードです:

PHP

<?php

 date_default_timezone_set('America/Denver');

 $apptid = $_REQUEST['selectid'];
 $currentlocation = $_REQUEST['locationSelect'];
 $currentlocationstart = date("Y-m-d H:i:s"); 
 $checkin = $_REQUEST['checkIn'];
 $checkout = $_REQUEST['checkOut'];
 /*** mysql hostname ***/
 $hostname = 'localhost';

 /*** mysql username ***/
 $username = '***********';

 /*** mysql password ***/
 $password = '**********';


$conn = new PDO("mysql:host=$hostname;dbname=sv", $username, $password);
    /*** The SQL SELECT statement ***/

if(!empty($currentlocation)){
   //$sql2 = "UPDATE history SET ";
   //$query = $conn->prepare($sql2);
   //$query->execute(array(':apptid'=>$apptid, ':locationstart'=>$locationstart));
   $sql = "UPDATE schedule SET currentlocation = ?, currentlocationstart = ? WHERE apptid= ? ";
   $q = $conn->prepare($sql);
   $q->execute(array($currentlocation,$currentlocationstart, $apptid));

}

if(!empty($checkin)){
   $sql = "UPDATE schedule SET currentlocation = ?, currentlocationstart = ? WHERE apptid= ? ";
   $q = $conn->prepare($sql);
   $q->execute(array($checkin,$currentlocationstart, $apptid));
   //$sql2 = "insert into history (apptid, locationstart) VALUES (:apptid,:locationstart)";
   //$query = $conn->prepare($sql2);
   //$query->execute(array(':apptid'=>$apptid, ':locationstart'=>$locationstart));
}

if(!empty($checkout)){
   $sql = "UPDATE schedule SET currentlocation = ?, currentlocationstart = ? WHERE apptid= ? ";
   $q = $conn->prepare($sql);
   $q->execute(array($checkout,$currentlocationstart, $apptid));
}
?>

Javascript

<script src="http://code.jquery.com/jquery-1.8.2.js"></script>

<script type="text/javascript">
$(document).ready(function() {
$('.locationSelect').hide();  // Hide all Selects on screen
$('.finished').hide();        // Hide all checked Out divs on screen

$('.checkIn').click(function() {
    var $e = $(this);
    var data = $e.data("param").split('-')[1] ;
    // gets the id  of button  (1 for the first button)
    // You can map this to the corresponding button in database...
    $.ajax({
        type: "POST",
        url: "changeloc.php",
        // Data used to set the values in Database
        data: { "checkIn" : $(this).val(), "buttonId" : data},
        success: function() {
            // Hide the current Button clicked
            $e.hide();
            // Get the immediate form for the button
            // find the select inside it and show...
            $e.nextAll('form').first().find('.location').show();
        }
    });
});

$('.locationSelect').change(function() {
    $e = $(this);
    var data = $e.data("param").split('-')[1] ;
    // gets the id  of select (1 for the first select)
    // You can map this to the corresponding select in database...
    $.ajax({
        type: "POST",
        url: "changeloc.php",
        data: { "locationSelect" : $(this).val(), "selectid" : data},
        success: function() {
            // Do something here
        }
    });
});
$('.locationSelect option[value="CheckOut"]').click(function() {
    var $e = $(this);
    var data = $e.closest('select').data("param").split('-')[1] ;
    // gets the id  of select (1 for the first select)
    // You can map this to the corresponding select in database...
    // from which checkout was processed
    $.ajax({
        type: "POST",
        url: "changeloc.php",
        data: { "checkOut" : $(this).val(), "selectid" : data},
        success: function() {
            // Get the immediate form for the option
            // find the first finished div sibling of form
            // and then show it..
            $e.closest('form').nextAll('.finished').first().show();
            // Hide the current select in which the option was selected
            $e.closest('.locationSelect').hide();
            alert('done');
        },
        error: function(request) {
            alert(request.responseText);
        }
    });
});
});
</script>

およびhtml:

<button class="checkIn" data-param="button-1">Check In</button>

   <form method='post' class='myForm' action=''>
      <select name='locationSelect' class='locationSelect' data-param="location-1">
        <option value='1'>Exam Room 1</option>
        <option value='2'>Exam Room 2</option>
        <option value='3'>Exam Room 3</option>
        <option value='4'>Exam Room 4</option>
        <option value='CheckOut'>Check Out</option>
      </select>
    </form>

<div class='finished' style='color:#ff0000;'>Checked Out</div>

問題は:

1)ユーザーが[チェックイン]ボタンをクリックすると、ボタンは本来のように消えますが、ドロップダウンは表示されません(つまり、ドロップダウンの後に他に何も表示されないことを意味します)

2)データベースは何も更新されていません。

助けてくれてありがとう!これ以上必要な場合は詳細をお尋ねください!

4

1 に答える 1

1

コード$e.nextAll('form').first().find('.location').show();はクラス「location」の要素を探していますが、htmlのフォームにはクラス「locationSelect」のselectがあります。あなたはこれらの2つのクラスに同じものを読んでもらいたかったと思います。

于 2012-11-08T02:01:20.240 に答える