Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) [1] 2  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Как прицепить аватары к комментариям пользователей
Hunter0k  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 37
Пользователь №: 42466
На форуме: 11 месяцев, 19 дней
Карма:




Здравствуйте, проблема такая, как в модуле комментариев рядом с каждым комментом прицепить аватарку? А конкретно, какие условия прописать, чтобы аватар принадлежал тому комментарию, который оставил пользователь. А то у меня тока выводятся аватары одного авторизированного пользователя.


Это модуль комментариев:
Свернутый текст


<?php
$Info = mysqli_fetch_assoc(mysqli_query($CONNECT, "SELECT `id`, `name`, `email`, `regdate`, `avatar` FROM `users` WHERE `login` = '$Module'"));



function COMMENTS() {
global $CONNECT, $Module, $Page, $Param;
if ($_SESSION['USER_LOGIN_IN'] != 1) echo '<p style="text-align:center;margin:20px">Оставлять комменатрии могут только зарегистрированные пользователи</p>';
else


if
($_SESSION['USER_LOGIN']) {
/*Avatar php*/
if ($_SESSION['USER_AVATAR'] == 0) $Avatar = 0;
else $Avatar = $_SESSION['USER_AVATAR'].'/'.$_SESSION['USER_ID'];/*--/--*/

echo '<div><br><br>

<ul id="soc"><li>
<img src="/resource/avatar/'
.$Avatar.'.jpg" width="80" height="74" alt="Аватар" align="left" id="avatar" style="cursor:pointer" />

<ul style="top:-48px"><li><div id="count" style="padding:5px 5px 24px 5px">
<a href="/profile" id="link">Профиль</a><br><a href="/account/logout" id="link">Выход</a>

</div></li></ul>
</li></ul>


<form method="POST" action="/comments/add/module/'
.$Page.'/id/'.$Param['id'].'">
<textarea id="message" name="text" placeholder="Текст сообщения" required></textarea>
<br><input type="submit" name="enter" value="Отправить" style="margin-left:97px">
</form></div><br/><br/>'
;
}

$ID = ModuleID($Page);

if (!$Param['page']) {
$Param['page'] = 1;
$Result = mysqli_query($CONNECT, 'SELECT `id`, `added`, `date`, `text` FROM `comments` WHERE `module` = '.$ID.' AND `material` = '.$Param['id'].' ORDER BY `id` DESC');
}

while ($Row = mysqli_fetch_assoc($Result)) {
if ($_SESSION['USER_GROUP'] == 2) $Admin = ' (<a href="/comments/control/action/edit/id/'.$Row['id'].'">Редактировать</a> | <a href="/comments/control/action/delete/id/'.$Row['id'].'">Удалить</a>)';
if ($Row['id'] == $_SESSION['COMMENTS_EDIT']) $Row['text'] = '<form method="POST" action="/comments/control"><textarea id="comedit" name="text" placeholder="Текст сообщения" required>'.$Row['text'].'</textarea><br><input type="submit" name="save" value="Сохранить"> <input type="submit" name="cancel" value="Отменить"></form>';



$Info = mysqli_fetch_assoc(mysqli_query($CONNECT, "SELECT `id`, `name`, `email`, `regdate`, `avatar` FROM `users` WHERE '$Info[avatar]' = '$Info[login]'"));


/*Avatar php*/
if (!$Info['avatar']) $Avatar = 0;
else $Avatar = "$Info[avatar]/$Info[id]";
/*--/--*/

echo '<img src="/resource/avatar/'.$Avatar.'.jpg" width="60" height="60" alt="Аватар" align="left" id="avatar" />
<div id="comments"><span>'
.$Row['avatar'].'<a href="/adm-prof/'.$Row['added'].'">'.$Row['added'].'</a><p>'.$Row['date'].$Admin.'</p></span><div>'.$Row['text'].'</div></div>';
}}
?>



Модуль аватар:
Свернутый текст


