2017-09-05 12 views
0

私はちょうどWeb開発を始めました.Ajaxを使ってPHPでいくつかのことを試しています。私は最近php、jquery、ajaxを使ったスクリプトをダウンロードしました。それは、ユーザーが特定の日をクリックした後に入力を可能にし、ユーザーが「追加」ボタンをクリックするとデータをデータベースに追加するカレンダーを表示することです。その後

It looks somethings like this

私はそれにデータを追加し、ユーザが閲覧するカレンダー日報を望んでいたので、私は列としてUSER_IDを添加し、前記Iは、データベーステーブルを修正しました。今、私の問題は、$ _SESSION ['userSession']をAjaxリクエストに使用できないことです。私はmysqliのクエリに変数を追加しようとしましたが、残念ながら、それはこの種のエラー生成:

注意:未定義の変数:CでのU_ID:\ xamppの\ htdocsに\ 288

ライン上の\のfunctions.phpを報告します

私は2つのPHPファイルを持っています.1つはメインページ用で、もう1つはカレンダーやその他のカレンダー機能を処理するためのものです。ここで

は私のreports.phpファイルは次のようになります。

<?php 
session_start(); 
include_once 'dbconnect.php'; 
include_once('functions.php'); 

if (!isset($_SESSION['userSession'])) { 
    header("Location: index.php"); 
} 

$query = $DBcon->query("SELECT * FROM users WHERE user_id=".$_SESSION['userSession']); 
$userRow=$query->fetch_array(); 
$DBcon->close(); 

$u_id = $_SESSION['userSession']; //this is the variable that I am trying to pass to the functions.php file 

    ?> 
<!-- The echo below produces the calendar view --> 
<div id="calendar_div"> 
    <?php echo getCalender(); ?> 
</div> 

は今ここのfunctions.phpのサンプルは次のとおりです。基本的に

<?php 


if(isset($_POST['func']) && !empty($_POST['func'])){ 
    switch($_POST['func']){ 
     case 'getCalender': 
      getCalender($_POST['year'],$_POST['month']); 
      break; 
     case 'getEvents': 
      getEvents($_POST['date']); 
      break; 
     //For Add Event 
     case 'addEvent': 
      addEvent($_POST['date'],$_POST['title'],$_POST['week'],$_POST['hours']); 
      break; 
     default: 
      break; 
    } 
} 

?> 



<script type="text/javascript"> 
    function getCalendar(target_div,year,month){ 
     $.ajax({ 
      type:'POST', 
      url:'functions.php', 
      data:'func=getCalender&year='+year+'&month='+month, 
      success:function(html){ 
       $('#'+target_div).html(html); 
      } 
     }); 
    } 

    function getEvents(date){ 
     $.ajax({ 
      type:'POST', 
      url:'functions.php', 
      data:'func=getEvents&date='+date, 
      success:function(html){ 
       $('#event_list').html(html); 
       $('#event_add').slideUp('slow'); 
       $('#event_list').slideDown('slow'); 
      } 
     }); 
    } 
    //For Add Event 
    function addEvent(date){ 

     $('#eventDate').val(date); 
     $('#eventDateView').html(date); 
     $('#event_list').slideUp('slow'); 
     $('#event_add').slideDown('slow'); 
    } 
    //For Add Event 
    $(document).ready(function(){ 
     $('#addEventBtn').on('click',function(){ 
      var date = $('#eventDate').val(); 
      var title = $('#eventTitle').val(); 
      var week = $('#eventWeek').val(); 
      var hours = $('#eventHours').val(); 
      $.ajax({ 
       type:'POST', 
       url:'functions.php', 
       data:'func=addEvent&date='+date+'&title='+title+'&week='+week+'&hours='+hours, 
       success:function(msg){ 
        if(msg == 'ok'){ 
         var dateSplit = date.split("-"); 
         $('#eventTitle').val(''); 
         $('#eventWeek').val(''); 
         $('#eventHours').val(''); 
         alert('Daily report has been added.'); 
         getCalendar('calendar_div',dateSplit[0],dateSplit[1]); 
        }else{ 
         alert('Some problem occurred, please try again.'); 
        } 
       } 
      }); 
     }); 
    }); 

function getEvents($date = ''){ 
    //Include db configuration file 
    include 'dbconnect.php'; 
    $eventListHTML = ''; 
    $date = $date?$date:date("Y-m-d"); 
    //Get events based on the current date 
    $result = $DBcon->query("SELECT title,hours FROM ojt_student_report WHERE date = '".$date."' AND status = 1 and user_id = '"$u_id"'"); 

    if($result->num_rows > 0){ 

     $eventListHTML = '<h2>Daily Report on '.date("l, d M Y",strtotime($date)).'</h2>'; 
     $eventListHTML .= '<ul class="list-group">'; 
     while($row = $result->fetch_assoc()){ 
      $eventListHTML .= '<li class="list-group-item"> <b>Daily Report: </b><br>'.nl2br($row['title']). '<br> <b>Working Hours: </b>' .$row['hours']. '</li>'; 
     } 
     $eventListHTML .= '</ul>'; 

    } 
    echo $eventListHTML; 
} 

/* 
* Add event to date 
*/ 
function addEvent($date,$title,$week,$hours){ 
    //Include db configuration file 
    include 'dbconnect.php'; 
    $currentDate = date("Y-m-d H:i:s"); 
    //Insert the event data into database 
    $insert = $DBcon->query("INSERT INTO ojt_student_report (title,date,week,hours,created,modified,user_id) VALUES ('".$title."','".$date."','".$week."','".$hours."','".$currentDate."','".$currentDate."','"$u_id"')"); 
    if($insert){ 
     echo 'ok'; 
    }else{ 
     echo 'err'; 
    } 
} 
?> 

、私はやってみたかったものを持っているしています$ _SESSION変数を使用して、各ユーザーごとに異なるカレンダービューと日次レポートビューを作成します。私は私の問題を正しく述べることができれば嬉しいです。どうもありがとうございました!

+1

'javascript'で関数を使いたいのであれば、' php'ではなく 'javascript'で呼び出す必要があります。@Master Pogi – Pritamkumar

答えて

2

はコードの下のようなものを試してみてください:適切なクラスまたはIDを非表示として

function getCalendar(target_div,year,month){ 
     $.ajax({ 
      type:'POST', 
      url:'functions.php', 
      data:'func=getCalender&year='+year+'&month='+month + '&uid=<?php echo $u_id ; ?>', 
      success:function(html){ 
       $('#'+target_div).html(html); 
      } 
     }); 
    } 
+0

これはうまくいきました、ありがとう!また、他の回答に感謝し、私はあなたのすべての答えからアイデアを生成することができた –

0

はcalendar_div要素で使用するセッションのユーザーIDを持っています。入力タイプを非表示にしてセッション値を配置します。 addEvent click関数では、id/classを使用してそのセッション値を取得し、ajaxパラメータとして渡すことができます。

これで問題は解決します。

1

もう1つの方法は、ユーザーIDを返すapiを作成することです。

同様: returnSessionId.phpあなたのHTML内

echo $_SESSION['userSession']; 

function getCalendar(target_div,year,month){ 
    $.ajax({ 
     type:'POST', 
     url:'returnSessionId.php', 

     success:function(sessionID){ 
      console.log(sessionID); 
     } 
    }); 
} 

あなたのスクリプトが同じでない場合でも、あなたが欲しい、これまでIDを取得することができますこの方法あなたはPHPファイルとしてページ。

関連する問題