Drupal DB doğru değerleri okuma değil

2 Cevap php

İşte benim geçerli bir sorundur. Ben chat module ile çalışıyorum ve ben onlar bir sohbete davet edildiğini AJAX ile kullanıcılara bildirir bir modül inşa ediyorum. Davet tablo için geçerli tablo yapısı aşağıdaki gibi görünür:

|-------------------------------------------------------------------------|
|  CCID  |  NID  |  INVITER_UID  | INVITEE_UID  |  NOTIFIED  |  ACCEPTED  |
|-------------------------------------------------------------------------|
|  int   |  int  |     int       |     int      |  (0 or 1)  |  (0 or 1)  |
|-------------------------------------------------------------------------|

Ben kullanıyorum periodical updater plug-in JQuery sürekli davetlere kontrol etmek için sunucuyu yoklamak için. Bir davet bulunduğunda, ben 0-1 bildirilir ayarlayın. Ancak, benim problem periyodik güncelleyici. Ben önce bir davet olduğunu gördüğünüzde, ben kullanıcıyı bilgilendirecek ve 1 bildirilir ayarlayın. Sonraki seçme üzerinde olsa da, güncelleme işe yaramadı sanki, daha önce aynı sonuçları almak. Ben veritabanını kontrol var Ama, ben sadece iyi çalıştı görebilirsiniz. Sorgu önbelleği sorgulama sanki, ama ben onu anlamaya olamaz.

Aşağıdaki gibi periyodik Güncellemesi için benim kod:

window.onload = function() {


var uid = $('a#chat_uid').html();

$.PeriodicalUpdater(
    '/steelylib/sites/all/modules/_chat_whos_online/ajax/ajax.php',     //url to service
    {
       method: 'get',           //send data via...
       data: {uid: uid},        //data to send
       minTimeout: '1000',      //min time before server is polled (milli-sec.)
       maxTimeout: '20000',     //max time before server is polled (milli-sec.)
       multiplyer: '1.5',       //multiply against curretn poll time every time constant     data is returned
       type: 'text',            //type of data recieved (response type)
       maxCalls: 0,             //max calls to make (0=unlimited)
       autoStop: 0              //max calls with constant data (0=unlimited/disabled)

    },
    function(data)              //callback function
    {
        alert( data ); //for now, until i get it working
    }
);

}



And my code for the ajax call is as follows:

<?php

#bootstrap Drupal, and call function, passing current user's uid.

function _create_chat_node_check_invites($uid)
{    
    cache_clear_all('chatroom_chat_list', 'cache');
    $query = "SELECT * FROM {chatroom_chat_invite} WHERE notified=0 AND invitee_uid=%d     and accepted=0";
    $query_results = db_query( $query, $uid );
    $json = '{"invites":[';
    while( $row = db_fetch_object($query_results) )
    {
      var_dump($row);
        global $base_url;
        $url = $base_url . '/content/privatechat' . $uid .'-' . $row->inviter_uid;

        $inviter = db_fetch_object( db_query( "SELECT name FROM {users} WHERE uid = %d", $row->inviter_uid ) );
        $invitee = db_fetch_object( db_query( "SELECT name FROM {users} WHERE uid = %d", $row->invitee_uid ) );

      #reset table
      $query = "UPDATE {chatroom_chat_invite} "
                ."SET notified=1 "
                ."WHERE inviter_uid=%d AND invitee_uid=%d";
      db_query( $query, $row->inviter_uid, $row->invitee_uid );

        $json .= '[';
        $json .= '"' . $url . '",';
        $json .= '"' .  ($inviter->name) . '",';
        $json .= '"' . ($invitee->name) . '"' ;
        $json .= '],';
    }
    $json = substr($json, 0, -1);
    $json .= ']}';

    return $json;
}
?>

Ben neyin yanlış gittiğini anlamaya olamaz, herhangi bir yardım büyük beğeni topluyor!

2 Cevap

Eh, bir süre oldu ve nihayet benim sorunu anladım, ama ben başkasının bu sayfayı buldu ve bir cevap istedim, onlar şans olduğunu fark ediyor. Yani burada sorun oldu.

Drupal fonksiyonları kullanılan AJAX çağrısı için işleyici Sine, Drupal (yukarıda kullanılan, ancak gösterilmemiştir) bootstrap vardı. Ben Drupal önyükleyicisini Ancak, ben tam bir ön yükleme yaptım. Bu Sohbet Modülü davet için kontrol bir kanca aramak neden. Normal kullanımda, hiçbir şey neyse, kanca bildirimleri için kontrol edin ve ve zaman (somehow.. I nasıl bilmiyorum) kullanıcıyı uyarmak içindir ... bana bildirilir, çünkü bu çağrıldığını olduğunu fark etmedi kontrol, true tebliğ bayrağını ayarlayın.

Yani, benim AJAX işleyici denilen ediliyordu zaman, davet zaten ChatRoom modülü tarafından bildirilen ayarlanmış olmuştu. Yani, benim çözüm kısmi bir bootstrap sadece oldu. Bootstrap için kod aşağıda. Ben başkasının sitesinde komut dosyası bulundu, ama ne olduğundan emin değilim. Her neyse ... Burada kodu:

<?php
    #bootstrap drupal to get access to drupal functions
    define('STRIP_LEN', -41); #length of path to use (strip off stuff like /sites/all/...)
    $base_url =  substr(getcwd(), 0, STRIP_LEN);
    chdir($base_url);
    global $base_url;

    $base_root = ( isset( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] == 'on' ) ? 'https' : 'http';

    $base_url = $base_root .= '://' . preg_replace('/[^a-z0-9-:._]/i', '', $_SERVER['HTTP_HOST']);

    if( $dir = trim( dirname( $_SERVER['SCRIPT_NAME'] ), '\,/' ) )
    {
        $base_path = "/$dir";
        $base_url .= $base_path;
    }
    $base_url = substr($base_url, 0, STRIP_LEN);


    require_once './includes/bootstrap.inc';
    require_once './includes/common.inc';

    drupal_bootstrap(DRUPAL_BOOTSTRAP_DATABASE);

    require_once drupal_get_path('module', '_chat_whos_online') . '/_chat_whos_online.inc';

    #END BOOTSTRAPPING
?>

Tarayıcı GET çağrısı önbellekleme olabilir. Taze Yükünüz her zaman zorlamak için AJAX isteği URL (şimdiki zaman iyi çalışır) bir önbellek-buster değer eklemeyi deneyin.