2015-12-23 3 views
-2

Я полностью новичок в php. Я был системой (личным использованием), которая была построена на php. Система должна отправлять электронную почту, когда создается или обновляет порядок работы. Но перед методом электронной почты объект имеет значение null. Я не знаю, как это исправить.

function AUIEO_SEND_HOOK_EMAIL ($record) 
{ 

    $recruiter=$record["recruiter"]; 
    $sql="select * from user where user_id='{$recruiter}'"; 
    $db=DatabaseConnection::getInstance(); 
    $arrAssoc=$db->getAllAssoc($sql); 
    $emailAddress=$arrAssoc[0]["email"]; 

    debug_to_console($emailAddress); 
    $site_id=$arrAssoc[0]["site_id"]; 
    debug_to_console($site_id); 
    if($emailAddress) 
    { 
     $obj=new JobOrders($site_id); 
     $obj->load($record["id"]); /* $obj is here null */    
     $obj->sendTemplateEMail("My Joborder 2", $emailAddress); 
     debug_to_console("email sent"); 
    } 

    $owner=$record["owner"]; 
    $sql="select * from user where user_id='{$owner}'"; 
    $db=DatabaseConnection::getInstance(); 
    $arrAssoc=$db->getAllAssoc($sql); 
    $emailAddress=$arrAssoc[0]["email"]; 
    $site_id=$arrAssoc[0]["site_id"]; 
    if($emailAddress) 
    { 
     $obj=new JobOrders($site_id); 
     $obj->load($record["id"]); 
     $obj->sendTemplateEMail("My Joborder 2", $emailAddress); 
    } 
} 

$obj имеет значение null. JobOrders класс в ./lib/JobOrders.php местоположение. поэтому я включил include_once('./lib/JobOrders.php'); в файл. все равно он не работает.

Любой ключ?

+0

'$ emailAddress' не влияет на' $ obj', являющийся нулевым. Нам нужен код ** JobOrders.php ** и значение '$ site_id'. – trincot

+0

Где вы печатаете $ obj, и почему вы думаете, что это null? $ obj никогда не будет null, если оператор execute if (конечно, если вы не печатаете до инициализации, в этом коде) –

+0

@trincot вот код https://codeshare.io/CH54x для JobOrders.php и https://codeshare.io/394Vs для Modules.php – James123

ответ

0

Какова ценность $ emailAddress? Ваше утверждение if ничего не делает. Вы должны сравнить свою переменную с тем, что либо заканчивается как истина, либо ложь (или 1 или 0). Ваш, если всегда терпит неудачу, потому что он никогда не является «истинным».

Я думаю, что вы пытаетесь сделать следующее. Проверка наличия адреса электронной почты. Вы можете использовать функцию isset() для того, что вернет true, если переменная установлена ​​(и, следовательно, вводит оператор if) и в противном случае возвращает false.

Попробуйте это:

if(isset($emailAddress)){ 
    $obj=new JobOrders($site_id); 
    $obj->load($record["id"]); /* $obj is here null */    
    $obj->sendTemplateEMail("My Joborder 2", $emailAddress); 
    debug_to_console("email sent"); 
} 

И:

if(isset($emailAddress)) { 
    $obj=new JobOrders($site_id); 
    $obj->load($record["id"]); 
    $obj->sendTemplateEMail("My Joborder 2", $emailAddress); 
} 

Als вы должны прочитать немного о if statements в PHP.

+0

Это действительно относится к разделу комментариев, а затем как ответ ... Уже установлено, что выполняется код внутри if. – trincot

+0

не правда ли? Он только отметил, что письмо имеет ценность. Он может иметь значение «[email protected]» и по-прежнему не выполняет оператор if – cpalinckx

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