Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Модуль Биография Актеров

Модуль Биография Актеров


     31.07.2014    Все вопросы » Общие вопросы по PHP    5049

вопрос
Здравствуйте, помогите спецы.

В общем скачал модуль Биография Актеров, поставил для своих целей.

И все бы хорошо, но вот при редактировании новости, если поле актеры исправить, значение в базе не обновляеться а просто отчищяеться :(

Если не брать это то модуль работает.

В чем именно ошибка, я сам не могу разобраться.
Я так понимаю что проблема именно в editnews.php
Вот правки которые в него нужно было в носить.




Вот весь файл по установке


Если надо могу скинуть архив с модулем.


Спасибо за помощь товарищи.

Ответил: alexgut


То есть если запись обнуляется то проблема где-то тут
"UPDATE " . PREFIX . "_post set title='$title', actors='$actors_list',


То есть $actors_list не содержит данных.

Формируеться он тут
 $exp_action[$expires['action']] = "selected=\"selected\"";    
    foreach ( unserialize($row['actors']) as $alt_name => $name ) $actors_array[] = $name;


А берется из поля
  <tr>
        <td colspan="2"><div class="hr_line"></div></td>
    </tr>
    <tr>
        <td height="29" style="padding-left:5px;">Актёры</td>
        <td><textarea rows="7" name="actors" style="width:98%;" class="bk">{$actors}</textarea></td>
    </tr>



В чем тут ошибка? :/

12 комментариев

alexgut
Юзер

alexgut - 31 июля 2014 15:19 -

Если сделать:
print_r ($actors_list);


То выводит как раз то что попадает в базу после редактирование новости
a:1:{s:0:"";s:0:"";}


А если сделать
print_r ($actors_array);


Собственно из него значение и попадает в $actors_list то выводит
Array ( [] => )


То есть значение не попадает в $actors_list так-как в $actors_array его и нет.

Кто дальше подскажет?

alexgut
Юзер

alexgut - 31 июля 2014 15:22 -

Значит проблема где-то тут
    foreach ( unserialize($row['actors']) as $alt_name => $name ) $actors_array[] = $name;
    $actors = implode(", ", $actors_array);


Где формируется массив $actors_array

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

rashpil
Эксперт

rashpil - 31 июля 2014 16:07 -

Для своих целей он поставил...

Проверяй сохранение данных в базе. print_r показывает что сохраняется пустой массив, значит в него не записались значения из $_POST. Проверяй работу с $_POST['actors']

alexgut
Юзер

alexgut - 31 июля 2014 16:19 -

Если вы автор модуля, респект.

При добавлении новости записывается в базу так
a:1:{s:5:"akter";s:5:"АКТЕР";}


А при редактирований этой же новости и изменение в поле АКТЕР к примеру на ТРУАКТЕР меняеться на
a:1:{s:0:"";s:0:"";}


Стоит чистая DLE 10.2

rashpil
Эксперт

rashpil - 31 июля 2014 16:42 -

Значит в файле добавления новости ты установку провёл правильно, а в редактировании подкачал.

Как я и сказал, ищи место где $actors_list пишется в базу и следуй по коду выше до того момента где он формируется. Там есть 2 места: формирование списка актёров для вставки значения в поле и формирование сериализованного массива для сохранения в базу. Вот тебя должен интересовать 2-й случай, я уже в коменте выше писал про массив $_POST.

alexgut
Юзер

alexgut - 31 июля 2014 16:52 -

Вот код где $actors_list пишется в базу




Вот первый выше по коду



А вот второй выше по коду




Вот я так понимаю
А вот второй выше по коду
это и есть тот самый нужный код который формирует $actors_array который потом использует $_POST['actors']

Установку я провел по инструкции, и вроде не кривой правильно =_=
Даже пересмотрел другие.

alexgut
Юзер

alexgut - 31 июля 2014 17:05 -

Мои познания в php не очень сильны, именно поэтому я спросил помощи тут, и даже не как большинство людей которые спрашивают без уважения и без желания сами что-то решить. Даже пытаюсь сам разобраться в проблеме, но пока без результатно.

alexgut
Юзер

alexgut - 31 июля 2014 18:36 -

Ладно, Я понял что помочь решить не кто не в силах. Спасибо всех за участие.
Отдельное спасибо СОЗДАТЕЛЮ модуля.

alexgut
Юзер

alexgut - 31 июля 2014 19:35 -

Если кто-то решит помочь, вот весь editnews.php уже с правками.
http://pastebin.ru/8VWHMdUB

alexgut
Юзер

alexgut - 31 июля 2014 22:26 -

Тема решена.

klark
Юзер

klark - 2 июня 2017 04:22 -

В общем тоже с начала копал в PHP понять не мог почему обнуляются данные у этого поля . Проверил print_r в POST вообще не было данных об этом поле и тут стало всё ясно . По инструкции нужно

  <tr>
        <td colspan="2"><div class="hr_line"></div></td>
    </tr>
	<tr>
		<td height="29" style="padding-left:5px;">Актёры</td>
		<td><textarea rows="7" name="actors" style="width:98%;" class="bk">{$actors}</textarea></td>
	</tr>


Вставлять сразу после <<<HTML
возможно в других версиях это и работало но сейчас это поле формы <form> ниже и пока не вставить этот код в него соответственно и не будет ничего отправляться от этого поля . Я вставил в форму и сразу всё заработало .

S3inc
Юзер

S3inc - 2 сентября 2017 05:59 -

Подскажите пожалуйста, все установил, с виду все на месте, но как обновить базу актеров? она пустая. не могу найти где это находиться?

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх