2012-10-08 5 views
7

से और बाद में बदलावों को ध्यान में रखता है, मैं एक कॉन्फ़्रेंस रूम बुकिंग कैलेंडर डिबग कर रहा हूं जिसे किसी ऐसे व्यक्ति द्वारा रखा गया था जो अब मेरे साथ काम नहीं कर रहा है। यह एक दुःस्वप्न रहा है क्योंकि इसमें बहुत सी चीजें गलत थीं, लेकिन मुझे यह पता लगाने में परेशानी हो रही है कि आखिरी बग क्या हो रहा है। कैलेंडर यह देखने के लिए जांच करता है कि कमरे निश्चित रूप से कुछ समय पहले बुक किए जा चुके हैं और उन्हें सही समय पर बुक के रूप में कोई समस्या नहीं दिख रही है, लेकिन यदि कोई कमरा कमरे के खाली होने के बाद एक घंटे या उससे कम कमरे बुक करने का प्रयास करता है डीएसटी में या उससे स्थानांतरित करें, यह कमरे को अभी भी बुक के रूप में दिखाता है। उदाहरण:कोड में फ़ंक्शन मैं डीबगिंग कर रहा हूं, डीएसटी

  • उपयोगकर्ता देखता है कि कमरा 2 9 नवंबर से 9 पूर्वाह्न 10 बजे तक आरक्षित है।
  • उपयोगकर्ता 2 9 नवंबर को अपराह्न 10:30 पूर्वाह्न 12:00 बजे कमरे बुक करने का प्रयास करता है।
  • कैलेंडर इस दूसरे अनुरोध को रद्द करता है और उपयोगकर्ता को सूचित करता है कि कमरा पहले ही बुक हो चुका है।

यह ध्यान दिया जाना चाहिए कि यह डीएसटी (4 नवंबर) में बदलाव से पहले कभी भी नहीं होता है। यहाँ समारोह जो अगर कमरे उपलब्ध है निर्धारित करता है:

function calCheck($starttime, $endtime, $cal_name, $cat_id, $myDB, $myHost, $myUser, $myPass) { 
    $timezone = 'America/Denver'; 
    date_default_timezone_set ($timezone); 
    $dset = new DateTime($odate, new DateTimeZone($timezone)); 
    $dset2 = $dset->getOffset(); 

    //$starttime = $starttime + 1; 
    //$endtime = $endtime - 1;  
    $starttime = $starttime - $dset2 + 1; 
    $endtime = $endtime - $dset2 - 1; 
    $starttime = $starttime; 
    $endtime = $endtime; 

    //echo $starttime .'</br>'. $endtime . '</br>'; 
    $db = new myDB($myDB, $myHost, $myUser, $myPass); 
    $db->myDB_Connect(); 
    //echo 'calcheck</br>'; 
    $ck_query = 'SELECT * FROM vw_cal_chk 
        WHERE (stime < '. $starttime . ' AND etime > ' . $starttime . ') and Calendar = "' . $cal_name . '" and cat_id = "' .$cat_id . '" 
        OR (stime < ' . $endtime . ' AND etime > ' . $endtime . ') and Calendar = "' . $cal_name . '" and cat_id = "' .$cat_id . '" 
        OR (stime >= '. $starttime . ' AND etime < ' . $endtime .') and Calendar = "' . $cal_name . '" and cat_id = "' .$cat_id . '"'; 
    $ck_result = $db->myQuery($ck_query); 
    $num = mysql_num_rows($ck_result); 
    //echo $ck_query . '</br>' . $num; 
    if ($num >> 0){ 
     $avail = 1; 
    } else { 
     $avail = 0; 
    } 
    return $avail; 
} 

मेरी टाइम स्टाम्प्स के सभी इस बात पर निर्भर UTC में हैं और मैं $odate चर वास्तव में कहीं भी कभी नहीं instantiated है नोटिस, लेकिन मैं निर्धारित करने में सक्षम नहीं किया गया है ऑफसेटिंग सही ढंग से काम करने के लिए इसे पास करने के लिए क्या मूल्य है। अगर मैं यह जान सकता हूं कि यह किस तरह की तारीख चाहता है, तो मुझे बाकी काम करने में सक्षम होना चाहिए।

+3

मुझे लगता है कि $ odate अनसेट है, जिसका मतलब है कि डेटटाइम को कॉल शून्य हो गया है, जिसे मुझे संदेह है (अगर यह बिल्कुल काम करता है) को डिफ़ॉल्ट 'अब' के रूप में संसाधित किया जाना चाहिए। आप दिनांक ('मैं') का उपयोग कर डीएसटी के लिए परीक्षण कर सकते हैं और फिर तदनुसार अपने ऑफसेट को ऑफसेट कर सकते हैं। – Gavin

+0

क्या आपने अपने सर्वर पर सभी चेतावनियों को सक्षम करने का प्रयास किया है? यानी त्रुटि_ रिपोर्टिंग (-1); ini_set ('display_errors', 'चालू'); ' –

उत्तर

1

$ odate शून्य है जो आपको वर्तमान ऑफसेट देने के लिए डिफ़ॉल्ट है। आप जो चाहते हैं वह उस समय ऑफसेट है जब शेड्यूल को इस समय ऑफसेट नहीं किया जा रहा है। ऐसा लगता है कि आपकी डेटाबेस तिथियां माउंटेन टाइम में हैं और आपका स्टार्टडेट यूटीसी है और आप ऑफसेट को माउंट पर वापस जाने के लिए घटा रहे हैं (मुझे लगता है कि आप ऑफ़सेट को घटाएंगे, इसलिए मैं इसे उलट सकता हूं, क्या आप क्वेरी कर सकते हैं अपना डेटाबेस और इसे समझें?)

किसी भी घटना में आपको $ स्टार्टडेट का उपयोग करके अपने ऑफ़सेट की गणना करना चाहिए(), $ odate के लिए $ startdate को स्विच करने का प्रयास करें और देखें कि क्या होता है। यदि यह काम नहीं करता है तो स्टार्टडेट से स्ट्रिंग बनाने का प्रयास करें और फिर उस स्ट्रिंग से एक नई तारीख उत्पन्न करें। यदि उस स्ट्रिंग को आउटपुट करने के अलावा कुछ भी आपको स्पष्ट तस्वीर नहीं देनी चाहिए कि क्या $ स्टार्टडेट यूटीसी या पहाड़

संबंधित मुद्दे