Перейти к содержанию
Официальный форум поддержки Simpla

Ответ на комментарий с уведомлением автору


Рекомендуемые сообщения

Это может значить, что:

1. У Вас очень старая версия Simpla (в пути стоит ...\admin\CommentAdmin.php). А судя по содержанию, авторская разработка предназначена для версии 2.

2. Ваша версия рассчитана на PHP 5.2, а реально у Вас более свежая.

 

Если хотите ставить это дополнение, то надо каждый момент анализировать и приспосабливать под свою ситуацию...

Ссылка на сообщение
Поделиться на другие сайты

версия 2.3.6 , не думаю что старая,  php с 5.3 переключил на 5.2 и никаких изменений.

Изменено пользователем martinways
Ссылка на сообщение
Поделиться на другие сайты

версия 2.3.6 , не думаю что старая,  php с 5.3 переключил на 5.2 и никаких изменений.

в CommentAdmin.php перед

$comment->id = $this->request->post('id', 'integer');

вставьте

$comment = new StdClass();

и проверьте какой запрос к базе выполняется при обновлении комментария

Ссылка на сообщение
Поделиться на другие сайты

Как проверять запрос к базе не в курсе. Добавил $comment = new StdClass(); , при заходе на страницу редактирования вверху сообщение  

Strict Standards: Creating default object from empty value in C:\web\OpenServer\domains\evotime\admin\CommentAdmin.php on line 34

 

После нажатия кнопки СОХРАНИТЬ сообщение ошибки пропадает, ну и все так же ничего не сохраняется.

Ссылка на сообщение
Поделиться на другие сайты

версия 2.3.6 , не думаю что старая,  php с 5.3 переключил на 5.2 и никаких изменений.

 

В сообщении об ошибке у Вас стоит путь:

 

Strict Standards: Creating default object from empty value in C:\web\OpenServer\domains\evotime\admin\CommentAdmin.php on line 11

В стандартной Simpla 2.3.6 НЕ МОЖЕТ быть такого пути (нет папки admin). Видимо, у Вас что-то совсем не так, как Вы говорите. Возможно, переделывалось или обновлялось...

Ссылка на сообщение
Поделиться на другие сайты

Как проверять запрос к базе не в курсе. Добавил $comment = new StdClass(); , при заходе на страницу редактирования вверху сообщение  

Strict Standards: Creating default object from empty value in C:\web\OpenServer\domains\evotime\admin\CommentAdmin.php on line 34

 

После нажатия кнопки СОХРАНИТЬ сообщение ошибки пропадает, ну и все так же ничего не сохраняется.

 

а, да, переставьте 

$comment = new StdClass();

перед 

if($this->request->method('POST'))

тогда ошибки не будет.

 

чтобы посмотреть запрос, который отправляется, в update_comment функции в api/Comments.php выведите 

print_r($query);
Изменено пользователем mishanya
Ссылка на сообщение
Поделиться на другие сайты

 

В сообщении об ошибке у Вас стоит путь:

 

В стандартной Simpla 2.3.6 НЕ МОЖЕТ быть такого пути (нет папки admin). Видимо, у Вас что-то совсем не так, как Вы говорите. Возможно, переделывалось или обновлялось...

 

это симпла нуленная у него. там такой путь.

Ссылка на сообщение
Поделиться на другие сайты

 

а, да, переставьте 



$comment = new StdClass();

перед 



if($this->request->method('POST'))

тогда ошибки не будет.

 

чтобы посмотреть запрос, который отправляется, в update_comment функции в api/Comments.php выведите 



print_r($query);

Да, ошибка пропала, но ниче не заработало. Куда добавлять print_r($query); ? 

 

// Изменение комментария

    public function update_comment($id, $comment)

    {

        $date_query = '';

        if(isset($comment->date))

        {

            $date = $comment->date;

            unset($comment->date);

            $date_query = $this->db->placehold(', date=STR_TO_DATE(?, ?)', $date, $this->settings->date_format);

        }

        $query = $this->db->placehold("UPDATE __comments SET ?% $date_query WHERE id in(?@) LIMIT 1", $comment, (array)$id);

        $this->db->query($query);

        return $id;

    }

Ссылка на сообщение
Поделиться на другие сайты

Получаю сообщение  UPDATE s_comments SET id='50', name='Алексей', email='', type='product', object_id='241', approved='1', text='ну так все же сколько будет отдельно один ремешок ', otvet='' WHERE id in('50') LIMIT 1

Ссылка на сообщение
Поделиться на другие сайты

Получаю сообщение  UPDATE s_comments SET id='50', name='Алексей', email='', type='product', object_id='241', approved='1', text='ну так все же сколько будет отдельно один ремешок ', otvet='' WHERE id in('50') LIMIT 1

 

