|
3 / 3 / 2
Регистрация: 17.01.2012
Сообщений: 71
|
||||||
Обновление данных в БД13.02.2013, 02:18. Показов 3403. Ответов 36
Метки нет (Все метки)
Доброго времени суток уважаемый форумчане.
Я в этом деле новичёк, второй день работаю с БД плотно... так сказать изучаю на практике... Но появилась затея и решил реализовать. Суть вопроса вот какая. Имеем таблицу в которой 7 полей... с торентами и ссылками на них количеством сидов личеров и т.д. Информация в бд парсится со страницы с релизом. То есть я захожу на свою страницу, кидаю ссылку на релиз, парсится вся необходимая инфа и заношу в бд (в том числе саму ссылку). Можно ли реализовать такую фишку что если где то в таблице уже есть строка в которой эта ссылка есть (просто там серии добавляются ссылка остается та же а сам релиз изменяется), строка удалялась и просто в таблицу добавлялась новая с новой инфой? (заменять старую строку мне кажется сложно, проще удалить... так как я в этом деле профан)
Есть ещё проблема дубликатов (читал что если сделать уникальным они сами удалятся, но что то не хочет... но это мелочи, я постараюсь их избежать) И после пройденного пути меня посетила мысль о том как же я буду обновлять количество сидов и личеров... Ведь это надо брать и снова парсить страницу с каждым релизом и обновлять данные... Хотел с вами посоветоваться есть ли более простой метод реализации этого? (просто это огромная нагрузка что на мой комп что на сервер трекера file_get_contents прогонять релизы когда накопится их 10 20 30 штук... да и в целом это надо как то прогонять каждую строку брать из неё ссылку на трекер парсить инфу и изменять поля, хотя пока это писал появилась мысль while пока бд отдаёт результаты парсить и изменять значения... ооо значит это смогу сделать )В общем тогда у меня два вопроса... Тот что я писал выше, при добавлении ссылки если в бд есть уже запись с такой ссылкой удалить строку и добавить новую и как уже у существующей строки обновить 2 столбца ... Добавлено через 8 минут Нашёл нечто подобное INSERT [INTO] имя_таблицы [(название_поля,...)] VALUES (выражение,...),(...),... если учесть что while по очереди прогоняет каждую строку, если в него добавить данный код будет изменятся текущая строка? Допустим INSERT [INTO] relizbl [(seeders,...)] VALUES (.$seeds.,...),(...),... он будет брать параметр из переменной или прям и менять значение поля на .$seeds.
0
|
||||||
| 13.02.2013, 02:18 | |
|
Ответы с готовыми решениями:
36
Обновление одних и тех-же данных в двух базах данных Обновление данных в таблице с добавлением новых данных Обновление данных в базе данных |
|
34 / 34 / 2
Регистрация: 26.10.2010
Сообщений: 111
|
||||||
| 13.02.2013, 03:00 | ||||||
|
есть такая штука, как апдейт:
Добавлено через 7 минут З.Ы. А вообще подобные вещи делаются по крону: http://ru.wikipedia.org/wiki/Cron что бы запускать обновления данных, раз в 10 минут к примеру, или в час или каждый день в 8 утра =)
1
|
||||||
|
3 / 3 / 2
Регистрация: 17.01.2012
Сообщений: 71
|
|
| 13.02.2013, 03:04 [ТС] | |
|
Спасибо огромное днём буду вникать... Теперь я пришёл к выводу что проще обновлять инфу а не удалять строку, а как же всё таки организовать проверку? Типо ага в этой строке ссылка та же самая что пытаются добавить и надо обновить даные а не создавать новую строку под неё... Как обновить инфу я теперь понимаю а как делать эту проверку
0
|
|
|
34 / 34 / 2
Регистрация: 26.10.2010
Сообщений: 111
|
|||||||||||
| 13.02.2013, 03:12 | |||||||||||
так можно получить значение и если надо обновить. Добавлено через 3 минуты З.Ы.
1
|
|||||||||||
|
3 / 3 / 2
Регистрация: 17.01.2012
Сообщений: 71
|
|
| 13.02.2013, 03:12 [ТС] | |
|
Я имею ввиду что допустим есть строка в которой уже фигурирует даный релиз с такой же ссылкой... Найти строку с ним и обновить в ней данные...
0
|
|
|
34 / 34 / 2
Регистрация: 26.10.2010
Сообщений: 111
|
||
| 13.02.2013, 03:15 | ||
|
0
|
||
|
3 / 3 / 2
Регистрация: 17.01.2012
Сообщений: 71
|
||||||
| 13.02.2013, 03:32 [ТС] | ||||||
|
Тоесть этой командой я сделаю что бы следующая выполнялась относительно строки в которой значение link равно тому что в скобках? Тоесть например
Добавлено через 2 минуты Спасибо огромное за помощь, щас я уже спать 3 ночи на дворе надеюсь ближе к вечеру сможем пообщаться когда буду код доделывать ![]() Добавлено через 10 минут Ps:то есть команда selectДаст результат что обновления будут проходить в пределах этой строки или я ошибаюсь? Тогда надо прикрутить что если хотябы одна найдена обновлять а если нет создавать новую
0
|
||||||
|
34 / 34 / 2
Регистрация: 26.10.2010
Сообщений: 111
|
|||
| 13.02.2013, 03:40 | |||
|
Добавлено через 6 минут ![]() SELECT - выбирает данные по какому-то критерию
1
|
|||
|
3 / 3 / 2
Регистрация: 17.01.2012
Сообщений: 71
|
|
| 13.02.2013, 08:22 [ТС] | |
|
Тоесть грубо говоря на страницу выведет строку, которая проходит по критерию... Щас вот в голову мысль пришла по поводу задумки, но ты мне так и не сказал если записи из бд выводятся командой while и в него засунуть update то он будет проходит в пределах строки на которой он в данный момент? Просто тогда можно в if засунуть что если параметр из таблицы равен вводимому делать update строки в противном случае создавать новую строку
0
|
|
|
34 / 34 / 2
Регистрация: 26.10.2010
Сообщений: 111
|
|
| 13.02.2013, 14:11 | |
|
0
|
|
|
3 / 3 / 2
Регистрация: 17.01.2012
Сообщений: 71
|
||||||
| 13.02.2013, 18:09 [ТС] | ||||||
|
сэр Афим
то есть
0
|
||||||
|
34 / 34 / 2
Регистрация: 26.10.2010
Сообщений: 111
|
|
| 13.02.2013, 18:29 | |
|
нет, апдейт выполняется по условию WHERE, сылку на описание я кидал
0
|
|
|
3 / 3 / 2
Регистрация: 17.01.2012
Сообщений: 71
|
||||||
| 13.02.2013, 18:37 [ТС] | ||||||
или как?
0
|
||||||
|
34 / 34 / 2
Регистрация: 26.10.2010
Сообщений: 111
|
|
| 13.02.2013, 19:03 | |
|
что за IN? о_0 повторю, апдейт обновляет по условию WHERE, не больше, ни меньше
0
|
|
|
3 / 3 / 2
Регистрация: 17.01.2012
Сообщений: 71
|
|
| 14.02.2013, 04:50 [ТС] | |
|
mysql_query(" UPDATE `relizbl` SET необлодимые для изменения параметры WHERE `link`='$link' "); что то типо такого?
и в случае если он не найдет он создаст новую строку? Или ему надо как то сказать что если он ничего не нашёл надо новую строку создавать? Просто тогда через if можно попробовать... Что он вернёт если не ничего не обновит? Думаю надо отталкиватся от результата выполнение
0
|
|
|
34 / 34 / 2
Регистрация: 26.10.2010
Сообщений: 111
|
|||
| 14.02.2013, 05:27 | |||
|
Добавлено через 1 минуту
0
|
|||
|
3 / 3 / 2
Регистрация: 17.01.2012
Сообщений: 71
|
|
| 14.02.2013, 06:37 [ТС] | |
|
Но для обновления я правильно написал в целом то
mysql_query(" UPDATE `relizbl` SET необходимые для изменения параметры WHERE `link`='$link' ") Добавлено через 9 секунд или нет? Добавлено через 1 минуту Ну тоесть я понимаю её что он должен одновить указаные поля в строках в которых link равен указанному значению.. Так ?
0
|
|
|
34 / 34 / 2
Регистрация: 26.10.2010
Сообщений: 111
|
|||||||||||||
| 14.02.2013, 06:55 | |||||||||||||
|
Добавлено через 2 минуты
Добавлено через 7 минут небольшой оффтоп: Кликните здесь для просмотра всего текста
В принципе есть ещё более удобные способы управлять данными в БД, как пример - паттерн (структура, алгоритм, шаблон проектирования) ActiveRecord: http://ru.wikipedia.org/wiki/ActiveRecord. Это набор классов и выглядит там немного иначе всё:
1
|
|||||||||||||
|
3 / 3 / 2
Регистрация: 17.01.2012
Сообщений: 71
|
|||||||||||
| 14.02.2013, 07:11 [ТС] | |||||||||||
щас я добился что если торент уже есть он выдаёт сообщение и не добавляет а вот update пока не стал в основной код вставлять тут для примера написал... Добавлено через 3 минуты Тоесть можно заюзать UPDATE users SET seeds='$seeds', leacher='$lecher' WHERE Link = '$link' Добавлено через 31 секунду вместо того что я написал Добавлено через 1 минуту воть
Ааа проверил пашет.....
0
|
|||||||||||
|
34 / 34 / 2
Регистрация: 26.10.2010
Сообщений: 111
|
||||||||||
| 14.02.2013, 07:15 | ||||||||||
|
Только не забывай, что запросы к БД создают нагрузку, старайся что бы их было как можно меньше Есть ещё некоторые фишки для ускорения работы, например заменить:
Добавлено через 1 минуту
1
|
||||||||||
| 14.02.2013, 07:15 | |
|
Помогаю со студенческими работами здесь
20
Обновление данных в БД Обновление данных в БД Обновление данных в бд Обновление данных Обновление данных в БД Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
*/
#include <iostream>
#include <stack>
#include <cctype>. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|