Форум

Открыть Ответить

Возможность загрузки файлов в модуле news

08.11.2008 11:59:00 08.11.2008 12:41:35

Пытаюсь прикрутить к модулю news возможность загрузки файлов как в files. Собственно выдираю код из него. Вроде все сделал правильно, но когда отправляю новость он пишет Вы не добавили файл ни в виде ссылки на него ни в виде загрузки на сервер! Хотя файл естетственно добавлен через обзорИ так что я делаю:

  1. Начал с админки. Редактирую modules\news\admin\index.php


function news_add()


Добавляю $url (таблица в базе создана)

$result = $db->sql_query("S_elect s.catid, s.name, s.title, s.time, s.hometext, s.bodytext, [b]s.url[/b], s.field, s.ihome, s.acomm, s.associated, u.user_name FROM ".$prefix."_stories AS s LEFT JOIN ".$prefix."_users AS u ON (s.uid=u.user_id) WHERE sid='$sid'");<br /> list($cat, $uname, $subject, $time, $hometext, $bodytext, [b]$url[/b], $field, $ihome, $acomm, $associated, $user_name) = $db->sql_fetchrow($result);



Добавляю:

$hometext = save_text($_POST['hometext']);
		$bodytext = save_text($_POST['bodytext']);
		[b]$url = $_POST['url'];[/b]


Добавляю код:

$link_url = ($url) &#063; "<a href=\"".$url."\" target=\"_blank\" title=\""._TESTLINK."\">"._FILELINK."</a>": ""._FILELINK."";<br /> if (file_exists($url)) {<br /> $handle = opendir($confn['path']);<br /> $directory = "";<br /> while ($file = readdir($handle)) {<br /> if (!preg_match("/\./", $file)) $directory .= "<option value=\"".$confn['path']."/".$file."\">".$confn['path']."/".$file."</option>";<br /> }<br /> closedir($handle);<br /> }


В $confn все переменные добавлены. В global так же указан.

и добавляю сами поля:

."<div class=\"left\">"._FILE_USER.":</div><div class=\"center\"><input type=\"file\" name=\"userfile\" size=\"65\" class=\"admin\"></div>"<br /> ."<div class=\"left\">"._FILE_SITE.":</div><div class=\"center\"><input type=\"text\" name=\"sitefile\" size=\"65\" class=\"admin\"></div>"<br /> ."<div class=\"left\">".$link_url.":</div><div class=\"center\"><input type=\"text\" name=\"url\" value=\"".$url."\" size=\"65\" class=\"admin\"></div>";<br /> if (file_exists($url)) echo "<div class=\"left\">"._FILE_DIR.":</div><div class=\"center\"><S_elect name=\"path\" class=\"admin\"><option value=\"\">"._NO."</option><option value=\"".$confn['path']."\">".$confn['path']."</option>".$directory."</S_elect></div>";


В этой функции все. Теперь
function news_save()

Добавляю:

$hometext = save_text($_POST['hometext']);
	$bodytext = save_text($_POST['bodytext']);
[b]	$url = $_POST['url'];
	$path = text_filter($_POST['path']);[/b]


ниже:

$filename = upload($confn['path'], $confn['typefile'], $confn['max_size'], "news", "", "");
	$url = ($filename) ? "".$confn['path']."/".$filename."" : $url;
	if ($stop) {
		$stop = $stop;
	} elseif (!$url  && $_POST['posttype'] == "save") {
		$stop = ""._UPLOADEROR2."";
	}


ну и самый конец:

if ($sid) {<br /> if ($path) {<br /> $filel = array_reverse(explode("/", $url));<br /> if (file_exists($url)) {<br /> $newfile = "".$path."/".$filel[0]."";<br /> rename($url, $newfile);<br /> $url = "".$path."/".$filel[0]."";<br /> }<br /> } <br /> <br /> $db->sql_query("UPDATE ".$prefix."_stories SET catid='$cat', uid='$postid', name='$postname', title='$subject', time='$time', hometext='$hometext', bodytext='$bodytext', url='$url', field='$field', ihome='$ihome', acomm='$acomm', associated='$associated', status='1' WHERE sid='$sid'");<br /> } else {<br /> $ip = getip();<br /> $db->sql_query("I_nsert INTO ".$prefix."_stories (sid, catid, uid, name, title, time, hometext, bodytext, url, field, comments, counter, ihome, acomm, score, ratings, associated, ip_sender, status) VALUES (NULL, '$cat', '$postid', '$postname', '$subject', '$time', '$hometext', '$bodytext', '$url', '$field', '0', '0', '$ihome', '$acomm', '0', '0', '$associated', '$ip', '1')");<br /> }<br /> Header("Location: ".$admin_file.".php&#063;op=news");<br /> } else {<br /> news_add();<br /> }<br /> }



