Чтение RSS каналов

Форум

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

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

0

0
1
08.11.2008 11:59:0008.11.2008 12:41:35

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

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

function news_add()


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

$result = $db-&gt;sql_query(&quot;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 &quot;.$prefix.&quot;_stories AS s LEFT JOIN &quot;.$prefix.&quot;_users AS u ON (s.uid=u.user_id) WHERE sid=&#039;$sid&#039;&quot;);<br /> list($cat, $uname, $subject, $time, $hometext, $bodytext, [b]$url[/b], $field, $ihome, $acomm, $associated, $user_name) = $db-&gt;sql_fetchrow($result);



Добавляю:

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


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

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


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

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

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


В этой функции все. Теперь
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(&quot;/&quot;, $url));<br /> if (file_exists($url)) {<br /> $newfile = &quot;&quot;.$path.&quot;/&quot;.$filel[0].&quot;&quot;;<br /> rename($url, $newfile);<br /> $url = &quot;&quot;.$path.&quot;/&quot;.$filel[0].&quot;&quot;;<br /> }<br /> } <br /> <br /> $db-&gt;sql_query(&quot;UPDATE &quot;.$prefix.&quot;_stories SET catid=&#039;$cat&#039;, uid=&#039;$postid&#039;, name=&#039;$postname&#039;, title=&#039;$subject&#039;, time=&#039;$time&#039;, hometext=&#039;$hometext&#039;, bodytext=&#039;$bodytext&#039;, url=&#039;$url&#039;, field=&#039;$field&#039;, ihome=&#039;$ihome&#039;, acomm=&#039;$acomm&#039;, associated=&#039;$associated&#039;, status=&#039;1&#039; WHERE sid=&#039;$sid&#039;&quot;);<br /> } else {<br /> $ip = getip();<br /> $db-&gt;sql_query(&quot;I_nsert INTO &quot;.$prefix.&quot;_stories (sid, catid, uid, name, title, time, hometext, bodytext, url, field, comments, counter, ihome, acomm, score, ratings, associated, ip_sender, status) VALUES (NULL, &#039;$cat&#039;, &#039;$postid&#039;, &#039;$postname&#039;, &#039;$subject&#039;, &#039;$time&#039;, &#039;$hometext&#039;, &#039;$bodytext&#039;, &#039;$url&#039;, &#039;$field&#039;, &#039;0&#039;, &#039;0&#039;, &#039;$ihome&#039;, &#039;$acomm&#039;, &#039;0&#039;, &#039;0&#039;, &#039;$associated&#039;, &#039;$ip&#039;, &#039;1&#039;)&quot;);<br /> }<br /> Header(&quot;Location: &quot;.$admin_file.&quot;.php&#063;op=news&quot;);<br /> } else {<br /> news_add();<br /> }<br /> }



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



Версия системы: Open SLAED 1.*
3.62

3.62
2
08.11.2008 12:43:16

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


О сколько нам открытий чудных,
Готовит просвещенья дух,
И опыт, сын ошибок трудных,
И гений, парадоксов друг...
3.24

3.24
3
08.11.2008 13:07:32

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

3.62

3.62
4
08.11.2008 14:04:45

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

$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;
	}


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

3.62

3.62
5
08.11.2008 15:51:37

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


О сколько нам открытий чудных,
Готовит просвещенья дух,
И опыт, сын ошибок трудных,
И гений, парадоксов друг...
3.24

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



Версия системы: Open SLAED 1.*
3.62

3.62
7
08.11.2008 16:32:07

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

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


и все?

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

3.62

3.62
8
08.11.2008 18:28:0008.11.2008 18:29:35

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

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


О сколько нам открытий чудных,
Готовит просвещенья дух,
И опыт, сын ошибок трудных,
И гений, парадоксов друг...
3.24

3.24
9
08.11.2008 19:18:13

спасибо

3.62

3.62
10
02.12.2008 15:33:31

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

3.86

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

Технологии

PHP MySQL HTML 5 CSS 3 jQuery jQuery UI

Контакты

  • D-49179, Deutschland
    Ostercappeln, Im Siek 6
  • +49 176 61966679

  • https://slaed.net
Идеи и предложения
Обратная связь