А поля вы добавили в базу? otvet и email

Ссылка на сообщение
Поделиться на другие сайты

нет, я хотел только редактирование комментария реализовать, а это обязательно надо? может в этом причина

Изменено пользователем martinways
Ссылка на сообщение
Поделиться на другие сайты

нет, я хотел только редактирование комментария реализовать, а это обязательно надо? может в этом причина

 

при обновлении комментария эти поля передаются в функцию, которая пытается записать их в базу, а там их нет. соотвественно возникает ошибка записи в базу.

 

вам нужно либо удалить

$comment->email = $this->request->post('email');
$comment->otvet = $this->request->post('otvet');

либо добавить в s_comments эти два поля.

дальше все должно работать, даже если вы не хотите выводить ответ от администратора.

Ссылка на сообщение
Поделиться на другие сайты

Все ок, только в логах ошибки пишет что в файле CommentAdmin.php ошибки в строчках 

 

$comment->id = $this->request->post('id', 'integer');

 

 

и 

 

$comment->id = $this->request->get('id', 'integer');

 

соответственно при открытии и изменении комментария

Ссылка на сообщение
Поделиться на другие сайты

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

 

Первую строчку точно можно дельнуть я думаю

 

$comment->id = $this->request->post('id', 'integer');

 

А вот вторая, как мне кажется, это важная часть кода. Возможно тогда нужно удалить всю команду целиком

 

		else
		{
			$comment->id = $this->request->get('id', 'integer');
			$comment = $this->comments->get_comment(intval($comment->id));
		}

 

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

Ссылка на сообщение
Поделиться на другие сайты

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

 

Первую строчку точно можно дельнуть я думаю

 

$comment->id = $this->request->post('id', 'integer');

 

А вот вторая, как мне кажется, это важная часть кода. Возможно тогда нужно удалить всю команду целиком

 

		else
		{
			$comment->id = $this->request->get('id', 'integer');
			$comment = $this->comments->get_comment(intval($comment->id));
		}

 

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

 

по айди выбирается и обновляется комментарий. а какую ошибку выдавало? после удаления полей email и otvet

Ссылка на сообщение
Поделиться на другие сайты

Все ок, только в логах ошибки пишет что в файле CommentAdmin.php ошибки в строчках 

 

$comment->id = $this->request->post('id', 'integer');

 

 

и 

 

$comment->id = $this->request->get('id', 'integer');

 

соответственно при открытии и изменении комментария

 

 

Спасибо, удалил строчки и все заработало.

 

Очень странно. Не должно работать при таком удалении.  Разве что Вы еще чего наизменяли...

Ссылка на сообщение
Поделиться на другие сайты

Очень странно. Не должно работать при таком удалении.  Разве что Вы еще чего наизменяли...

 

Я вот тоже так подумал) А почему в этих строчках ошибки могут выводится? Но при этом все работает.

Ссылка на сообщение
Поделиться на другие сайты

по айди выбирается и обновляется комментарий. а какую ошибку выдавало? после удаления полей email и otvet

 

error_log

 

PHP Warning:  Creating default object from empty value in *путь к файлу*/simpla/CommentAdmin.php on line 40
PHP Warning:  Creating default object from empty value in *путь к файлу*/simpla/CommentAdmin.php on line 11
Ссылка на сообщение
Поделиться на другие сайты

error_log

 

PHP Warning:  Creating default object from empty value in *путь к файлу*/simpla/CommentAdmin.php on line 40

PHP Warning:  Creating default object from empty value in *путь к файлу*/simpla/CommentAdmin.php on line 11

$comment = new stdClass();
Ссылка на сообщение
Поделиться на другие сайты

Я добавил в начало и в середину код и ошибка исчезла

 

<?PHP

require_once('api/Simpla.php');

class CommentAdmin extends Simpla
{
	public function fetch()
	{
		if($this->request->method('POST'))
		{
			$comment = new stdClass();
			$comment->id = $this->request->post('id', 'integer');
			$comment->name = $this->request->post('name');
			$comment->email = $this->request->post('email');
			$comment->date = $this->request->post('date');

 

		else
		{
			$comment = new stdClass();
			$comment->id = $this->request->get('id', 'integer');
			$comment = $this->comments->get_comment(intval($comment->id));
		}
Изменено пользователем Sageron
Ссылка на сообщение
Поделиться на другие сайты

Это надо добавить в CommentAdmin.php чтобы ошибка не возникала?

 

или можно добавить было один раз перед

if($this->request->method('POST'))

как я писал выше на странице 2

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...