|
Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Ошибка при работе скрипта |
|
Ошибка при работе скрипта
|
Пользователь Сообщения: 116 |
Профиль | Отправить PM | Цитировать Прикрутил скрипт новостей. Все работает. Но в начале выдает ошибку. *
Ошибка: Цитата:
<? session_start(); include"params.php"; print"<link rel=\"stylesheet\" href=\"style.css\" type=\"text/css\"/>"; if($show=="") { if($page=="") $page=1; $file=file("base.dat"); $entries=count($file); . . . <!-- menu building --> <script type='text/javascript'> function Go(){return} </script> <script type='text/javascript' src='exmplmenu_var.js'></script> <script type='text/javascript' src='menu_com.js'></script> <!-- end menu building --> [s]Исправлено: Prisoner, 2:40 21-09-2004[/s] |
||
Отправлено: 17:45, 20-09-2004 |
Engrossed by the Void Сообщения: 2229
|
Профиль | Отправить PM | Цитировать Есть маленькое уточнение - ограничивать новость посимвольно не есть хорошо - возможно отрезание на каком-либо слове, поэтому лучше резать по словам, выводя, скажем, лишь некоторое их количество. Это частая задача и ее может решить такая функция (писалась мной давно и при некоторых малых изменениях работает нормально):
$Year = array('января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря'); function DrawTitleNews() { global $Year; $DBLink = db_connect(DBHost, DBName, DBLogin, DBPassword, true); $Query = 'SELECT news.n_id, news.n_cap, news.n_full, news.n_date FROM news ORDER BY news.n_date DESC LIMIT 3'; //echo nl2br($Query); $Result = mysql_query($Query); //есть ли новости? Есть? Выводим. if (mysql_num_rows($Result) > 0) { echo '<tr height="14"> <td align="center"> <table width="90%" cellpadding="0" cellspacing="0" border="0"> <tr> <td colspan="2"> <table width="100%" cellspacing="0" cellpadding="0" border="0"> <tr> <td class="newscap">Последние новости</td> <td class="newsdate" nowrap> </td> </tr> </table> </td> </tr> <tr> <td width="30"><img src="/img/1pxtr.gif" width="30" height="1" alt=""></td> <td class="newsbody" width="100%"> <table width="100%" cellspacing="0" cellpadding="0" border="0">'; while ($NewsInfo = mysql_fetch_array($Result, MYSQL_ASSOC)) { //делим дату формата YYYY-mm-dd на составляющие $DT = explode('-', $NewsInfo['n_date']); //в $NewsBody теперь WordsPerNews слов $NewsBody = implode(' ', array_slice(explode(' ', $NewsInfo['n_full']), 0, WordsPerNews)); //проверяем необходимость вывода новости в укороченном виде if (strlen($NewsBody) < strlen($NewsInfo['n_full'])) { $NewsBody .= '<acronym class="redb" title="Это многоточие означает, что новость показана в укороченном виде. Ниже каждой такой новости есть ссылка для доступа к полному тексту новости.">...</acronym>'; $FullLnk = '<tr><td colspan="2"><img src="/img/1pxtr.gif" width="1" height="1" alt=""></td></tr> <td align="right" colspan="2"><a class="dblue" href="/news/'.$NewsInfo['n_id'].'" target="_blank" title="Перейти к просмотру полного текста новости в новом окне."> полностью'.ImgBArrowRight.'</a></td> <tr><td colspan="2"><img src="/img/1pxtr.gif" width="1" height="8" alt=""></td></tr>'; } else $FullLnk = '<tr><td colspan="2"><img src="/img/1pxtr.gif" width="1" height="8" alt=""></td></tr>'; echo '<tr height="14"> <td align="center"> <table width="90%" cellpadding="0" cellspacing="0" border="0"> <tr> <td colspan="2"> <table width="100%" cellspacing="0" cellpadding="0" border="0"> <tr> <td class="dnewscap"> <h2>'.$NewsInfo['n_cap'].'</h2> </td> <td class="dnewsdate" nowrap> '.($DT[2]+0).' '.$Year[$DT[1]-1].' '.$DT[0].' </td> </tr> </table> </td> </tr> <tr> <td width="30"><img src="/img/1pxtr.gif" width="30" height="1" alt=""></td> <td class="dnewsbody" width="100%"><p class="normal_padl20">'.$NewsBody.'</p></td> </tr> '.$FullLnk.' </table> </td> </tr>'; } echo ' </table> </td> </tr> <tr><td colspan="2"><img src="/img/1pxtr.gif" width="1" height="1" alt=""></td></tr> <tr><td colspan="2" align="right"><a class="dblue" href="/news/all">архив'.ImgBArrowRight.'</a></td></tr> <tr><td colspan="2"><img src="/img/1pxtr.gif" width="1" height="8" alt=""></td></tr> </table> </td> </tr>'; } } |
------- Отправлено: 02:48, 25-09-2004 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 116
|
Профиль | Отправить PM | Цитировать Это слишком для моего простенького скрипта,
- проверяется необходимость вывода в сокращенном виде, - используется SQL - размер $NewsBody оговорен где-то ранее. У меня вывод новости: ... <td width=\"99%\"><font size=2>$msg</font> как бы ее тупо резануть после 200 символа или ограничить в рамках ячейки таблицы |
Отправлено: 16:47, 25-09-2004 | #12 |
Engrossed by the Void Сообщения: 2229
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 02:27, 26-09-2004 | #13 |
Пользователь Сообщения: 116
|
Профиль | Отправить PM | Цитировать Сделал так
if(strlen($msg)>50) $msg = implode(' ', array_slice(explode(' ', $msg), 0, 50)); Ок! |
Отправлено: 12:50, 27-09-2004 | #14 |
Engrossed by the Void Сообщения: 2229
|
Профиль | Отправить PM | Цитировать Ок только на первый взгляд... strlen считает символы, а из-за применения explode(' ', $msg) мы оперируем словами. В результате переводя на человеческий язык ваш код получаем: если длина строки больше 50ти символов, то оставить в строке только 50 слов. А что если слова будут больше одного символа (такое ведь иногда встречается? ). В общем корректнее будет так:
Вот теперь новость с более чем 50тью словами будет усекаться корректно. |
------- Отправлено: 02:26, 28-09-2004 | #15 |
Пользователь Сообщения: 116
|
Профиль | Отправить PM | Цитировать Как правильно сделать:
// если болше 50 слов, краткое содежание+ссылка $msgwords = explode(' ', $msg); if (sizeof($msgwords)>50) { $msg = implode(' ', array_slice($msgwords, 0, 50)); print" <table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"5\"> <tr valign=\"top\"> <td width=\"99%\><font size=0><p>$msg</font> <a href=http://msg.php</a></td> </tr> </table> // если меньше 50 слов полное содержание $msgwords = explode(' ', $msg); if (sizeof($msgwords)<50) { $msg = implode(' ', array_slice($msgwords, 0, 50)); print" <table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"5\"> <tr valign=\"top\"> <td width=\"99%\><font size=0><p>$msg</font></td> </tr> </table> |
Отправлено: 13:07, 28-09-2004 | #16 |
Engrossed by the Void Сообщения: 2229
|
Профиль | Отправить PM | Цитировать $msgwords = explode(' ', $msg); if (sizeof($msgwords)>50) { $msg = implode(' ', array_slice($msgwords, 0, 50)); print"<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"5\"> <tr valign=\"top\"> <td width=\"99%\><font size=0><p>$msg</font> <a href=http://msg.php</a></td> </tr> </table>"; } else print"<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"5\"> <tr valign=\"top\"> <td width=\"99%\><font size=0><p>$msg</font></td> </tr> </table>"; |
------- Отправлено: 02:40, 29-09-2004 | #17 |
Пользователь Сообщения: 116
|
Профиль | Отправить PM | Цитировать Новости выводятся на страницу с последней и вниз, а как вывести наоборот.
Цитата:
|
|
Отправлено: 11:06, 12-10-2004 | #18 |
Engrossed by the Void Сообщения: 2229
|
Профиль | Отправить PM | Цитировать Трудночитаемый, однако, код... будем думать: новости скорее всего добавляются в конец файла, таким образом если выдергивать часть новостей (для вывода на странице х), то для вывода в порядке старые->новые нужно переворачивать массив считанных данных (что и делается в коде функцией array_reverse) и если попробывать этого не делать, то можно, вероятно, достичь того, чего вы хотите.
|
------- Отправлено: 06:52, 13-10-2004 | #19 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Условие выхода при ошибке в работе скрипта | ShadowMas | AutoIt | 6 | 31-05-2009 01:30 | |
Ошибка - При работе в программе Allsubmitter выскакивает ошибка | QUMATOZ | Microsoft Windows 2000/XP | 3 | 28-04-2009 16:50 | |
Ошибка - [решено] Ошибка при работе в интернете | cleric9 | Microsoft Windows 2000/XP | 4 | 01-05-2008 11:50 | |
Ошибка при работе советника | ksan | Microsoft Windows Vista | 4 | 26-05-2007 23:33 | |
Ошибка при работе в сети | AC Milan | Сетевые технологии | 1 | 02-12-2004 00:59 |
|