Задавайте вопросы, мы ответим
Вы не зашли.
Подскажите каким запросом можно удалить повторяющиеся строки в таблице mysql ? А то проблема в том что методом POST передается некоторая информация и при обновлении странички в браузере эти данные что были в POST опять летят в БД. И там дублируются по многу раз если нажимаешь обновление ... Я конечно легко обошелся GROUP BY (повторяющееся поле)...Всё хорошо, но душа то болит что в БД бардак )
Неактивен
Ну и конечно же мне надо что бы осталась строчка с самой свежей датой.
Неактивен
В данном случае не лучше ли исключить возможность добавлять дублирующиеся строки? Этого можно добиться уникальным ключом на нужные поля - приведите структуру таблицы, подскажу как его создать. Также посмотрите в сторону on duplicate key, insert ignore и replace - чтобы запись обновлялись при попытке вставке, если такая уже есть.
Удаление дублей покажу на имеющейся структуре таблицы. И нужно, чтобы было четкое представление - что именно является дублем.
Неактивен
Я привел ниже 2 скриншота. Структура и саму таблицу. Я сделал некую группу где все могу оставлять свои комментарии. Конечно дубли происходят только лишь если обновить страничку, но а иначе никак...пользователю же надо знать что уже ответили ему например. Приходиться обновлять для этого. Конечно я понимаю есть всякие решения на AJAX(e) и т.д...но сейчас я изучаю php + mysql. И так:
Есть login - это ник того юзера кто написал сообщение.
login_id - его персональный номер.
id_group - номер группы.
group_comment - текст сообщения который присылается с другой страницы методом пост в переменной $group_comment
avatar - ну и аватарка юзера с date(датой)
Задача: Не вносить в бд содержимое переменной $group_comment при нажатии на обновление браузера.
Кстати добавление в бд выглядит следующим образом:
if (isset($send_message)) {
$result3 = mysql_query("INSERT INTO groups_comments (login, login_id, id_group, group_comment, avatar, date) VALUES ('$name_user', '$id_user', '$id_group', '$send_message', '$avatar_user', '$date')");
}
Неактивен
deadka написал:
В данном случае не лучше ли исключить возможность добавлять дублирующиеся строки? Этого можно добиться уникальным ключом на нужные поля - приведите структуру таблицы, подскажу как его создать. Также посмотрите в сторону on duplicate key, insert ignore и replace - чтобы запись обновлялись при попытке вставке, если такая уже есть.
Удаление дублей покажу на имеющейся структуре таблицы. И нужно, чтобы было четкое представление - что именно является дублем.
Буду благодарен вашей помощи.
Неактивен
Уж если делать по уму, то у меня вопрос - зачем в таблице комментариев указывать login юзера, его аватарку, его группу - не проще ли вытащить все эти данные из таблицы пользователей по его id? Это сэкономить большое количество усилий в будущем.
Так что предложил бы Вам хранить в таблице комментариев только
id комментария,
id пользователя, оставившего комментарий
сам комментарий,
дату/время, когда был создан комментарий.
А вот насчет того, чем задаётся уникальность я, признаться, не понял.
Вы хотите, чтобы если пользователь vika оставлял один и тот же комментарий два раза (допустим из-за обновления страницы, с чего Вы начали свой пост), то чтобы комментарий с более старой датой удалялся или как?
Неактивен
deadka написал:
Уж если делать по уму, то у меня вопрос - зачем в таблице комментариев указывать login юзера, его аватарку, его группу - не проще ли вытащить все эти данные из таблицы пользователей по его id? Это сэкономить большое количество усилий в будущем.
Так что предложил бы Вам хранить в таблице комментариев только
id комментария,
id пользователя, оставившего комментарий
сам комментарий,
дату/время, когда был создан комментарий.
А вот насчет того, чем задаётся уникальность я, признаться, не понял.
Вы хотите, чтобы если пользователь vika оставлял один и тот же комментарий два раза (допустим из-за обновления страницы, с чего Вы начали свой пост), то чтобы комментарий с более старой датой удалялся или как?
Совершенно верно, хочу чтобы комментарий с более старой датой удалялся.
Неактивен
Тогда, либо
1) перед вставкой проверяйте, что нет еще такого комментария, и если есть, то обновляйте, а не вставляйте
2) создайте уникальный ключ на содежимое комментария + id пользователя и воспользуйтесь ON DUPLICATE KEY UPDATE.
Прочтите полностью http://phpclub.ru/mysql/doc/insert.html или http://dev.mysql.com/doc/refman/5.5/en/insert.html
Неактивен
Я на этом форуме имею одинаковые сообщения, например, когда я даю ссылку на какой-нибудь пункт фака. Если все их удалить, оставив только самый последний, то будет лажа.
А если я дважды добавлю сообщение, то одну из них сам удалю, а если и оставлю, так и фиг с ним (ничего страшного в этом нет).
Неактивен
Согласен, но топикстартер настаивает почему-то . В-принципе стоило бы еще задуматься о том, к чему относится комментарий.
Неактивен