Вроде все сделано правильно, но почему уже он мне всегда пишет, что файл не добавлен? Разработчики пожалуйста подскажите где ошибка ?

Open SLAED 1.*
Storozh
  • Группа: Клиент
  • Пункты: 286
  • Регистрация: 04.10.2007
  • Пол: Мужчина
Storozh
3.62

3.62

В форме отправки после: <form name=\"post\"
Добавьте: enctype=\"multipart/form-data\"


О сколько нам открытий чудных,
Готовит просвещенья дух,
И опыт, сын ошибок трудных,
И гений, парадоксов друг...
SLAED CMS
  • Группа: Клиент
  • Пункты: 39047
  • Регистрация: 30.04.2005
  • Пол: Мужчина
  • Из: Germany
SLAED CMS
3.24

3.24

Категорически благодарю! Все заработало!

Storozh
  • Группа: Клиент
  • Пункты: 286
  • Регистрация: 04.10.2007
  • Пол: Мужчина
Storozh
3.62

3.62

А еще один вопросик: чтобы убрать проверку:

$url = ($filename) ? "".$confn['path']."/".$filename."" : $url;
	if ($stop) {
		$stop = $stop;
	} elseif (!$url  && $_POST['posttype'] == "save") {
		$stop = ""._UPLOADEROR2."";
	}


достаточно сделать так:

$url = ($filename) ? "".$confn['path']."/".$filename."" : $url;
	if ($stop) {
		$stop = $stop;
	}


больше ничего не требуется?

Storozh
  • Группа: Клиент
  • Пункты: 286
  • Регистрация: 04.10.2007
  • Пол: Мужчина
Storozh
3.62

3.62

Весь код функции send покажите.


О сколько нам открытий чудных,
Готовит просвещенья дух,
И опыт, сын ошибок трудных,
И гений, парадоксов друг...
SLAED CMS
  • Группа: Клиент
  • Пункты: 39047
  • Регистрация: 30.04.2005
  • Пол: Мужчина
  • Из: Germany
SLAED CMS
3.24

3.24

08.11.2008 16:30:00 08.11.2008 18:25:19

У меня все заработало после того как прописал enctype=\"multipart/form-data\". Мне просто надо убрать проверку вообще. т.е не обязательным сделать добавление файла.
Вот код:
$myears и $links это год и ссылки взятые из модуля media. Их я проверил все работает.

