Ошибка Fatal error: Call to a member function checkStatus() on a non-object in

 
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1035
Добрый вечер.

Вопрос к программистам.
Делаю компонент отправки сообщение от сервиса mainsms.ru
В принципе уже много чего получилось, смски отправляются и приходят, статистика ведется.

Не могу заставить работать проверку статуса отправленного сообщения. Сам статус после обновления страницы напротив каждого сообщения выводиться, но если нажать на кнопку "Запросить", то выводиться след. ошибка

Fatal error: Call to a member function checkStatus() on a non-object in .../frontend.php on line 101

101 строка
Код PHP:
  1. $result = $api->checkStatus($sms['response']['messages_id']);
Сама функция
Код PHP:
  1. public function checkStatus($messagesId)
  2. {
  3. return $this->messageStatus($messagesId);
  4. }
В чем может быть проблема?

Посмотреть можно тут http://i110.arkweb.ru/smssend

P.S. - отправку сообщение на время отключил)
Редактировалось: 1 раз (Последний: 29 ноября 2012 в 20:37)
Посетитель
small user social cms
Медаль
Сообщений: 150
вы объявляете класс api в этом контексте?
$api = new SmsClass(); или что то подобное в контексте условия у вас есть?
Реклама
cms
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1035
Да, конечно

Код PHP:
  1. $api = new cms_model_smssend('instest', 'здесь ключ апи', false, true);
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1035
kir, спасибо вам большое), сам не заметил, что еще до проверки статуса закрыл функцию
Посетитель
small user social cms
Медаль
Сообщений: 150
да не за что) бывает.)
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1035
Еще один вопрос, наверное покажется глупым))

Как мне в шаблоне вывести данные из массива?

Массив имеет вид

Код PHP:
  1.  
  2. [0] => Array ( [response] => Array ( [status] => error [error] => 8 [message] => invalid sender ) [text] => adfhsndv [sender] => 555 [time] => 1354212219 )
  3. [1] => Array ( [response] => Array ( [status] => success [recipients] => Array ( [0] => 79056936700 ) [messages_id] => Array ( [0] => 677656 ) [count] => 1 [parts] => 1 [price] => 0,15 [balance] => 6,5 [test] => 0 ) [text] => ardsf [sender] => 55555 [time] => 1354212227 )
  4. [2] => Array ( [response] => Array ( [status] => success [recipients] => Array ( [0] => 79056936700 ) [messages_id] => Array ( [0] => 677658 ) [count] => 1 [parts] => 1 [price] => 0,15 [balance] => 6,35 [test] => 0 ) [text] => ardsf [sender] => 55555 [time] => 1354212471 )
  5. )
  6.  
Пишу в шаблоне
Код PHP:
  1. {foreach key=messages_id item=text from=$sms}
  2. {sms.sender}
  3. {/foreach}
  4.  
Но отправитель не выводится

Мне кажется я что то с key и item в цикле намудрил...
Посетитель
small user social cms
Медаль
Сообщений: 150
а если так
Код PHP:
  1.  
  2.  
  3. {foreach item=text from=$sms}
  4. {$text.sender}
  5. {/foreach}
  6.  
  7.  
или так

Код PHP:
  1.  
  2.  
  3. {section name=item loop=$sms}
  4. {$sms[item].sender}
  5. {/section}
  6.  
  7.  
Редактировалось: 2 раз (Последний: 30 ноября 2012 в 11:06)
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1035
Да я уже вывел вот так
Код PHP:
  1.  
  2. {foreach item=message from=$sms}
  3. {$message.sender}
  4. {/foreach}
  5.  
Сейчас уже другая проблема.
Я так понял, что в этом массиве имеются вложенные массивы. Из основного я вывел, а именно sender, time и text
А вот остальное вывести никак не могу. Мне нужно еще вывести message_id, price и status. И не могу еще вывести получателя. Код на php такой
Код PHP:
  1. <?php echo implode(",",$sms['response']['recipients']);?>
Но как мне в смарти такой сделать?
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1035
И с большинством других проблем тоже разобрался) Получилось вывести вложенным циклом
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1035
Блин, все равно какая то муть выводиться. Вроде все что нужно, но появились еще и лишние столбцы.
Код такой
Код PHP:
  1.  
  2. {foreach name=outer item=message from=$sms}
  3. <tr>
  4. <td>{$i++}</td>
  5. <td>{$message.sender}</td>
  6. <td>{php} echo implode(",",$sms['response']['recipients']);{/php}</td>
  7. <td>{$message.text}</td>
  8. <td>{$message.time}</td>
  9.  
  10. {foreach key=key item=status from=$message}
  11. <td>{$status.price}</td>
  12. <td>{$status.status}</td>
  13. {/foreach}
  14. <td><a href="?status={$o++}">Запросить</a></td>
  15. </tr>
  16. {/foreach}
  17.  
Выводи на сайте такую табличку
Ошибка Fatal error: Call to a member function checkStatus() on a non-object in