if ($_FILES['avatar']['tmp_name']) {
if ($_FILES['avatar']['type'] != 'image/jpeg') MessageSend(1, 'Не верный тип изображения.');
if ($_FILES['avatar']['size'] > 20000) MessageSend(1, 'Размер изображения слишком большой.');
$Image = imagecreatefromjpeg($_FILES['avatar']['tmp_name']);
$Size = getimagesize($_FILES['avatar']['tmp_name']);
$Tmp = imagecreatetruecolor(120, 120);
imagecopyresampled($Tmp, $Image, 0, 0, 0, 0, 120, 120, $Size[0], $Size[1]);
if ($_SESSION['USER_AVATAR'] == 0) {
$Files = glob('resource/avatar/*', GLOB_ONLYDIR);

// Функция ищет папки, куда загружены файлы изображений
foreach($Files as $num => $Dir) {
$Num ++;
$Count = sizeof(glob($Dir.'/*.*'));
if ($Count < 250) {
$Download = $Dir.'/'.$_SESSION['USER_ID'];
$_SESSION['USER_AVATAR'] = $Num;
mysqli_query($CONNECT, "UPDATE `users` SET `avatar` = $Num WHERE `id` = $_SESSION[USER_ID]");
break;
}
}
}


else $Download = 'resource/avatar/'.$_SESSION['USER_AVATAR'].'/'.$_SESSION['USER_ID'];
imagejpeg($Tmp, $Download.'.jpg');
imagedestroy($Image);
imagedestroy($Tmp);
}



Модуль подключается на другой странице

<?php echo $Draw; COMMENTS() ?>


Таблица в БД:
Свернутый текст

Таблица `users`:
id int(11) AUTO_INCREMENT
login varchar(200)
password varchar(200)
name varchar(30)
regdate datetime
email varchar(30)
avatar int(11)
active int(11)
group int(11)
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1391
Пользователь №: 28976
На форуме: 5 лет, 5 месяцев, 20 дней
Карма: 78




ну и код. пипец. Но ладно.
Запросы в цикле - зло.

В таблице комментария есть id пользователя которые этот комментарий оставил ?
если есть делай
SELECT 
c.`id`, c.`added`, c.`date`, c`text`,
u.avatar, u.name AS user_name,
g.name AS group_name
FROM
`comments` AS c
LEFT JOIN
`users` AS u ON u.id = c.id_user
LEFT JOIN
`group` AS g ON g.id = u.id
WHERE
c.`module` = $ID AND
c.`material` = '".$Param['id']."'
ORDER BY
c.`id` DESC

будет тебе в ответе : коммент, аватар, имя автора и в какой группе пользователь
P.S. c.id_user - это предположительное поле в таблице `comments`
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Hunter0k  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 37
Пользователь №: 42466
На форуме: 11 месяцев, 19 дней
Карма:




Спасибо за ответ, только я в PHP не силен, можно код как-нибудь по подробней разжевать?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1391
Пользователь №: 28976
На форуме: 5 лет, 5 месяцев, 20 дней
Карма: 78




это не php, а sql
давай структуру таблиц `comments`, и если нужен статус писавшего, ещё `group` (если ана вообще есть)
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26041
Пользователь №: 21350
На форуме: 6 лет, 10 месяцев, 4 дня
Карма: 726

Не курю:
1 год, 3 месяца, 21 день


Цитата
Спасибо за ответ, только я в PHP не силен, можно код как-нибудь по подробней разжевать?

после оплаты.


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Hunter0k  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 37
Пользователь №: 42466
На форуме: 11 месяцев, 19 дней
Карма:




сколько
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Hunter0k  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 37
Пользователь №: 42466
На форуме: 11 месяцев, 19 дней
Карма:




Таблица comments:
id int(11) AUTO_INCREMENT
material int(11)
module int(11)
added varchar(20)
text mediumtext
date datetime
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1391
Пользователь №: 28976
На форуме: 5 лет, 5 месяцев, 20 дней
Карма: 78




Hunter0k
мда .... имя написавшего коммент отсутствует.
И как ты собрался выводить аватарку автора ?

Нужно добавить id автора, а все что было до этого - аноним будут.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Hunter0k  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 37
Пользователь №: 42466
На форуме: 11 месяцев, 19 дней
Карма:




Так че, сможете разжевать подробно, я потом заплачу
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1391
Пользователь №: 28976
На форуме: 5 лет, 5 месяцев, 20 дней
Карма: 78




