Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> comments 
V
    Опции темы
fakeman
Дата 8.6.2009, 01:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Здрасти всемsmile
Такая проблемка не могу понять как вывести номер комментариев для новостей ну т.е. я знаю как сделать тока так 
Код


$c = 1;
//пока есть записи в таблице выводим
echo "
$c++ 
":

ну и он будет выводить и если удалиш коммент то будет номера ровно стока скока есть, а как сделать такое
было 3 коммента - 1 коммент 2коммен 3коммент удалили 2-ой коммент он нам вывел 1коммен и 3коммент. 
PM MAIL   Вверх
Aver78
Дата 8.6.2009, 01:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 21.4.2007

Репутация: нет
Всего: нет



Описание жесткое. Есть какие то комменты(откуда беруться, где и как хранятся - тайна). Нельзя ли поподробнее.
Например: в одномерном массиве $A храняться комментарии, как мне выводить толко существующие комментарии, например если $a[2] - удален то его не выводить.

Это сообщение отредактировал(а) Aver78 - 8.6.2009, 01:47
PM MAIL   Вверх
fakeman
Дата 8.6.2009, 01:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Aver78,  извените..

вот мой код.

Код

<?


$date_com = date("Y-m-d H:i:s");
$comm_post = $_POST['comm'];
$id_post = $_GET['id'];
$id_author = $_SESSION['id'];
$uname = $_SESSION['username'];
$c = 1;
if ($_POST['add_comm'])
{
    if($comm_post)
    {
        $comm_query = mysql_query("SELECT * FROM comments_news WHERE post=$id_post");
        $comm_array = mysql_fetch_row($comm_query);
        if($comm_array[1] = $id_post)
        {
            mysql_query("INSERT INTO comments_news VALUES ('','$id_post','$comm_post','$uname','$id_author','$date_com')");
        }
    }
}



    $query_comments = mysql_query("SELECT * FROM comments_news WHERE post=$id_post");
    $rows = mysql_num_rows($query_comments);
    
    for($i=0; $i<$rows; $i++)
    {
        $f_comments = mysql_fetch_array($query_comments);
                            echo " 
                            
                            <div class='commenth'>
                            <table width='100%' cellspacing='0' cellpadding='0'>
                            <tbody class='com'>
                            <tr>
                            <td width='60%'>
                            <b>    ".$c++.". <a href='/phpsite/members.php?id=".$f_comments['id_author']."'>$f_comments[author]</a></b>
                            </td>
                            <td align='right'>
                            ".date("d/m || H:i",strtotime($f_comments['date']))."
                            </td>
                            </tr>
                            </tbody>
                            </table>
                            </div>
                            <div ".($i % 2 == 0?"":"id='alt'")." class='listing3'>$f_comments[text]</div>";
                    
    }
    // zanosim skoka kommentov v novosti
    mysql_query("UPDATE news SET comments=".$rows." WHERE id=$id_post");
    
        
    echo "
    
        <br>
        <div class='commenth'>
        Написать комментарий
        </div>";
        echo "<div class='listing3' align='center'>";
        if ($_SESSION['username'])
        {
            echo "
            <form method='post'>
                <textarea class='form' name='comm' style='height:110px; width:100%;' value=''></textarea>
                <br>
                <br>
                <input class='form' type='submit' value='Комментировать' name='add_comm' />
            </form>
            ";
        }
        else
        {
            echo "<div align='center'> <a href='/phpsite/register/'><b>зарегистрироваться</b></a></div>";
        }
        echo "</div>";

            
?>

PM MAIL   Вверх
Aver78
Дата 8.6.2009, 02:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 21.4.2007

Репутация: нет
Всего: нет



Если я правильно понял нужно вывести все окмментарии которая вернула бд, тогд это так  - 
Код


while ($f_comments = mysql_fetch_array($query_comments)) 
{
//Вывод комментария 
}


Добавлено через 1 минуту и 8 секунд
А это выкиньте

