2017-09-25 122 views
0

今天问题解决了前面。在第二行代码global $db,$tags;覆盖了if($this->has_lead_type_selected($person['ID'],$tags)),导致全局$标签覆盖代码下部的$标签。所以全局变量是空的,因为它是在实际的$ tags var被赋予一个函数之前。准备好了mysql语句和数组

当HTML表单提交给我们的REST API发送数据称为“lead_type”,这是简单的标签,以确定发送的领先优势。

用户选择一个标签云,这些标签。如果表单使用其中一个标签(lead_type)提交给API,并且我们的任何用户配置文件都与这些标签(它们在标签云中选择的)匹配。用户被发送短信通知他们。

一切职位对数据库表中,API作品,但用户的每个人仍然得到一个短信,即使他们没有匹配的标签。如果我注释掉该行(我将显示下面的其他代码),则会向每个人发送短信。如果我将其取消注释,则不会向任何人发送短信。

if($this->has_lead_type_selected($person['ID'],$tags)) 

下面是代码流程。

} 
private function has_lead_type_selected($user_id,$tags){ 
    global $db,$tags; 
    $lead_types = explode(',',$tags); 
    $user_lead_types = $db 
        ->where('user_id',$user_id) 
        ->where('lead_type_id', $lead_types, 'IN') 
        ->get('user_lead_types'); 

    return sizeof($user_lead_types) > 0; 

} 


//Get lead types from API post and create $tags 
      $lead_types = $this->request['leadData']['lead_types']; 
      $strTags = array(); 
      if(!empty($lead_types)) 
       $strTags = explode(',',$lead_types); 

      $tags = ''; 

      $lead_types_objects = $db->where('lead_type', $strTags,'IN')->get('lead_types'); 

      foreach($lead_types_objects as $l) 
      { 
       if($tags=='') 
        $tags = $l['id']; 
       else 
        $tags.=',' .$l['id']; 
      } 

然后,如果表单标签与用户云标签匹配,我们会向他们发送短信。

global $sid,$token; 
      $client = new Twilio\Rest\Client($sid, $token); 

     $content_data = [   
      "leadname" => $posted_name, 
      "leadzipcode" => $posted_zipcode, 
      "leadphone" => $posted_phone, 
      "leademail" => $posted_email, 
      "leadtags" => $lead_types   
      ]; 

     //Replace Content 
     foreach($content_data as $index => $value){ 
      $lead_sms_template = str_replace("|".$index."|", $value, $lead_sms_template); 
     } 

     // Step 5: Loop over all our friends. $number is a phone number above, and 
     // $name is the name next to it 
     foreach ($people as $person) { 
      try{ 
       //commented temporarily -- uncommented below to try to solve issue of texting everyone still 
       if($this->has_lead_type_selected($person['ID'],$tags)) 
       { 
        $number = $person['phone_no']; 
        $name = $person['first_name']. ' '. $person['last_name']; 

谢谢你的帮助。

+0

has_lead_type_selected应该检查用户是否有一个选定的标签或全部选定的标签? – Svetoslav

+0

今天早些时候解决了这个问题。在第二行代码全局$ db,$ tags;如果($ this-> has_lead_type_selected($ person ['ID'],$ tags))覆盖,导致全局$标记覆盖代码下部的$标记。所以全局变量是空的,因为它是在实际的$ tags var被赋予一个函数之前。 –

回答

2

在代码全球$db$tags的第二线;覆盖了if($this->has_lead_type_selected($person['ID'],$tags)),导致全局$tags在代码的较低部分覆盖$tags。所以全局变量是空的,因为它在实际的$tags变量被赋予一个函数之前。

+0

感谢您修复我的评论,我如何在未来对自己的问题做出回答? –

+0

嘿科迪,你可以简单地把它放在答案领域,就像你在任何其他问题上一样。 –