Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/16: Рейтинг темы: голосов - 16, средняя оценка - 4.88
3 / 3 / 2
Регистрация: 17.01.2012
Сообщений: 71

Обновление данных в БД

13.02.2013, 02:18. Показов 3403. Ответов 36
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток уважаемый форумчане.
Я в этом деле новичёк, второй день работаю с БД плотно... так сказать изучаю на практике... Но появилась затея и решил реализовать.

Суть вопроса вот какая.
Имеем таблицу в которой 7 полей... с торентами и ссылками на них количеством сидов личеров и т.д.
Информация в бд парсится со страницы с релизом. То есть я захожу на свою страницу, кидаю ссылку на релиз, парсится вся необходимая инфа и заношу в бд (в том числе саму ссылку). Можно ли реализовать такую фишку что если где то в таблице уже есть строка в которой эта ссылка есть (просто там серии добавляются ссылка остается та же а сам релиз изменяется), строка удалялась и просто в таблицу добавлялась новая с новой инфой? (заменять старую строку мне кажется сложно, проще удалить... так как я в этом деле профан)

Code
1
2
3
4
5
6
7
8
                            `ID - номер в таблице` ,
                            `Date - дата добавления` ,
                            `Title - хранить в себе название релиза` ,
                            `Images - ссылка на постер`,
                            `Link - ссылка на страничку релиза`,
                            `Torlink - ссылка на торрент файл`,
                            `Seeds - количество сидов`,
                            `Lecher - личеров соответсвенно`
вот поля
Есть ещё проблема дубликатов (читал что если сделать уникальным они сами удалятся, но что то не хочет... но это мелочи, я постараюсь их избежать)

И после пройденного пути меня посетила мысль о том как же я буду обновлять количество сидов и личеров... Ведь это надо брать и снова парсить страницу с каждым релизом и обновлять данные... Хотел с вами посоветоваться есть ли более простой метод реализации этого? (просто это огромная нагрузка что на мой комп что на сервер трекера file_get_contents прогонять релизы когда накопится их 10 20 30 штук... да и в целом это надо как то прогонять каждую строку брать из неё ссылку на трекер парсить инфу и изменять поля, хотя пока это писал появилась мысль while пока бд отдаёт результаты парсить и изменять значения... ооо значит это смогу сделать )

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

Добавлено через 8 минут
Нашёл нечто подобное
INSERT
[INTO] имя_таблицы [(название_поля,...)]
VALUES (выражение,...),(...),...

если учесть что while по очереди прогоняет каждую строку, если в него добавить данный код будет изменятся текущая строка? Допустим

INSERT
[INTO] relizbl [(seeders,...)]
VALUES (.$seeds.,...),(...),...

он будет брать параметр из переменной или прям и менять значение поля на .$seeds.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.02.2013, 02:18
Ответы с готовыми решениями:

Обновление одних и тех-же данных в двух базах данных
Всем здрасте, как варианты есть для того чтобы обновить данные на двух серверах сразу тоесть когда попадают данные в одну базу данных их-же...

Обновление данных в таблице с добавлением новых данных
Уважаемые знатоки, есть проблема с которой сам разобраться не могу, помогите пожалуйста. Вопрос больше к MySql, чем к PHP. но возможно...

