1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

ajuda urgente em calendario php

Discussão em 'Web Development' iniciada por fatm, 16 de Maio de 2012. (Respostas: 2; Visualizações: 4063)

  1. fatm

    fatm Power Member

    boas pessoal tou com um problema numa aplicacao web eu arranjei um calendario(http://jqcalendar.hibionline.com/)
    e o objectivo é ter uma base de dados com os utilizadores que a vao utilizar e conforme o id do utilizador a bd ia buscar os seus registos

    ora eu criei uma bd utilizadores que é onde estao guardados as informacoes dos utilizadores com uma chave estrangeira a fazer conexao ao id do calendar ai tudo bem a pior parte é no codigo


    tenho uma pagina sample.php(é onde esta o codigo de criacao do calendario)

    Código:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1">
        <title> O meu calendario </title>
        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
        <link href="css/dailog.css" rel="stylesheet" type="text/css" />
        <link href="css/calendar.css" rel="stylesheet" type="text/css" /> 
        <link href="css/dp.css" rel="stylesheet" type="text/css" />   
        <link href="css/alert.css" rel="stylesheet" type="text/css" /> 
        <link href="css/main.css" rel="stylesheet" type="text/css" /> 
        
        <script src="src/jquery.js" type="text/javascript"></script>  
        
        <script src="src/Plugins/Common.js" type="text/javascript"></script>    
        <script src="src/Plugins/datepicker_lang_US.js" type="text/javascript"></script>     
        <script src="src/Plugins/jquery.datepicker.js" type="text/javascript"></script>
        <script src="src/Plugins/jquery.alert.js" type="text/javascript"></script>    
        <script src="src/Plugins/jquery.ifrmdailog.js" defer="defer" type="text/javascript"></script>
        <script src="src/Plugins/wdCalendar_lang_US.js" type="text/javascript"></script>    
        <script src="src/Plugins/jquery.calendar.js" type="text/javascript"></script>   
        
        <script type="text/javascript">
            $(document).ready(function() {     
               var view="week";          
               
                var DATA_FEED_URL = "php/datafeed.php";
                var op = {
                    view: view,
                    theme:3,
                    showday: new Date(),
                    EditCmdhandler:Edit,
                    DeleteCmdhandler:Delete,
                    ViewCmdhandler:View,    
                    onWeekOrMonthToDay:wtd,
                    onBeforeRequestData: cal_beforerequest,
                    onAfterRequestData: cal_afterrequest,
                    onRequestDataError: cal_onerror, 
                    autoload:true,
                    url: DATA_FEED_URL + "?method=list",  
                    quickAddUrl: DATA_FEED_URL + "?method=add", 
                    quickUpdateUrl: DATA_FEED_URL + "?method=update",
                    quickDeleteUrl: DATA_FEED_URL + "?method=remove"        
                };
                var $dv = $("#calhead");
                var _MH = document.documentElement.clientHeight;
                var dvH = $dv.height() + 2;
                op.height = _MH - dvH;
                op.eventItems =[];
                var p = $("#gridcontainer").bcalendar(op).BcalGetOp();
                if (p && p.datestrshow) {
                    $("#txtdatetimeshow").text(p.datestrshow);
                }
                $("#caltoolbar").noSelect();
                
                $("#hdtxtshow").datepicker({ picker: "#txtdatetimeshow", showtarget: $("#txtdatetimeshow"),
                onReturn:function(r){                          
                                var p = $("#gridcontainer").gotoDate(r).BcalGetOp();
                                if (p && p.datestrshow) {
                                    $("#txtdatetimeshow").text(p.datestrshow);
                                }
                         } 
                });
                function cal_beforerequest(type)
                {
                    var t="A carregar...";
                    switch(type)
                    {
                        case 1:
                            t="A carregar...";
                            break;
                        case 2:                      
                        case 3:  
                        case 4:    
                            t="O pedido esta a ser processado ...";                                   
                            break;
                    }
                    $("#errorpannel").hide();
                    $("#loadingpannel").html(t).show();    
                }
                function cal_afterrequest(type)
                {
                    switch(type)
                    {
                        case 1:
                            $("#loadingpannel").hide();
                            break;
                        case 2:
                        case 3:
                        case 4:
                            $("#loadingpannel").html("Successo!");
                            window.setTimeout(function(){ $("#loadingpannel").hide();},2000);
                        break;
                    }              
                   
                }
                function cal_onerror(type,data)
                {
                    $("#errorpannel").show();
                }
                function Edit(data)
                {
                   var eurl="edit.php?id={0}&start={2}&end={3}&isallday={4}&title={1}";   
                    if(data)
                    {
                        var url = StrFormat(eurl,data);
                        OpenModelWindow(url,{ width: 600, height: 400, caption:"Alterar calendario",onclose:function(){
                           $("#gridcontainer").reload();
                        }});
                    }
                }    
                function View(data)
                {
                    var str = "";
                    $.each(data, function(i, item){
                        str += "[" + i + "]: " + item + "\n";
                    });
                    alert(str);               
                }    
                function Delete(data,callback)
                {           
                    
                    $.alerts.okButton="Ok";  
                    $.alerts.cancelButton="Cancelar";  
                    hiConfirm("Tem a certeza que quer eliminar?", 'Confirmar',function(r){ r && callback(0);});           
                }
                function wtd(p)
                {
                   if (p && p.datestrshow) {
                        $("#txtdatetimeshow").text(p.datestrshow);
                    }
                    $("#caltoolbar div.fcurrent").each(function() {
                        $(this).removeClass("fcurrent");
                    })
                    $("#showdaybtn").addClass("fcurrent");
                }
                //to show day view
                $("#showdaybtn").click(function(e) {
                    //document.location.href="#day";
                    $("#caltoolbar div.fcurrent").each(function() {
                        $(this).removeClass("fcurrent");
                    })
                    $(this).addClass("fcurrent");
                    var p = $("#gridcontainer").swtichView("day").BcalGetOp();
                    if (p && p.datestrshow) {
                        $("#txtdatetimeshow").text(p.datestrshow);
                    }
                });
                //to show week view
                $("#showweekbtn").click(function(e) {
                    //document.location.href="#week";
                    $("#caltoolbar div.fcurrent").each(function() {
                        $(this).removeClass("fcurrent");
                    })
                    $(this).addClass("fcurrent");
                    var p = $("#gridcontainer").swtichView("week").BcalGetOp();
                    if (p && p.datestrshow) {
                        $("#txtdatetimeshow").text(p.datestrshow);
                    }
                });
                //to show month view
                $("#showmonthbtn").click(function(e) {
                    //document.location.href="#month";
                    $("#caltoolbar div.fcurrent").each(function() {
                        $(this).removeClass("fcurrent");
                    })
                    $(this).addClass("fcurrent");
                    var p = $("#gridcontainer").swtichView("month").BcalGetOp();
                    if (p && p.datestrshow) {
                        $("#txtdatetimeshow").text(p.datestrshow);
                    }
                });
                
                $("#showreflashbtn").click(function(e){
                    $("#gridcontainer").reload();
                });
                
                //Add a new event
                $("#faddbtn").click(function(e) {
                    var url ="edit.php";
                    OpenModelWindow(url,{ width: 500, height: 400, caption: "Create New Calendar"});
                });
                //go to today
                $("#showtodaybtn").click(function(e) {
                    var p = $("#gridcontainer").gotoDate().BcalGetOp();
                    if (p && p.datestrshow) {
                        $("#txtdatetimeshow").text(p.datestrshow);
                    }
    
                });
                //previous date range
                $("#sfprevbtn").click(function(e) {
                    var p = $("#gridcontainer").previousRange().BcalGetOp();
                    if (p && p.datestrshow) {
                        $("#txtdatetimeshow").text(p.datestrshow);
                    }
                });
                //next date range
                $("#sfnextbtn").click(function(e) {
                    var p = $("#gridcontainer").nextRange().BcalGetOp();
                    if (p && p.datestrshow) {
                        $("#txtdatetimeshow").text(p.datestrshow);
                    }
                });
                
            });
        </script>    
    </head>
    <body>
        <div>
          <div id="calhead" style="padding-left:1px;padding-right:1px;">          
                <div class="cHead"><div class="ftitle">O meu calendario</div>
                <div id="loadingpannel" class="ptogtitle loadicon" style="display: none;">A Carregar...</div>
                 <div id="errorpannel" class="ptogtitle loaderror" style="display: none;">Desculpe,nao conseguimos carregar os seu ficheiros,por favor tente mais tarde.</div>
                </div>          
                
                <div id="caltoolbar" class="ctoolbar">
                  <div id="faddbtn" class="fbutton">
                    <div><span title='Click to Create New Event' class="addcal">
                    Novo Evento           
                    </span></div>
                </div>
                <div class="btnseparator"></div>
                 <div id="showtodaybtn" class="fbutton">
                    <div><span title='Click to back to today ' class="showtoday">
                    Hoje</span></div>
                </div>
                  <div class="btnseparator"></div>
                <div id="showdaybtn" class="fbutton">
                    <div><span title='Day' class="showdayview">Dia</span></div>
                </div>
                  <div  id="showweekbtn" class="fbutton fcurrent">
                    <div><span title='Week' class="showweekview">Semana</span></div>
                </div>
                  <div  id="showmonthbtn" class="fbutton">
                    <div><span title='Month' class="showmonthview">Mes</span></div>
                </div>
                <div class="btnseparator"></div>
                  <div  id="showreflashbtn" class="fbutton">
                    <div><span title='Refresh view' class="showdayflash">actualizar</span></div>
                    </div>
                 <div class="btnseparator"></div>
                <div id="sfprevbtn" title="Prev"  class="fbutton">
                  <span class="fprev"></span>
                </div>
                <div id="sfnextbtn" title="Next" class="fbutton">
                    <span class="fnext"></span>
                </div>
                <div class="fshowdatep fbutton">
                        <div>
                            <input type="hidden" name="txtshow" id="hdtxtshow" />
                            <span id="txtdatetimeshow">A Carregar</span>
                        </div>
                </div>
                
                <div class="clear"></div>
                </div>
          </div>
          <div style="padding:1px;">
            <div class="t1 chromeColor">
                &nbsp;</div>
            <div class="t2 chromeColor">
                &nbsp;</div>
            <div id="dvCalMain" class="calmain printborder">
                <div id="gridcontainer" style="overflow-y: visible;">
                </div>
            </div>
            <div class="t2 chromeColor">
                &nbsp;</div>
            <div class="t1 chromeColor">
                &nbsp;
            </div>   
            </div>
         
      </div>
        
    </body>
    </html>
    
    
    este ficheiro esta a chamar o feed.php que é onde se encontra as funcoes do php(para guardar na base de dados)

    PHP:
    <?php
    include_once("dbconfig.php");
    include_once(
    "functions.php");
    function 
    addCalendar($st$et$sub$ade){
    $numero=1;
      
    $ret = array();
      try{
        
    $db = new DBConnection();
        
    $db->getConnection();
        
    $sql "insert into `jqcalendar` (`subject`, `starttime`, `endtime`, `isalldayevent`,`utilizadores_id`) values ('"
          
    .mysql_real_escape_string($sub)."', '"
          
    .php2MySqlTime(js2PhpTime($st))."', '"
          
    .php2MySqlTime(js2PhpTime($et))."', '"
          
    .mysql_real_escape_string($ade)."', 
       '"
    .$numero."' )";
        
    //echo($sql);
      
    if(mysql_query($sql)==false){
          
    $ret['IsSuccess'] = false;
          
    $ret['Msg'] = mysql_error();
        }else{
          
    $ret['IsSuccess'] = true;
          
    $ret['Msg'] = 'add success';
          
    $ret['Data'] = mysql_insert_id();
        }
     }catch(
    Exception $e){
         
    $ret['IsSuccess'] = false;
         
    $ret['Msg'] = $e->getMessage();
      }
      return 
    $ret;
    }

    function 
    addDetailedCalendar($st$et$sub$ade$dscr$loc$color$tz){
      
    $ret = array();
      
    $numero=1;
      try{
        
    $db = new DBConnection();
        
    $db->getConnection();
        
    $sql "insert into `jqcalendar` (`subject`, `starttime`, `endtime`, `isalldayevent`, `description`, `location`, `color`,`utilizadores_id`) values ('"
          
    .mysql_real_escape_string($sub)."', '"
          
    .php2MySqlTime(js2PhpTime($st))."', '"
          
    .php2MySqlTime(js2PhpTime($et))."', '"
          
    .mysql_real_escape_string($ade)."', '"
          
    .mysql_real_escape_string($dscr)."', '"
          
    .mysql_real_escape_string($loc)."', '"
          
    .mysql_real_escape_string($color)."',
       '"
    .$numero."' )";
        
    //echo($sql);
      
    if(mysql_query($sql)==false){
          
    $ret['IsSuccess'] = false;
          
    $ret['Msg'] = mysql_error();
        }else{
          
    $ret['IsSuccess'] = true;
          
    $ret['Msg'] = 'add success';
          
    $ret['Data'] = mysql_insert_id();
        }
     }catch(
    Exception $e){
         
    $ret['IsSuccess'] = false;
         
    $ret['Msg'] = $e->getMessage();
      }
      return 
    $ret;
    }
    function 
    listCalendarByRange($sd$ed){
      
    $ret = array();
      
    $numero=1;
      
    $ret['events'] = array();
      
    $ret["issort"] =true;
      
    $ret["start"] = php2JsTime($sd);
      
    $ret["end"] = php2JsTime($ed);
      
    $ret['error'] = null;
      try{
        
    $db = new DBConnection();
        
    $db->getConnection();
        
    $sql "select * from `jqcalendar` where utilizadores_id= '".$numero."' and  `starttime` between '"
          
    .php2MySqlTime($sd)."' and '"php2MySqlTime($ed)."'";
        
    $handle mysql_query($sql);
        while (
    $row mysql_fetch_object($handle)) {
         
          
    $ret['events'][] = array(
            
    $row->Id,
            
    $row->Subject,
            
    php2JsTime(mySql2PhpTime($row->StartTime)),
            
    php2JsTime(mySql2PhpTime($row->EndTime)),
            
    $row->IsAllDayEvent,
            
    0,
            
    0,
            
    $row->Color,
            
    1,
            
    $row->Location
           
          );
        }
     }catch(
    Exception $e){
         
    $ret['error'] = $e->getMessage();
      }
      return 
    $ret;
    }
    function 
    listCalendar($day$type){
      
    $phpTime js2PhpTime($day);
     
      switch(
    $type){
        case 
    "month":
          
    $st mktime(000date("m"$phpTime), 1date("Y"$phpTime));
          
    $et mktime(00, -1date("m"$phpTime)+11date("Y"$phpTime));
          break;
        case 
    "week":
        
          
    $monday  =  date("d"$phpTime) - date('N'$phpTime) + 1;
         
          
    $st mktime(0,0,0,date("m"$phpTime), $mondaydate("Y"$phpTime));
          
    $et mktime(0,0,-1,date("m"$phpTime), $monday+7date("Y"$phpTime));
          break;
        case 
    "day":
          
    $st mktime(000date("m"$phpTime), date("d"$phpTime), date("Y"$phpTime));
          
    $et mktime(00, -1date("m"$phpTime), date("d"$phpTime)+1date("Y"$phpTime));
          break;
      }
     
      return 
    listCalendarByRange($st$et);
    }
    function 
    updateCalendar($id$st$et){
      
    $ret = array();
      try{
        
    $db = new DBConnection();
        
    $db->getConnection();
        
    $sql "update `jqcalendar` set"
          
    " `starttime`='" php2MySqlTime(js2PhpTime($st)) . "', "
          
    " `endtime`='" php2MySqlTime(js2PhpTime($et)) . "' "
          
    "where `id`=" $id;
        
      if(
    mysql_query($sql)==false){
          
    $ret['IsSuccess'] = false;
          
    $ret['Msg'] = mysql_error();
        }else{
          
    $ret['IsSuccess'] = true;
          
    $ret['Msg'] = 'Succefully';
        }
     }catch(
    Exception $e){
         
    $ret['IsSuccess'] = false;
         
    $ret['Msg'] = $e->getMessage();
      }
      return 
    $ret;
    }
    function 
    updateDetailedCalendar($id$st$et$sub$ade$dscr$loc$color$tz){
      
    $ret = array();
      try{
        
    $db = new DBConnection();
        
    $db->getConnection();
        
    $sql "update `jqcalendar` set"
          
    " `starttime`='" php2MySqlTime(js2PhpTime($st)) . "', "
          
    " `endtime`='" php2MySqlTime(js2PhpTime($et)) . "', "
          
    " `subject`='" mysql_real_escape_string($sub) . "', "
          
    " `isalldayevent`='" mysql_real_escape_string($ade) . "', "
          
    " `description`='" mysql_real_escape_string($dscr) . "', "
          
    " `location`='" mysql_real_escape_string($loc) . "', "
          
    " `color`='" mysql_real_escape_string($color) . "' "
          
    "where `id`=" $id;
        
      if(
    mysql_query($sql)==false){
          
    $ret['IsSuccess'] = false;
          
    $ret['Msg'] = mysql_error();
        }else{
          
    $ret['IsSuccess'] = true;
          
    $ret['Msg'] = 'Succefully';
        }
     }catch(
    Exception $e){
         
    $ret['IsSuccess'] = false;
         
    $ret['Msg'] = $e->getMessage();
      }
      return 
    $ret;
    }
    function 
    removeCalendar($id){
      
    $ret = array();
      try{
        
    $db = new DBConnection();
        
    $db->getConnection();
        
    $sql "delete from `jqcalendar` where `id`=" $id;
      if(
    mysql_query($sql)==false){
          
    $ret['IsSuccess'] = false;
          
    $ret['Msg'] = mysql_error();
        }else{
          
    $ret['IsSuccess'] = true;
          
    $ret['Msg'] = 'Succefully';
        }
     }catch(
    Exception $e){
         
    $ret['IsSuccess'] = false;
         
    $ret['Msg'] = $e->getMessage();
      }
      return 
    $ret;
    }
     

    header('Content-type:text/javascript;charset=UTF-8');
    $method $_GET["method"];
    switch (
    $method) {
        case 
    "add":
            
    $ret addCalendar($_POST["CalendarStartTime"], $_POST["CalendarEndTime"], $_POST["CalendarTitle"], $_POST["IsAllDayEvent"]);
            break;
        case 
    "list":
            
    $ret listCalendar($_POST["showdate"], $_POST["viewtype"]);
            break;
        case 
    "update":
            
    $ret updateCalendar($_POST["calendarId"], $_POST["CalendarStartTime"], $_POST["CalendarEndTime"]);
            break; 
        case 
    "remove":
            
    $ret removeCalendar$_POST["calendarId"]);
            break;
        case 
    "adddetails":
            
    $st $_POST["stpartdate"] . " " $_POST["stparttime"];
            
    $et $_POST["etpartdate"] . " " $_POST["etparttime"];
            if(isset(
    $_GET["id"])){
                
    $ret updateDetailedCalendar($_GET["id"], $st$et
                    
    $_POST["Subject"], isset($_POST["IsAllDayEvent"])?1:0$_POST["Description"], 
                    
    $_POST["Location"], $_POST["colorvalue"], $_POST["timezone"]);
            }else{
                
    $ret addDetailedCalendar($st$et,                    
                    
    $_POST["Subject"], isset($_POST["IsAllDayEvent"])?1:0$_POST["Description"], 
                    
    $_POST["Location"], $_POST["colorvalue"], $_POST["timezone"]);
            }        
            break; 

    }
    echo 
    json_encode($ret); 
     
    ?>
    eu neste momento tenho o ficheiro fedd.php a ir buscar o id(do utilizador) mas como podem repara tenho $numero=1; e o que eu queria era que ele soubesse qual o id do utilizador que esta a utilizar o calendar e que fize-se o calendar a partir desse id de utilizadores

    cumps
     
    Última edição: 16 de Maio de 2012
  2. Boas
    Ou seja,neste momento estás a guardar eventos no calendário por utilizador,é isso?Cada utilizador tem vários dias associados (na base de dados),certo?O que tens de fazer é no PHP construir o atributo "events" do calendário,que é um array carregado para o calendário:
    Código:
    var events = $([selector]).jqcalendar( "option", "events" ); 
    
    //setter
    
    $([selector]).jqcalendar("option", "events",[   {     id: "14325",     title: "Leave",     start: new Date(2011, 10, 23),     end: new Date(2011, 10, 27)   } ]);
    Num loop no PHP vais construindo os eventos em Javascript e depois passas isso para o calendário:
    Código:
    $events = "[";
    while...[INDENT]$events += "{id: $id, title:$title, start:$startDate, end:$endDate},";[/INDENT]
    ...fim while
    $events += "]";
    echo "$([selector]).jqcalendar('option', 'events', $events);";
    
    
    O código não está completo,mas acho que dá para teres uma ideia.Esta é uma das maneiras de se fazer.
    Cumps
     
  3. fatm

    fatm Power Member

    desde ja obrigado pela resposta e pelo tempo perdido ao tentar ajudar-me..

    mas consegui resolver o problema que foi criar um login e passar a sessao com o id do utilizador ao calendario para fazer a pesquisa a base de dados ...agr ja consigo fazer o que queria

    cumprimentos e mais uma vez obrigado

    por mim podem fechar
     

Partilhar esta Página