За последние 24 часа нас посетили 38364 программиста и 1722 робота. Сейчас ищут 650 программистов ...

Выделение новых сообщений. Проблема с ENUM

Тема в разделе "MySQL", создана пользователем amen, 27 окт 2009.

  1. amen

    amen Активный пользователь

    С нами с:
    18 сен 2009
    Сообщения:
    298
    Симпатии:
    0
    Адрес:
    Узбекистан
    Доброго времени суток.
    Я сделал в админке к новостной ленте функцию "новые комментарии". Вобщем всё работает.
    Теперь захотел сделать так, чтобы на этой странице с новыми комментами собственно новые комменты выделялись жирным, а отредактированные - обычным шрифтом.
    Решил сделать так -
    1. Добавить новое поле к таблице с комметами :
    [sql]new ENUM ('new','old') NOT NULL DEFAULT 'old',[/sql]

    2. При добавлении коммента посетителем в таблицу в поле new заносится значение 'new':
    PHP:
    1. $query = "INSERT INTO comments (id_news, date_com, name_com, comm, new)
    2.          VALUES ('$id',now(), '$name_com', '$com','new')";
    3. На странице с новыми комментами если new = 'new' - выделяем жирным, если нет - текст обычный:

    PHP:
    1.    if ($rw['new']=='new')
    2.    echo "
    3.   <th>".$i++."</th>
    4.   <th>".htmlspecialchars($rw['name_com'])."</th>
    5.   <th>".$rw['comm']."</th>
    6.   <th>".$rw['date_reg']."</th>
    7.   <th>".$row['head']."</th>
    8.   ";
    9.    else echo"
    10.   <td>".$i++."</td>
    11.   <td>".htmlspecialchars($rw['name_com'])."</td>
    12.   <td>".$rw['comm']."</td>
    13.   <td>".$rw['date_reg']."</td>
    14.   <td>".$row['head']."</td>
    15.   ";
    16.    
    4. (до этого я ещё не дошёл но думаю сделать так) При редактировании коммента значение 'new' меняю на 'old' и новость будет выводится обычным шрифтом.

    Первые три шага я проделал. ПРОБЛЕМА вот в чём - в таблицу добавился лишь один коммент и больше добавлять отказывается.
    Почему так?
    Может есть более подходящий тип для поля new?
    и вопросик для общего развития : Может лучше это делать при помощи аякса или яваскрипта?

    Надеюсь на вашу помощь[/php]
     
  2. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    что значит "отказывается добавлять"? На что ругается?
     
  3. amen

    amen Активный пользователь

    С нами с:
    18 сен 2009
    Сообщения:
    298
    Симпатии:
    0
    Адрес:
    Узбекистан
    Выдаёт ошибку can't add into table отсюда:

    PHP:
    1. $query = "INSERT INTO comments (id_news, date_com, name_com, comm, new)
    2.          VALUES ('$id',now(), '$name_com', '$com','new')";
    3.  
    4. if (mysql_query($query))
    5. {
    6.  header("Location: comments.php?id=$id");
    7. }
    8. else echo"can't add into table";
     
  4. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Круто.
    А слабо вместо своего echo, вывести mysql_error()?
     
  5. amen

    amen Активный пользователь

    С нами с:
    18 сен 2009
    Сообщения:
    298
    Симпатии:
    0
    Адрес:
    Узбекистан
    Оу, спасибо за подсказку.
    Теперь выходит
    Duplicate entry '0' for key 1
     
  6. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    ммм... он тебе случайно не намекает, что у тебя $id=0 и ты его пытаешься пропихнуть в базу не пользуясь автоинкрементом? При том что id у тебя видимо уникальный.
     
  7. amen

    amen Активный пользователь

    С нами с:
    18 сен 2009
    Сообщения:
    298
    Симпатии:
    0
    Адрес:
    Узбекистан
    Действительно, каким-то образом исчезло свойство автоинкремент из поля id.
    До того как я добавил в таблицу поле new всё заносилось как надо.
    Добавил, всё работает, спасибо за помощь.

    Всё же спрошу ещё раз - не лучше ли подобные функции делать на яваскрипте или аяксе, просто с этими языками я пока не знаком и мне всё чудится, что я черпаю из озера ложкой, делая такие вещи на РНР?
     
  8. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    Яваскрипт не должен лезть в базу данных. Да и не может, в общем-то. А Ajax все равно будет обращаться к php на котором это и сделано.

    Или ты имеешь в виду "подсвечивать новые сообщения прямо на странице яваскриптом, не обращаясь к базе"? А как js будет решать какое сообщение новое? Нет уж, лучше php.
     
  9. Компот

    Компот Активный пользователь

    С нами с:
    27 окт 2009
    Сообщения:
    16
    Симпатии:
    0
    лучше назначать css класс новым сообщениям и в правилах уже прописывать стили. А заголовочные ячейки оставить для заголовков