function news_save() {<br /> global $prefix, $db, $admin_file, $stop, $confn;<br /> $sid = intval($_POST['sid']);<br /> $postname = $_POST['postname'];<br /> $subject = save_text($_POST['subject']);<br /> $myears = intval($_POST['myears']);<br /> $associated = (isset($_POST['associated'])) &#063; implode("-", $_POST['associated']) : "";<br /> $cat = $_POST['cat'];<br /> $hometext = save_text($_POST['hometext']);<br /> $bodytext = save_text($_POST['bodytext']);<br /> $links = text_filter(implode(",", $_POST['links']));<br /> $url = $_POST['url'];<br /> $path = text_filter($_POST['path']);<br /> $field = fields_save($_POST['field']);<br /> $ihome = $_POST['ihome'];<br /> $acomm = $_POST['acomm'];<br /> $time = save_datetime();<br /> if (!$subject) $stop = ""._CERROR."";<br /> if (!$hometext) $stop = ""._CERROR1."";<br /> if (!$postname) $stop = ""._CERROR3."";<br /> <br /> <br /> $filename = upload($confn['path'], $confn['typefile'], $confn['max_size'], "news", $confn['width'], $confn['height']);<br /> $url = ($filename) &#063; "".$confn['path']."/".$filename."" : $url;<br /> if ($stop) {<br /> $stop = $stop;<br /> } elseif (!$url && $_POST['posttype'] == "save") {<br /> $stop = "Вы не добавили постер ни в виде ссылки на него ни в виде загрузки на сервер!";<br /> }<br /> <br /> <br /> if (!$stop && $_POST['posttype'] == "save") {<br /> $postid = (is_user_id($postname)) &#063; is_user_id($postname) : "";<br /> $postname = (!is_user_id($postname)) &#063; text_filter(substr($postname, 0, 25)) : "";<br /> <br /> <br /> if ($sid) {<br /> if ($path) {<br /> $filel = array_reverse(explode("/", $url));<br /> if (file_exists($url)) {<br /> $newfile = "".$path."/".$filel[0]."";<br /> rename($url, $newfile);<br /> $url = "".$path."/".$filel[0]."";<br /> }<br /> } <br /> <br /> <br /> $db->sql_query("UPDATE ".$prefix."_stories SET catid='$cat', uid='$postid', name='$postname', title='$subject', year='$myears', time='$time', hometext='$hometext', bodytext='$bodytext', links='$links', url='$url', field='$field', ihome='$ihome', acomm='$acomm', associated='$associated', status='1' WHERE sid='$sid'");<br /> } else {<br /> $ip = getip();<br /> $db->sql_query("I_nsert INTO ".$prefix."_stories (sid, catid, uid, name, title, year, time, hometext, bodytext, links, url, field, comments, counter, ihome, acomm, score, ratings, associated, ip_sender, status) VALUES (NULL, '$cat', '$postid', '$postname', '$subject', '$myears', '$time', '$hometext', '$bodytext', '$links', '$url', '$field', '0', '0', '$ihome', '$acomm', '0', '0', '$associated', '$ip', '1')");<br /> }<br /> Header("Location: ".$admin_file.".php&#063;op=news");<br /> } else {<br /> news_add();<br /> }<br /> }

Open SLAED 1.*
Storozh
  • Группа: Клиент
  • Пункты: 286
  • Регистрация: 04.10.2007
  • Пол: Мужчина
Storozh
3.62

3.62

Вот мне чтобы убрать проверку добавлен файл или нет просто тупа удалить

elseif (!$url  && $_POST['posttype'] == "save") {
        $stop = "Вы не добавили постер ни в виде ссылки на него ни в виде загрузки на сервер!";
    }


и все?

П.С Кстати нельзя ли сделать, чтобы форум не растягивался, а текст перекидывал на следующию строчку? Ато плохо смотрится.

Storozh
  • Группа: Клиент
  • Пункты: 286
  • Регистрация: 04.10.2007
  • Пол: Мужчина
Storozh
3.62

3.62

08.11.2008 18:28:00 08.11.2008 18:29:35

Что бы убрать проверку, удалите:

$url = ($filename) ? "".$confn['path']."/".$filename."" : $url;
if ($stop) {
$stop = $stop;
} elseif (!$url && $_POST['posttype'] == "save") {
$stop = "Вы не добавили постер ни в виде ссылки на него ни в виде загрузки на сервер!";
}


О сколько нам открытий чудных,
Готовит просвещенья дух,
И опыт, сын ошибок трудных,
И гений, парадоксов друг...
SLAED CMS
  • Группа: Клиент
  • Пункты: 39047
  • Регистрация: 30.04.2005
  • Пол: Мужчина
  • Из: Germany
SLAED CMS
3.24

3.24

Storozh
  • Группа: Клиент
  • Пункты: 286
  • Регистрация: 04.10.2007
  • Пол: Мужчина
Storozh
3.62

3.62

Подскажите, а как можно изменить код так, чтобы ссылку на скачиваемый файл можно было просто прописать в дополнительное поле и в выводе самой новости сделать кнопочку скачать, все как в модуле Files

OSTAP
  • Группа: Посетители
  • Пункты: 446
  • Регистрация: 31.03.2007
  • Пол: Мужчина
  • Предупреждения:
    1. 0
OSTAP
3.86

3.86

Всего: 15 на 2 страницах по 10 на каждой странице

1 2
Открыть Ответить

Хотите опробовать SLAED CMS в действии?

Идеи и предложения
Обратная связь