2015-04-22 3 views
-1

Об исполнении моей функции, появляется ошибка:PHP GCM Undefined индекс

[23-Apr-2015 01:08:39 Europe/Berlin] PHP Notice: Undefined index: syncNewData in C:\xampp\index.php on line 972

для линии: $pushMessageTag = isset($_POST["syncNewData"]) ? $_POST["syncNewData"] : $_POST["syncNewData"]; в функции:

function updateDataGCM($db) { 
    // Get all the GCM regIDs for anyone with new, "unseen" data: 
    $sqlAllRegIds = 'select distinct gcm_registration_id 
        from users 
        where id in (
        select distinct myId as usersID from group_messages WHERE `read` = 1 
        UNION 
        SELECT distinct touid as usersID from messages where `read` = 1 
        UNION 
        SELECT distinct invited_id as usersID from event_invites where `status` = 1 
        UNION 
        select distinct receiver_id as usersID from group_invites where `status` = 1 
        UNION 
        select distinct requestId as usersID from friends where `status` = 1 
        )'; 

    // Execute 
    if ($resultIds = $db->query($sqlAllRegIds)) 
    { 

     $pushMessageTag = isset($_POST["syncNewData"]) ? $_POST["syncNewData"] : $_POST["syncNewData"]; 
     $gcmRegIds = array($resultIds); 
     $message = array("syncNewData" => $pushMessageTag); 
     $pushStatus = sendPushNotificationToGCM($gcmRegIds, $message); 
     return $pushStatus; 
    } 

} 

Я не понимаю, почему эта ошибка будет происходят, как облегчить?

UPDATE:

Это действие, которое, на пользователь посылает сообщение, будет посылать синхронизации сообщений GCM:

case "sendGroupMessage": 
     if ($userId = authenticateUser($db, $username, $password, $gcmregid)) 
     { 
      if (isset($_REQUEST['toGroupId'])) 
      { // instead of toUserName it's to a groupId 
       $toGroupName = $_REQUEST['toGroupName']; 
       $toGroupId = $_REQUEST['toGroupId']; 
       $message  = $_REQUEST['messageText']; 
       $campaign = $_REQUEST['campaign_id']; 
       $location = $_REQUEST['location_id']; 

       // Query to get the users id's who are in the group but not the user sending the message   
       $sqlGroupMembers = "SELECT DISTINCT usersId from users_groups 
        WHERE usersId != '".$userId."' AND groupId = '".$toGroupId."'"; 


       // Loop to create a copy of message for all users taht are part of that group 
       if($getGroupMembersId = $db->query($sqlGroupMembers)) 
       { 
        while($rowGroupMembers = $db -> fetchObject($getGroupMembersId)) 
        { 
         $sql22 = "INSERT INTO `group_messages` ..."     

         error_log("$sql22", 3 , "error_log"); 
         if ($db->query($sql22)) 
         { 

          $out = SUCCESSFUL; 

         }    
         else 
         { 
          $out = FAILED; 
         }     

        }    


       } 

       // Send GCM to turn on devices: 
       echo updateDataGCM($db);     

      } 
      else 
      { 
       $out = FAILED; 
      }   

     } 
     else 
     { 
      $out = FAILED; 
     } 
    break; 

Оригинальный updateDataGCM()

работал отлично :

function updateDataGCM() { 

    $gcmRegID = 'test id' 
    $pushMessage = $_POST["syncNewData"]; 
    $gcmRegIds = array($gcmRegID); 
    $message = array("syncNewData" => $pushMessage); 
    $pushStatus = sendPushNotificationToGCM($gcmRegIds, $message); 

    return $pushStatus; 
} 
+0

ваша форма метод POST и делает элемент несет имя атрибута из "syncNewData"? они также чувствительны к регистру, если вы сделали опечатку. –

+1

плюс этот 'isset ($ _ POST [" syncNewData "])? $ _POST ["syncNewData"]: $ _POST ["syncNewData"]; 'обычно имеет' '' 'вместо' isset ($ _ POST ["syncNewData"])? $ _POST ["syncNewData"]: ''; ' –

+0

@ Fred-ii- Нет формы, это строго на моем PHP-сервере и выполняется на пользователе db aciton – Sauron

ответ

0

Ваш Данные POST не включают переменную, называемую syncNewData. Эта линия:

$pushMessageTag = isset($_POST["syncNewData"]) ? $_POST["syncNewData"] : $_POST["syncNewData"]; 

, который, как представляется, тестирование на наличие этой переменной, будет относиться к $_POST['syncNewData'] ли она или нет набора.

Вы, вероятно, нужно

$pushMessageTag = isset($_POST["syncNewData"]) ? $_POST["syncNewData"] : ''; 

который будет возвращать переменную е она существует, или пустую строку, если она не

+0

Я сказал, что (фактически два раза), и они говорят, что они все еще получают ту же ошибку. –

+0

@Fred хорошо, либо они обновили неправильный код, либо одна и та же ошибка происходит отдельно в другом месте своего кода, и они не правильно прочитали номера строк. Теперь им придется разобраться в себе. –

+0

Да, ну Android-материал не то, что я знаю, хотя в их вопросе нет кода Android; что я точно знаю, что это не так. Что касается того, почему он был помечен как таковой, я не знаю. Ошибка, скорее всего, в коде Android, а не в том, что они разместили. Это, вместе с неправильным тройным. –

Смежные вопросы