Обновление данных в базе данных
Возникла проблемма, данные не передаются. Передается так: while ($row = mysql_fetch_array($res)) { echo "<form...

36
 Аватар для сэр Афим
34 / 34 / 2
Регистрация: 26.10.2010
Сообщений: 111
13.02.2013, 03:00
есть такая штука, как апдейт:
SQL
1
UPDATE таблица SET поле=значение, второе_поле=другое_значение
http://ru.wikipedia.org/wiki/Update_(SQL)

Добавлено через 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
SQL
1
SELECT поле FROM таблица WHERE поле=значение_поля
http://ru.wikipedia.org/wiki/Select_(SQL)
так можно получить значение и если надо обновить.

Добавлено через 3 минуты
З.Ы.
SQL
1
SELECT COUNT(*) FROM таблица WHERE link LIKE(%somelink.com%)
оно? ну т.е. если возваращет значение больше 0, то ссылка присутствует
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
Цитата Сообщение от mihalbl4 Посмотреть сообщение
Я имею ввиду что допустим есть строка в которой уже фигурирует даный релиз с такой же ссылкой... Найти строку с ним и обновить в ней данные...
я подправил предыдущий пост свой. Оператор LIKE(%текст%) выбирает все реузльтаты, где в тексте присутствет какое-либо подобное значение
0
3 / 3 / 2
Регистрация: 17.01.2012
Сообщений: 71
13.02.2013, 03:32  [ТС]
Тоесть этой командой я сделаю что бы следующая выполнялась относительно строки в которой значение link равно тому что в скобках? Тоесть например
SQL
1
SELECT COUNT(*) FROM relizbl WHERE link LIKE ($link)
не подскажешь какой правильный синтаксис в подобных командах что бы забирать значение из переменной

Добавлено через 2 минуты
Спасибо огромное за помощь, щас я уже спать 3 ночи на дворе надеюсь ближе к вечеру сможем пообщаться когда буду код доделывать

Добавлено через 10 минут
Ps:то есть команда selectДаст результат что обновления будут проходить в пределах этой строки или я ошибаюсь? Тогда надо прикрутить что если хотябы одна найдена обновлять а если нет создавать новую
0
 Аватар для сэр Афим
34 / 34 / 2
Регистрация: 26.10.2010
Сообщений: 111
13.02.2013, 03:40
Цитата Сообщение от mihalbl4 Посмотреть сообщение
не подскажешь какой правильный синтаксис в подобных командах что бы забирать значение из переменной
не забудь в проценты поместить, синтаксис же можно нагуглить спокойно: https://www.google.ru/search?q... 4ATrmYCYDg

Добавлено через 6 минут
Цитата Сообщение от mihalbl4 Посмотреть сообщение
Ps:то есть команда selectДаст результат что обновления будут проходить в пределах этой строки или я ошибаюсь? Тогда надо прикрутить что если хотябы одна найдена обновлять а если нет создавать новую
ошибаешься. Если сомневаешься - попробуй в переводчик вбить команду, сразу поймёшь что делает
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
Цитата Сообщение от mihalbl4 Посмотреть сообщение
update то он будет проходит в пределах строки на которой он в данный момент?
нет
0
3 / 3 / 2
Регистрация: 17.01.2012
Сообщений: 71
13.02.2013, 18:09  [ТС]
сэр Афим
то есть
PHP
1
2
3
4
5
while($infor = mysql_fetch_array($results)){
$titlelink = $infor['Link'];
  if ($titlelink = $link)
  UPDATE таблица SET поле=значение, второе_поле=другое_значение
  }
не прокатит?
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  [ТС]
SQL
1
2
3
SELECT *
FROM TABLE_NAME
WHERE column_name IN (value1,value2,...)
тоесть нужно юзать вот эту команду в купе с update?
или как?
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
Цитата Сообщение от mihalbl4 Посмотреть сообщение
и в случае если он не найдет он создаст новую строку?
обновит. Помнится на прошлой странице я кому-то предлагал пользоваться переводчиком, если уж английского не знает?

Добавлено через 1 минуту
Цитата Сообщение от mihalbl4 Посмотреть сообщение
Или ему надо как то сказать что если он ничего не нашёл надо новую строку создавать? Просто тогда через if можно попробовать... Что он вернёт если не ничего не обновит? Думаю надо отталкиватся от результата выполнение
думаю в твоём случае проще удалить и создать заново, синтаксис SQL/PSM пока тебе учить рано для написания условий =)
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
Цитата Сообщение от mihalbl4 Посмотреть сообщение
Но для обновления я правильно написал в целом то
правильно =)

Добавлено через 2 минуты
Цитата Сообщение от mihalbl4 Посмотреть сообщение
Ну тоесть я понимаю её что он должен одновить указаные поля в строках в которых link равен указанному значению.. Так ?
именно так.
SQL
1
UPDATE users SET login="admin", name="Administrator" WHERE id=1
например. Опять же если не указывать WHERE, то обновятся все данные, т.е. во всех строках будет логин admin и имя Администратор =)