Код

    $query_comments = mysql_query("SELECT * FROM comments_news WHERE post=$id_post");
    $rows = mysql_num_rows($query_comments);
    
    for($i=0; $i<$rows; $i++)


PM MAIL   Вверх
fakeman
Дата 8.6.2009, 03:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Цитата(Aver78 @  8.6.2009,  02:27 Найти цитируемый пост)
А это выкиньте

но у меня там было сделано что бы комментарий (чётный) был другова цвета.

Но проблема всё же не решена
пока писал код я вытаскивал по id(он авто. инкр.) вроде всё как надо но после того как решил написать коммент к другой новости он 1коммент вывел но id то уже в таблице был допустим 13 и он его записал как 13.

п.с. чёт у меня плохо получается объяснить :(
PM MAIL   Вверх
Aver78
Дата 8.6.2009, 03:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 21.4.2007

Репутация: нет
Всего: нет



Цитата

но у меня там было сделано что бы комментарий (чётный) был другова цвета.

$color=$color*(-1);
if ($color>0) .....; else .....;

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

Цитата

п.с. чёт у меня плохо получается объяснить :(

Очень плохо. Тут я вообще суть вопроса не понял.

Это сообщение отредактировал(а) Aver78 - 8.6.2009, 03:56
PM MAIL   Вверх
fakeman
Дата 8.6.2009, 04:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Цитата(Aver78 @  8.6.2009,  03:38 Найти цитируемый пост)
Очень плохо. Тут я вообще суть вопроса не понял.


Попытаюсь всё в деталях.

Есть 2 таблицы news и comments_news. В comments_news 6 столбцов:
1 id
2 post(id новостей)
3 author
4 id_author
5 text
6 date

допустим мы в новости 1 написали коммент в табицу записалось 
1 id 1
2 post 1
3 author Ваня
4 id_author 5
5 text выфвфывфывфывчсмчсм
6 date ....

написали коммент на новость 50
1 id 2
2 post 50
3 author Катя
4 id_author 10
5 text выфвфывфывфывчсмчсмпавп
6 date ....

Код

$query_comments = mysql_query("SELECT * FROM comments_news WHERE post=$id_post");
while($f_comments = mysql_fetch_array($query_comments));
{
echo $f_comments['id'];
//вывод всего остального
}


если мы зайдём в новость 1 то при просмотре комментариев увидем 1 Ваня текст и т.д.
зашли новость 50 то при просмотре комментариев увидем 2 Катя и т.д.

как сделать так что бы 1 комментарий начинался от 1 до n в каждой новости и если удалить коммент, например есть комментарии 1 2 3 4 5 6... мы удалили 3 то тогда будет выводить 1 2 4 5 6... smile
PM MAIL   Вверх
Aver78
Дата 8.6.2009, 04:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 21.4.2007

Репутация: нет
Всего: нет



Цитата

$n=0;
$query_comments = mysql_query("SELECT * FROM comments_news WHERE post=$id_post");
while($f_comments = mysql_fetch_array($query_comments));
{ $n++;
echo "Номер комментария ".$n;
//вывод всего остального
}


Это сообщение отредактировал(а) Aver78 - 8.6.2009, 04:03
PM MAIL   Вверх
fakeman
Дата 8.6.2009, 04:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Цитата(Aver78 @  8.6.2009,  04:03 Найти цитируемый пост)
$n=0;
$query_comments = mysql_query("SELECT * FROM comments_news WHERE post=$id_post");
while($f_comments = mysql_fetch_array($query_comments));
{ $n++;
echo "Номер комментария ".$n;
//вывод всего остального
}


Вроде как 1 коммент будет не 1 а 0 и при удалении коммента он будет смешаться т.е. есть коменты 1 2 3 4 5 6 удалим 3 будет 1 2 3 4 5 .

Это сообщение отредактировал(а) fakeman - 8.6.2009, 04:06
PM MAIL   Вверх
Aver78
Дата 8.6.2009, 04:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 21.4.2007

Репутация: нет
Всего: нет



Нет. Попробуйте, все будет в порядке.

Добавлено через 1 минуту и 11 секунд
Цитата

есть коменты 1 2 3 4 5 6 удалим 3 будет 1 2 3 4 5 

А, вот это да. Так и будет. Я так понял номера только для визуализации нужны.
PM MAIL   Вверх
fakeman
Дата 8.6.2009, 04:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Цитата(Aver78 @  8.6.2009,  04:08 Найти цитируемый пост)
Нет. Попробуйте, все будет в порядке. 

попробовал

Цитата(fakeman @  8.6.2009,  04:06 Найти цитируемый пост)
Вроде как 1 коммент будет не 1 а 0

ошибся он и в правде выдает 1 значание 1, а что касается
Цитата(fakeman @  8.6.2009,  04:06 Найти цитируемый пост)
при удалении коммента он будет смещаться т.е. есть коменты 1 2 3 4 5 6 удалим 3 будет 1 2 3 4 5 .

неошибся он смещаеться



Это сообщение отредактировал(а) fakeman - 8.6.2009, 04:25
PM MAIL   Вверх
Aver78
Дата 8.6.2009, 04:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 21.4.2007

Репутация: нет
Всего: нет



А какой смысл в нумерациикомментариев вообще, и конкретно что бы выводился номер которым он был создан ? Обычно для целей привязки ко времени вешают дату.

Добавлено через 47 секунд
Если есть вопросы задавайте поскорее, а то мне уезжать скоро.
PM MAIL   Вверх
fakeman
Дата 8.6.2009, 04:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Цитата(Aver78 @  8.6.2009,  04:08 Найти цитируемый пост)
А, вот это да. Так и будет. Я так понял номера только для визуализации нужны. 

Цитата(Aver78 @  8.6.2009,  04:25 Найти цитируемый пост)
А какой смысл в нумерациикомментариев вообще, и конкретно что бы выводился номер которым он был создан ? Обычно для целей привязки ко времени вешают дату. 


не тока для  визуализации и для обращения к пользователю если уже есть 30комментов и человек не участвовал в обшении решил написать коммент с тем что не согласен с тем то комментом(допустим 10коммент) и кто то удалит комент 5 например всё сдвиниться и будет непонятки кому писался 31 коммент.

Цитата(Aver78 @  8.6.2009,  04:25 Найти цитируемый пост)
Обычно для целей привязки ко времени вешают дату. 

не допонял smile
PM MAIL   Вверх
Aver78
  Дата 8.6.2009, 04:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 21.4.2007

Репутация: нет
Всего: нет



1 - Можно сделать что бы коммент нельзя было удалить.
2 - Можно сделать что бы коммент нельзя было удалить, а вместо этого при нажатии на удаление он бы превращался в вид, что-нить, наподобие - "Комментарий был удален автором"
3 - Добавть в бд поле с нумерацией. Перед записью в бд коммента запрашивать какой был последний номер для новсти id-такой то.
4 - Добавить в бд поле привязки не к новости, а к комментарию и удалять все комменты которые приаттачены к адаляемому.( а сама новость что бы создавала нулевой , пустой коммент).

Можно еще несколько вариантов придумать, но чем дальше тем сложнее. Овчинка выделки не стоит. Классическое решение 1 или 2.

По поводу даты я не понял кто и что недопонял  smile 

Это сообщение отредактировал(а) Aver78 - 8.6.2009, 04:38
PM MAIL   Вверх
fakeman
Дата 8.6.2009, 04:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Цитата(Aver78 @  8.6.2009,  04:37 Найти цитируемый пост)
Можно еще несколько вариантов придумать, но чем дальше тем сложнее. Овчинка выделки не стоит. Классическое решение 1 или 2.

Да думаю тогда придётся сделать не удаление коммента а его редактирование.
Aver78,  Спасибо за понимание и советы  smile

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0532 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.