То что выделенно красным это лишнее, и я не пойму откуда это берется
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1035
тоже разобрался)
Посетитель
small user social cms
Медаль
Сообщений: 150
к успеху идешь)

а вообще зная четко структуру ответа и зная что она не меняется не нужно вложенные циклы) через ключ обращаться просто дальше можно)
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1035
kir, я пока только учусь)) То что я сделал за эти два дня, для кого то мелочь и 15 минут работы, а для меня целый прорыв)
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1035
Вот еще одна проблемка возникла, и никак не могу ее победить.
Не могу вывести все отправленные сообщения из базы. Записать в базу их получилось, запись работает. А вот вывод нет.

в model.php
Код PHP:
  1.  
  2. public function getSms() {
  3.  
  4. $inCore = cmsCore::getInstance();
  5.  
  6. $sql = "SELECT *
  7. FROM fin_smssend";
  8.  
  9. $result = $this->inDB->query($sql);
  10.  
  11. if ($this->inDB->error()) { return false; }
  12.  
  13. if (!$this->inDB->num_rows($result)) { return false; }
  14.  
  15. $sms_mess = array();
  16.  
  17. while ($sms_mess = $this->inDB->fetch_assoc($result)){
  18.  
  19. $sms_mess['pubdate'] = $inCore->dateFormat($sms_mess['pubdate']);
  20. $sms_mess[] = $sms_mess;
  21.  
  22. }
  23.  
  24. return $sms_mess;
  25.  
  26. }
  27.  
и в frontend.php

Код PHP:
  1. $sms_mess = $api->getSms();
  2.  
  3. $is_admin = $inUser->is_admin;
  4.  
  5. $inPage->setTitle("История отправленных сообщений");
  6.  
  7. $smarty = $inCore->initSmarty('components', 'com_smssend_history.tpl');
  8.  
  9. $smarty->assign('sms_mess', $sms_mess);
  10. $smarty->assign('is_admin', $is_admin);
  11.  
  12. $smarty->display('com_smssend_history.tpl');
  13.  
  14. return;
Соответственно сообщений никаких не выводится.
print_r ($sms_mess); - ничего не выводит
var_dump ($sms_mess); - выводит bool(false)

Вот никак и не могу понять в чем проблема
Посетитель
small user social cms
Медаль
Сообщений: 150
Rossoman:

Вот еще одна проблемка возникла, и никак не могу ее победить.
Не могу вывести все отправленные сообщения из базы. Записать в базу их получилось, запись работает. А вот вывод нет.

в model.php
Код PHP:
  1.  
  2. public function getSms() {
  3.  
  4. $inCore = cmsCore::getInstance();
  5.  
  6. $sql = "SELECT *
  7. FROM fin_smssend";
  8.  
  9. $result = $this->inDB->query($sql);
  10.  
  11. if ($this->inDB->error()) { return false; }
  12.  
  13. if (!$this->inDB->num_rows($result)) { return false; }
  14.  
  15. $sms_mess = array();
  16.  
  17. while ($sms_mess = $this->inDB->fetch_assoc($result)){
  18.  
  19. $sms_mess['pubdate'] = $inCore->dateFormat($sms_mess['pubdate']);
  20. $sms_mess[] = $sms_mess;
  21.  
  22. }
  23.  
  24. return $sms_mess;
  25.  
  26. }
  27.  
и в frontend.php

Код PHP:
  1. $sms_mess = $api->getSms();
  2.  
  3. $is_admin = $inUser->is_admin;
  4.  
  5. $inPage->setTitle("История отправленных сообщений");
  6.  
  7. $smarty = $inCore->initSmarty('components', 'com_smssend_history.tpl');
  8.  
  9. $smarty->assign('sms_mess', $sms_mess);
  10. $smarty->assign('is_admin', $is_admin);
  11.  
  12. $smarty->display('com_smssend_history.tpl');
  13.  
  14. return;
Соответственно сообщений никаких не выводится.
print_r ($sms_mess); - ничего не выводит
var_dump ($sms_mess); - выводит bool(false)

Вот никак и не могу понять в чем проблема


если честно я бы сделал так:
в model.php
Код PHP:
  1.  
  2. public function getSms() {
  3.  
  4. $inCore = cmsCore::getInstance();
  5.  
  6. $sql = "SELECT *
  7. FROM `fin_smssend`";
  8.  
  9. $result = $this->inDB->query($sql);
  10.  
  11. //if ($this->inDB->error()) { return false; } //опционально
  12.  
  13. //if (!$this->inDB->num_rows($result)) { return false; } // лишния часть, т.к в контроллере можно проверить не пустой ли результат функции
  14.  
  15. $sms_mess = array();
  16. $i = 0;
  17. while ($item = $this->inDB->fetch_assoc($result)){
  18.  
  19. $sms_mess[$i] = $item;
  20. $sms_mess[$i]['pubdate'] = $inCore->dateFormat($item['pubdate']);
  21. $i++;
  22. }
  23.  
  24. return $sms_mess;
  25.  
  26. }
  27.  
Редактировалось: 1 раз (Последний: 2 декабря 2012 в 17:13)
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.