Добавлено через 7 минут
небольшой оффтоп:
Кликните здесь для просмотра всего текста
В принципе есть ещё более удобные способы управлять данными в БД, как пример - паттерн (структура, алгоритм, шаблон проектирования) ActiveRecord: http://ru.wikipedia.org/wiki/ActiveRecord. Это набор классов и выглядит там немного иначе всё:
PHP
1
2
3
4
$user = new User(['id' => 1]); // получить пользователя с ID = 1
$user->login = 'новый логин';
$user->email = 'новый емэил';
$user->save(); // Сохранить данные о пользователе
Как сам понимаешь - в таком случае сам SQL код генерируется и выполняется за тебя.
1
3 / 3 / 2
Регистрация: 17.01.2012
Сообщений: 71
14.02.2013, 07:11  [ТС]
PHP
1
2
3
4
5
6
$results = mysql_query("SELECT * FROM $dbtable WHERE Link = '$link'");
if (mysql_num_rows($results) > 0){ 
echo "БРАТЮНЬ ТАКОЙ ТОРЕНТ УЖЕ ЕСТЬ";
mysql_query(" UPDATE `rel` SET seeds = значение lechers = значение date = значение")
}
else {
так всё обновит?
щас я добился что если торент уже есть он выдаёт сообщение и не добавляет
а вот update пока не стал в основной код вставлять тут для примера написал...

Добавлено через 3 минуты
Тоесть можно заюзать
UPDATE users SET seeds='$seeds', leacher='$lecher' WHERE Link = '$link'

Добавлено через 31 секунду
вместо того что я написал

Добавлено через 1 минуту
воть
PHP
1
2
3
4
5
6
$results = mysql_query("SELECT * FROM $dbtable WHERE Link = '$link'");
if (mysql_num_rows($results) > 0){ 
echo "БРАТЮНЬ ТАКОЙ ТОРЕНТ УЖЕ ЕСТЬ, ИНФА ОБНОВИТСЯ";
mysql_query("UPDATE rel SET Date='$date' Seeds='$seds', Lecher='$lech' WHERE Link = '$link'")
}
else {
Добавлено через 4 минуты
Ааа проверил пашет.....
0
 Аватар для сэр Афим
34 / 34 / 2
Регистрация: 26.10.2010
Сообщений: 111
14.02.2013, 07:15
Цитата Сообщение от mihalbl4 Посмотреть сообщение
так всё обновит?
только параметры через запятую.
Цитата Сообщение от mihalbl4 Посмотреть сообщение
UPDATE users SET seeds='$seeds', leacher='$lecher' WHERE Link = '$link'
да, вот так как то.

Только не забывай, что запросы к БД создают нагрузку, старайся что бы их было как можно меньше Есть ещё некоторые фишки для ускорения работы, например заменить:

Цитата Сообщение от mihalbl4 Посмотреть сообщение
PHP
1
SELECT * FROM $dbtable WHERE Link = '$link'
на
SQL
1
SELECT COUNT(*) FROM $dbtable WHERE Link='$link'
в таком случае база данных не будет выбирать все существующие данные, а получит лишь их количество, что тебе собственно и нужно. Зато такой запрос будет в несколько раз быстрее работать

Добавлено через 1 минуту
Цитата Сообщение от mihalbl4 Посмотреть сообщение
Ааа проверил пашет.....
ну это самое главное, тонкости с опытом придут =)))
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.02.2013, 07:15
Помогаю со студенческими работами здесь

Обновление данных в БД
Добрый день! Хочу сделать обновление данных пользователя. Вроде все сделал правильно. Нажимаю кнопку - страница обновляется и все...

Обновление данных в БД
Здравствуйте! Стоит такая задача: по запросу выводится список документов по определенному коду клиента за заданный период. У оператора...

Обновление данных в бд
Всем привет , вчера начал писать задание на практическую и возникла проблема с обноовлением данных в бд, Добавление и удаление есть ,...

Обновление данных
День добрый, попросили написать формы регистрации и авторизации, связанные с другим сервером, но суть не в этом. С базы стороннего сервера...

Обновление данных в БД
Выдает данные обновлены успешно, но передает пустое значение, в чем косяк? <? session_start(); $id=$_SESSION; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
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, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru