[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ответ с цитатой на php
Страницы: 1, 2
Guest
Цитата (inpost @ 11.01.2013 - 19:26)
и? Для того, чтобы сделать - надо изучить весь этот код! Как ты думаешь, сколько времени займет у человека ПРОЧИТАТЬ этот код? Далее понять, что откуда вызывается и куда передаётся.
В твоём представлении, изучить движок и разобраться в его работе - сколько времени займет?

Ладно я понял пойду дальше сам искать уже третий день вожусь но не получается не догоняю, просто мне показалось что я один чайник из самых первых чайников видно это не так то и просто sad.gif
inpost
Просто что? Переколошматить за тебя огромный код, разобраться в том, что он делает... убить на это целый день...

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Guest
Цитата (inpost @ 11.01.2013 - 19:35)
Просто что? Переколошматить за тебя огромный код, разобраться в том, что он делает... убить на это целый день...

Думал что это дело очень простое видимо что нет, Я убил три дня )))))) и результат ноль sad.gif
Guest


<?php
// Функция возвращает список сообщений(постов) темы; ID темы передается методом GET
function getTheme( &$pageTitle )
{
// Если не передан ID форума - функция вызвана по ошибке
if ( !isset( $_GET['idForum'] ) ) {
header( 'Location: '.$_SERVER['PHP_SELF'] );
die();
}
// Если не передан ID темы - функция вызвана по ошибке
if ( !isset( $_GET['id_theme'] ) ) {
header( 'Location: '.$_SERVER['PHP_SELF'] );
die();
}
$id_theme = (int)$_GET['id_theme'];
if ( $id_theme < 1 ) {
header( 'Location: '.$_SERVER['PHP_SELF'] );
die();
}

// Получаем из БД информацию о теме
$query = "SELECT name, locked FROM ".TABLE_THEMES." WHERE id_theme=".$id_theme;
$res = mysql_query( $query );
if ( !$res ) {
$msg = 'Ошибка при получении списка сообщений темы';
$err = 'Ошибка при выполнении запроса: <br/>'.
$query.'<br/>'.mysql_errno().': '.mysql_error().'<br/>'.
'(Файл '. __FILE__ .', строка '. __LINE__ .')';
return showErrorMessage( $msg, $err, true,
'action=showForum&idForum='.$_GET['idForum'] );
}
// Если запрошенной темы не существует - возвращаемся на форум
if ( mysql_num_rows( $res ) == 0 )
return showInfoMessage( 'Запрошенная тема не найдена', 'action=showForum&idForum='.$_GET['idForum'] );

list( $theme, $locked ) = mysql_fetch_row( $res );
// Заголовок страницы (содержимое тега title)
$pageTitle = $pageTitle.' / '.$theme;
// Название темы
$html = '<h1>'.$theme.'</h1>'."\n";

// Получаем информацию о форуме - это нужно для построения панели навигации
$query = "SELECT name FROM ".TABLE_FORUMS." WHERE id_forum=".$_GET['idForum'];
$res = mysql_query( $query );
if ( !$res ) {
$msg = 'Ошибка при получении списка сообщений темы';
$err = 'Ошибка при выполнении запроса: <br/>'.
$query.'<br/>'.mysql_errno().': '.mysql_error().'<br/>'.
'(Файл '. __FILE__ .', строка '. __LINE__ .')';
return showErrorMessage( $msg, $err, true, 'action=showForum&idForum='.
$_GET['idForum'] );
}
// Панель навигации
$html = $html.'<div class="navDiv">'."\n";
$html = $html.'<a class="navigation" href="'.$_SERVER['PHP_SELF'].'">Список форумов</a> >'."\n";
$html = $html.'<a class="navigation" href="'.$_SERVER['PHP_SELF'].'?action=showForum&idForum='.
$_GET['idForum'].'">'.mysql_result( $res, 0, 0 ).'</a> >'."\n";
$html = $html.'<a class="navigation" href="'.$_SERVER['PHP_SELF'].'?action=showTheme&idForum='.
$_GET['idForum'].'&id_theme='.$id_theme.'">'.$theme.'</a>'."\n";
$html = $html.'</div>'."\n";

// Выбираем из БД количество сообщений - это нужно для
// построения постраничной навигации

$query = "SELECT COUNT(*) FROM ".TABLE_POSTS." WHERE id_theme=".$id_theme;
$res = mysql_query( $query );
if ( !$res ) {
$msg = 'Ошибка при получении списка сообщений темы';
$err = 'Ошибка при выполнении запроса: <br/>'.
$query.'<br/>'.mysql_errno().': '.mysql_error().'<br/>'.
'(Файл '. __FILE__ .', строка '. __LINE__ .')';
return showErrorMessage( $msg, $err, true,
'action=showForum&idForum='.$_GET['idForum'] );
}
$total = mysql_result( $res, 0, 0 );
// Не может быть темы, в которой нет сообщений (постов) - надо ее удалить
if ( $total == 0 ) {
$q = "DELETE FROM ".TABLE_THEMES." WHERE id_theme=".$id_theme;
$r = mysql_query( $q );
if ( !$r ) {
$msg = 'Ошибка при получении списка сообщений темы';
$err = 'Ошибка при выполнении запроса: <br/>'.
$q.'<br/>'.mysql_errno().': '.mysql_error().'<br/>'.
'(Файл '. __FILE__ .', строка '. __LINE__ .')';
return showErrorMessage( $msg, $err, true, 'action=showForum&idForum='.$_GET['idForum'] );
}
return showInfoMessage( 'Запрошенная тема не найдена', 'action=showForum&idForum='.$_GET['idForum'] );
}

// Число страниц списка сообщений (постов) темы (постраничная навигация)
$cntPages = ceil( $total / POSTS_PER_PAGE );

// Проверяем передан ли номер текущей страницы (постраничная навигация)
if ( isset($_GET['page']) ) {
$page = (int)$_GET['page'];
if ( $page < 1 ) $page = 1;
} else {
$page = $cntPages;
}

if ( $page > $cntPages ) $page = $cntPages;
// Начальная позиция (постраничная навигация)
$start = ( $page - 1 ) * POSTS_PER_PAGE;

// Строим постраничную навигацию, если это необходимо
if ( $cntPages > 1 ) {
// Функция возвращает html меню для постраничной навигации
$pages = pageIterator( $page, $cntPages, $_SERVER['PHP_SELF'].'?action=showTheme&idForum='.
$_GET['idForum'].'&id_theme='.$id_theme );
} else {
$pages = ' ';
}

// Получаем из БД список сообщений (постов) темы
$query = "SELECT a.id_post, a.name, a.id_author, a.time, a.putfile, a.locked, a.id_theme,
DATE_FORMAT(a.edittime, '%d.%m.%Y') AS edittime, a.id_editor,
IFNULL(b.name, '"
.NOT_REGISTERED_USER."') AS author, b.posts, b.url,
DATE_FORMAT(b.puttime, '%d.%m.%Y') AS regtime, b.status AS status,
IFNULL(c.name, '') AS editor, IFNULL(c.status, '') AS editor_status
FROM "
.TABLE_POSTS." a LEFT JOIN ".TABLE_USERS." b
ON a.id_author=b.id_author
LEFT JOIN "
.TABLE_USERS." c
ON a.id_editor=c.id_author
WHERE id_theme="
.$id_theme." ORDER BY time ASC
LIMIT "
.$start.", ".POSTS_PER_PAGE;

$res = mysql_query( $query );
if ( !$res ) {
$msg = 'Ошибка при получении списка сообщений темы';
$err = 'Ошибка при выполнении запроса: <br/>'.
$query.'<br/>'.mysql_errno().': '.mysql_error().'<br/>'.
'(Файл '. __FILE__ .', строка '. __LINE__ .')';
return showErrorMessage( $msg, $err, true,
'action=showForum&idForum='.$_GET['idForum'] );
}
if ( mysql_num_rows( $res ) == 0 ) {
// Не может быть темы, в которой нет сообщений (постов) - надо ее удалить
$q = "DELETE FROM ".TABLE_THEMES." WHERE id_theme=".$id_theme;
$r = mysql_query( $q );
if ( !$r ) {
$msg = 'Ошибка при получении списка сообщений темы';
$err = 'Ошибка при выполнении запроса: <br/>'.
$q.'<br/>'.mysql_errno().': '.mysql_error().'<br/>'.
'(Файл '. __FILE__ .', строка '. __LINE__ .')';
return showErrorMessage( $msg, $err, true, 'action=showForum&idForum='.$_GET['idForum'] );
}
return showInfoMessage( 'Запрошенная тема не найдена', 'action=showForum&idForum='.$_GET['idForum'] );
}
// Ссылка "Ответить" (если тема закрыта - выводим сообщение "Тема закрыта")
if ( $locked == 0 )
$addPost = '<a href="'.$_SERVER['PHP_SELF'].'?action=addPostForm&idForum='.$_GET['idForum'].
'&id_theme='.$id_theme.'"><img src="./images/reply.gif"
alt="Ответить" title="Ответить" /></a>'
."\n";
else
$addPost = '<img src="./images/reply_locked.gif"
alt="Тема закрыта" title="Тема закрыта" />'
."\n";

// Постраничную навигацию и ссылку "Ответить" объединяем в один блок,
// который выводится вверху и внизу страницы

$pagesAddPost = '<table width="100%" cellpadding="0" cellspacing="0">'."\n";
$pagesAddPost = $pagesAddPost.'<tr valign="middle">'."\n";
$pagesAddPost = $pagesAddPost.'<td>'.$pages.'</td>'."\n";
$pagesAddPost = $pagesAddPost.'<td align="right">'.$addPost.'</td>'."\n";
$pagesAddPost = $pagesAddPost.'</tr>'."\n";
$pagesAddPost = $pagesAddPost.'</table>'."\n";

$html = $html.$pagesAddPost;
// Сообщения (посты) темы; каждое сообщение - отдельная таблица
while ( $post = mysql_fetch_array( $res ) ) {
$html = $html.'<table class="postTable">'."\n";
$html = $html.'<tr class="postTop">'."\n";
$html = $html.'<td width="120"><span class="postAuthor" onClick="javascript:putName(\''.
$post['author'].'\')" onMouseOver="this.className=\'postAuthorOver\'"
onMouseOut="this.className=
\'postAuthor\'">'.$post['author'].
'</span><br/><img src="./images/null.gif" alt="" width="120" height="1" /></td>'."\n";
$html = $html.'<td width="45%"><span class="details"> Добавлено '.$post['time'].'</span></td>'."\n";
$html = $html.'<td width="45%" align="right">';
// Если тема не заблокирована - выводим ссылку "Ответить с цитатой"
if ( $locked == 0 ) {
$html = $html.'<a href="'.$_SERVER['PHP_SELF'].'?action=addPostForm&idForum='.$_GET['idForum'].
'&id_theme='.$id_theme.'"><img src="./images/icon_quote.gif"
alt="Ответить с цитатой" title="Ответить с цитатой" border="0" /></a>  '
;
}
// Определяем, нужно ли выводить ссылку "Редактировать"
if ( hasRightEditPost( $post ) ) {
$html = $html.'<a href="'.$_SERVER['PHP_SELF'].'?action=editPostForm&idForum='.$_GET['idForum'].
'&id_theme='.$id_theme.'&id_post='.$post['id_post'].'"><img src="./images/icon_edit.gif"
alt="Править" title="Править" border="0" /></a>  '
;
}
// Определяем, нужно ли выводить ссылку "Удалить"
if ( hasRightDeletePost( $post ) ) {
$html = $html.'<a href="'.$_SERVER['PHP_SELF'].'?action=deletePost&idForum='.$_GET['idForum'].
'&id_theme='.$id_theme.'&id_post='.$post['id_post'].'"><img src="./images/icon_delete.gif"
alt="Удалить" title="Удалить" border="0" /></a>'
;
}
$html = $html.'</td>'."\n";
$html = $html.'</tr>'."\n";
$html = $html.'<tr class="postMiddle">'."\n";
$html = $html.'<td>'."\n";
// Если автор сообщения (поста) - зарегистрированный пользователь
if ( $post['id_author'] ) {
// Аватар
if ( is_file( './photo/'.$post['id_author'] ) ) {
$html = $html.'<img src="./photo/'.$post['id_author'].'" alt="'.$post['author'].'"
title="'
.$post['author'].'" /><br/>'."\n";
} else {
$html = $html.'<img src="./images/null.gif" alt="" width="100" height="100"
style="border:1px solid #CCCCCC" /><br/>'
."\n";
}
// Статус пользователя
$status = array( 'user' => 'Пользователь',
'moderator' => 'Модератор',
'admin' => 'Администратор' );
if ( $post['status'] == 'admin' )
$html = $html.'<span class="adminStatus">'.$status[$post['status']].'</span><br/>'."\n";
if ( $post['status'] == 'moderator' )
$html = $html.'<span class="moderStatus">'.$status[$post['status']].'</span><br/>'."\n";
/*
if ( $post['status'] == 'user' )
$html = $html.'<span class="userStatus">'.$status[$post['status']].'</span><br/>'."\n";
*/
// Рейтинг пользователя (по количеству сообщений)

$stars = '';
$rating = $post['posts'];
while( $rating > 0 ) {
if ( $rating < 50 )
$img = 'stars0.gif';
else if ( $rating >= 50 and $rating < 100 )
$img = 'stars1.gif';
else if ( $rating >= 100 and $rating < 150 )
$img = 'stars2.gif';
else if ( $rating >= 150 and $rating < 200 )
$img = 'stars3.gif';
else if ( $rating >= 200 and $rating < 250 )
$img = 'stars4.gif';
else if ( $rating >= 250 and $rating < 300 )
$img = 'stars5.gif';
else if ( $rating >= 300 and $rating < 350 )
$img = 'stars6.gif';
else if ( $rating >= 350 and $rating < 400 )
$img = 'stars7.gif';
else if ( $rating >= 400 and $rating < 450 )
$img = 'stars8.gif';
else if ( $rating >= 450 and $rating < 500 )
$img = 'stars9.gif';
else
$img = 'stars10.gif';
$rating = $rating - 500;
$stars = $stars.'<img src="./images/'.$img.'" alt="" /><br/>';
}
$html = $html.$stars.'<br/>'."\n";
// Количество сообщений
$html = $html.'<span class="details">Сообщений: '.$post['posts'].'</span><br/>'."\n";
// Дата регистрации
$html = $html.'<span class="details">Зарегистрирован: '.$post['regtime'].'</span><br/>'."\n";

// Если автор сообщения сейчас "на сайте"
if ( isset( $_SESSION['usersOnLine'] ) ) {
if ( in_array( $post['id_author'], $_SESSION['usersOnLine'] ) )
$html = $html.'<span class="details">Просматривает форум</span><br/>'."\n";
else
$html = $html.'<span class="details">Покинул форум</span><br/>'."\n";
}

}
else { // Если автор сообщения - незарегистрированный пользователь
$html = $html.'<img src="./images/null.gif" alt="" width="100" height="100"
style="border:1px solid #CCCCCC" /><br/>'
."\n";
}

$html = $html.'<br/><span class="quoteAuthor" onClick=quoteSelection(\''.$post['author'].'\');
onMouseOver="catchSelection(); this.className=
\'quoteAuthorOver\'"
onMouseOut="this.className=
\'quoteAuthor\'">Цитировать</span>';

$html = $html.'</td>'."\n";
$html = $html.'<td colspan="2">'."\n";
$html = $html.print_page( $post['name'] )."\n";
// Если есть прикреплённый файл - формируем ссылку на него
if( !empty( $post['putfile'] ) and is_file( './files/'.$post['putfile'] ) ) {
$html = $html.'<div align="right"><img src="./images/file.gif" alt="Открыть файл"
title="Открыть файл" align="absmiddle" /> <a target="_blank"
href="./files/'
.$post['putfile'].'">'.
(
getFileSize( './files/'.$post['putfile'] ) ).' Кб</a></div>'."\n";
}
$html = $html.'</td>'."\n";

$html = $html.'</tr>'."\n";
$html = $html.'<tr class="postBottom">'."\n";
$html = $html.'<td><a class="navigation" href="#top">Наверх</a></td>'."\n";
// Если автор сообщения (поста) - зарегистрированный пользователь
if ( $post['id_author'] ) {
$html = $html.'<td>'."\n";
$html = $html.' <a href="'.$_SERVER['PHP_SELF'].'?action=showUserInfo&idUser='.
$post['id_author'].'"><img src="./images/icon_profile.gif"
alt="Посмотреть профиль" title="Посмотреть профиль" /></a>'
;
$html = $html.'  '."\n";
if ( isset( $_SESSION['user'] ) ) {
$html = $html.'<a href="'.$_SERVER['PHP_SELF'].'?action=sendMailForm&idUser='.
$post['id_author'].'"><img src="./images/icon_email.gif"
alt="Написать письмо" title="Написать письмо" /></a>'
;
$html = $html.'  '."\n";
$html = $html.'<a href="'.$_SERVER['PHP_SELF'].'?action=sendMsgForm&idUser='.
$post['id_author'].'"><img src="./images/icon_pm.gif"
alt="Личное сообщение" title="Личное сообщение" /></a>'
;
$html = $html.'  '."\n";
}
if ( !empty( $post['url'] ) ) {
$html = $html.'<a href="'.$post['url'].'"><img src="./images/icon_www.gif"
alt="Сайт автора" title="Сайт автора" target="_blank" /></a>'
;
}
$html = $html.'</td>'."\n";
} else {
$html = $html.'<td><span class="details"><img src="./images/null.gif" alt="" width="1"
height="20" align="absmiddle" />Незарегистрированный пользователь</span></td>'
."\n";
}
// Если сообщение редактировалось...
if ( !empty( $post['editor'] ) ) {
$html = $html.'<td align="right">';
if ( $post['id_author'] == $post['id_editor'] ) {
$html = $html.'<span class="editedByUser">Отредактировано автором '.$post['edittime'].'</span>'."\n";
} else {
if ( $post['editor_status'] == 'admin' )
$html = $html.'<span class="editedByAdmin">Отредактировано администратором '.
$post['editor'].' '.$post['edittime'].'</span>'."\n";
if ( $post['editor_status'] == 'moderator' )
$html = $html.'<span class="editedByModer">Отредактировано модератором '.
$post['editor'].' '.$post['edittime'].'</span>'."\n";
if ( $post['editor_status'] == 'user' )
$html = $html.'<span class="editedByUser">Отредактировано '.
$post['editor'].' '.$post['edittime'].'</span>'."\n";
}
$html = $html.'</td>'."\n";
} else {
$html = $html.'<td> </td>'."\n";
}
$html = $html.'</tr>'."\n";
$html = $html.'</table>'."\n";
}

// Постраничная навигация и ссылка "Ответить"
$html = $html.$pagesAddPost;

// Если тема не закрыта - выводим форму для быстрого ответа
if ( $locked == 0 ) $html = $html.getQuickReplyForm( $id_theme );

// Если страницу темы запросил зарегистрированный пользователь, значит он ее просмотрит
if ( isset( $_SESSION['user'] ) and isset( $_SESSION['newThemes'] ) ) {
if ( count( $_SESSION['newThemes'] ) > 0 )
if ( in_array( $id_theme, $_SESSION['newThemes'] ) ) unset( $_SESSION['newThemes'][$id_theme] );
else
unset( $_SESSION['newThemes'] );
}

return $html;
}
?>



Вот сузил проблемную зону :( может кто знает в чем я допустил ошибку
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.