1) Добавляешь в таблицу `comments` поле `userId` (INT)1

2) в форме добавляешь скрытое поле, в котором передаешь ID пользователя
Цитата
$Info = mysqli_fetch_assoc(mysqli_query($CONNECT, "SELECT `id`, `name`, `email`, `regdate`, `avatar` FROM `users` WHERE `login` = '$Module'"));

судя по этой записи - $Module - это логин пользователя (Странно почему не Id)

<input type="hiden" name="userId" value="<?=$Info['id']?>">


3) Ищи в /comments/control где добавляются комментарии
INSERT INTO `comments`



3) добавляешь в запись `userId`, и пишешь туда (int)$_POST['userId']
4) выводишь все комментарии с привязкой пользователя .

Это сообщение отредактировал Kusss - 30.01.2016 - 15:03
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Hunter0k  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 37
Пользователь №: 42466
На форуме: 11 месяцев, 19 дней
Карма:




Все зделал как сказали ток при отправке белый экран.
К модулю Comments еще 2 файла относится:

Control.php
Свернутый текст


<?php
Uaccess(2);


if ($Param['action'] == 'delete') {
mysqli_query($CONNECT, "DELETE FROM `comments` WHERE `id` = $Param[id]");
MessageSend(3, 'Комментарий удален.');

} else if ($Param['action'] == 'edit') {
$_SESSION['COMMENTS_EDIT'] = $Param['id'];
exit(header('location: '.$_SERVER['HTTP_REFERER']));


} else if ($_POST['save']) {
mysqli_query($CONNECT, "UPDATE `comments` SET `text` = '$_POST[text]' WHERE `id` = $_SESSION[COMMENTS_EDIT]");
unset($_SESSION['COMMENTS_EDIT']);
MessageSend(3, 'Коментарий отредактирован.');


} else if ($_POST['cancel']) {
unset($_SESSION['COMMENTS_EDIT']);
MessageSend(3, 'Редактирование отмененно.');
}


?>




Add.php
Свернутый текст


<?php
ULogin(1);

if ($_POST['enter'] and $_POST['text']) {
$_POST['text'] = FormChars($_POST['text']);
$ID = ModuleID($Param['module']);
if ($ID == 1) $Table = 'publ';
else if ($ID == 2) $Table = 'loads';
$Row = mysqli_fetch_assoc(mysqli_query($CONNECT, 'SELECT `id` FROM `'.$Table.'` WHERE `id` = '.$Param['id']));
if (!$Row['id']) MessageSend(1, 'Материал не найден.', '/'.$Param['module']);
mysqli_query($CONNECT, "INSERT INTO `comments` VALUES ('', $Param[id], $ID, '$_SESSION[USER_LOGIN]', '$_POST[text]', NOW())");
MessageSend(3, 'Комментарий добавлен.', '/'.$Param['module'].'/material/id/'.$Param['id']);
}
?>




Сделайте пожалуйста в самих файлах изменения, а то я не понимаю че куда вставлять)
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1391
Пользователь №: 28976
На форуме: 5 лет, 5 месяцев, 20 дней
Карма: 78




в Add.php
это
mysqli_query($CONNECT, "INSERT INTO `comments`  VALUES ('', $Param[id], $ID, '$_SESSION[USER_LOGIN]', '$_POST[text]', NOW())");

заменить на
$sql = "
INSERT INTO
`comments`
SET
`material` = "
.$Param['id'].",
`module` =
$ID,
`added` = '"
.$_SESSION[USER_LOGIN]."',
`text` = '"
.mysqli_real_escape_string($_POST['text'])."',
`date` = NOW(),
`userId` = '"
.(int)$_POST['userId']."'
"
;
mysqli_query($CONNECT, $sql) or die( mysqli_error($CONNECT) );
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Hunter0k  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 37
Пользователь №: 42466
На форуме: 11 месяцев, 19 дней
Карма:




Не получилось(( И текст пропал.

В файле Main.php может нужно что-то поправить?
Свернутый текст



<?php
$Info = mysqli_fetch_assoc(mysqli_query($CONNECT, "SELECT `id`, `name`, `email`, `regdate`, `avatar` FROM `users` WHERE `login` = '$Module'"));



function COMMENTS() {
global $CONNECT, $Module, $Page, $Param;
if ($_SESSION['USER_LOGIN_IN'] != 1) echo '<p style="text-align:center;margin:20px">Оставлять комменатрии могут только зарегистрированные пользователи</p>';
else


if
($_SESSION['USER_LOGIN']) {
/*Avatar php*/
if ($_SESSION['USER_AVATAR'] == 0) $Avatar = 0;
else $Avatar = $_SESSION['USER_AVATAR'].'/'.$_SESSION['USER_ID'];/*--/--*/

echo '<div><br><br>

<ul id="soc"><li>
<img src="/resource/avatar/'
.$Avatar.'.jpg" width="80" height="74" alt="Аватар" align="left" id="avatar" style="cursor:pointer" />

<ul style="top:-48px"><li><div id="count" style="padding:5px 5px 24px 5px">
<a href="/profile" id="link">Профиль</a><br><a href="/account/logout" id="link">Выход</a>

</div></li></ul>
</li></ul>


<form method="POST" action="/comments/add/module/'
.$Page.'/id/'.$Param['id'].'">
<textarea id="message" name="text" placeholder="Текст сообщения" required></textarea>
<br><input type="submit" name="enter" value="Отправить" style="margin-left:97px">
</form></div><br/><br/>'
;
}

$ID = ModuleID($Page);

if (!$Param['page']) {
$Param['page'] = 1;
$Result = mysqli_query($CONNECT, 'SELECT `id`, `added`, `date`, `text` FROM `comments` WHERE `module` = '.$ID.' AND `material` = '.$Param['id'].' ORDER BY `id` DESC');
}

while ($Row = mysqli_fetch_assoc($Result)) {
if ($_SESSION['USER_GROUP'] == 2) $Admin = ' (<a href="/comments/control/action/edit/id/'.$Row['id'].'">Редактировать</a> | <a href="/comments/control/action/delete/id/'.$Row['id'].'">Удалить</a>)';
if ($Row['id'] == $_SESSION['COMMENTS_EDIT']) $Row['text'] = '<form method="POST" action="/comments/control"><textarea id="comedit" name="text" placeholder="Текст сообщения" required>'.$Row['text'].'</textarea><br><input type="submit" name="save" value="Сохранить"> <input type="submit" name="cancel" value="Отменить"></form>';



$Info = mysqli_fetch_assoc(mysqli_query($CONNECT, "SELECT `id`, `name`, `email`, `regdate`, `avatar` FROM `users` WHERE '$Info[avatar]' = '$Info[login]'"));


/*Avatar php*/
if (!$Info['avatar']) $Avatar = 0;
else $Avatar = "$Info[avatar]/$Info[id]";
/*--/--*/

echo '<img src="/resource/avatar/'.$Avatar.'.jpg" width="60" height="60" alt="Аватар" align="left" id="avatar" />
<div id="comments"><span>'
.$Row['avatar'].'<a href="/adm-prof/'.$Row['added'].'">'.$Row['added'].'</a><p>'.$Row['date'].$Admin.'</p></span><div>'.$Row['text'].'</div></div>';
}}
?>

PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1391
Пользователь №: 28976
На форуме: 5 лет, 5 месяцев, 20 дней
Карма: 78




вот форма добавление комментария
<form method="POST" action="/comments/add/module/'.$Page.'/id/'.$Param['id'].'">
<textarea
id="message" name="text" placeholder="Текст сообщения" required></textarea>
<br><input
type="submit" name="enter" value="Отправить" style="margin-left:97px">
</form>

туда добавляешь
<input type="hiden" name="userId" value="'.$_SESSION['USER_ID'].'">
после кнопки отправить
P.S. Судя по всему $_SESSION['USER_ID'] - это ID пользователя.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Hunter0k  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 37
Пользователь №: 42466
На форуме: 11 месяцев, 19 дней
Карма:




Не, не получилось. Может ссылку на сайт дать и фтп доступ?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (2) [1] 2  Ответ в темуСоздание новой темыСоздание опроса