Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
 Аватар для Shamsik
-42 / 17 / 15
Регистрация: 23.12.2013
Сообщений: 521
Записей в блоге: 1

Изменение записи в одном поле, если превышено число в другом

05.08.2014, 21:06. Показов 1730. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здраствуйте помогите пожалуйста с вопросом

у меня в базе есть таблица status

в нем есть 3 поля : id, name, points там хранятся столбики

1,Обычный 0
2,Писанин 10
3,Активный 40
4,Чаттер 70

0,10,40,70 это баллы

когда доходит примерно до баллов 40 чтобы статус Писанин менялся на Статус Активный


а баллы находятся в таблице user
в столбике points

ну примерно так да

PHP
1
2
3
if ($user['points'] >= $status['point']) {
     echo 'Чаттер';
}
Вот так писать к каждому полю а как сделать полегче чтобы когда доходит до определенного количество баллов

с одной функции менялся статус, ну чтобы потом когда ты захочешь к примеру добавить еще один статус там тебе не пришлось опять в код заходит и добавить функицию чтобы когда доходят до такого статуса чтобы менялся!

Помогите пожалуйста решить данную функцию очень нужно пожалуйста заранее огромное вам спасибо!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.08.2014, 21:06
Ответы с готовыми решениями:

В одном поле ввожу число в другом поле должно автоматически проставиться число
Как сделать чтобы например я ввёл в поле volume цифру 1 в поле price бы автоматически проставлялась определёное число в зависимости от того...

Запрет на изменение данных в поле в зависимости от наличия или отсутствия данных в другом поле
Форумчане,доброго времени суток! Помогите решить проблему: В форме "frmВозвраты_Из_ОТК_ОТК_Калинин_СЮ" есть поле...

Сможет ли ферзь, стоящий на одном из заданных полей, взять коня, стоящего на другом поле
Поле шахматной доски определяется парой целых чисел – номером строки (от 1 до 8) и номером столбца (от 1 до 8). Пусть заданы два поля:...

21
F́́́́́́́ŕ́́́́́́́é́́́ ́ak
 Аватар для Tatikoma
260 / 224 / 109
Регистрация: 07.07.2014
Сообщений: 965
05.08.2014, 21:23
Лучший ответ Сообщение было отмечено Shamsik как решение

Решение

Примерно так может выглядеть ваш код:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$status = array(
    1 => 'Обычный',
    10 => 'Писанин',
    40 => 'Активный',
    70 => 'Чаттер',
);
 
$currentPoints = 39; // Текущее кол-во баллов
function increasePoints($currentPoints) use($status){ // процедура увеличения кол-во баллов
    $points = $currentPoints + 1;
    if(array_key_exists($points, $status)){
        mysql_query("UPDATE user SET status = ..");
    }
}
1
 Аватар для Shamsik
-42 / 17 / 15
Регистрация: 23.12.2013
Сообщений: 521
Записей в блоге: 1
05.08.2014, 21:34  [ТС]
Parse error: syntax error, unexpected T_USE, expecting '{' in

и еще хочу добавить что в не через array() надо выводить а через базу mysql

PHP
1
$status  = mysql_fetch_array(mysql_query("SELECT * FROM `status`"));
и вот тут мне нужно сделать так чтобы ск. я набрал баллов мне увеличили статус

поможете да еще раз
1
F́́́́́́́ŕ́́́́́́́é́́́ ́ak
 Аватар для Tatikoma
260 / 224 / 109
Регистрация: 07.07.2014
Сообщений: 965
05.08.2014, 21:37
Shamsik, обновите версию PHP, или перепишите код не используя модификатор use, тогда не будет ошибки. Я не говорил что код у вас заработает, я лишь показал как он может выглядеть - свой код пишите сами.

Цитата Сообщение от Shamsik Посмотреть сообщение
и еще хочу добавить что в не через array() надо выводить а через базу mysql
Есть подозрение, что вам эти статусы будут нужны в десятке мест - в таком случае дешевле один раз выбрать их из базы и сложить в массив, как в примере кода выше.
0
 Аватар для Shamsik
-42 / 17 / 15
Регистрация: 23.12.2013
Сообщений: 521
Записей в блоге: 1
05.08.2014, 23:08  [ТС]
Нет в одно места только в профиле и все

просто когда я добавлю там новый статус с ограниченным баллом чтобы сразу в коде она задействовало по одной функции чторбы можно было когда дойдешь до статуса который новый добавил и появился название этого статуса

Добавлено через 26 минут
??????????

Добавлено через 1 час 0 минут
Я понял твою функцию и сделал выводы

можешь еще сказать как сделать так чтобы вот примерно идут так

PHP
1
2
3
4
5
6
$status = array(
    1 => 'Обычный',
    10 => 'Писанин',
    40 => 'Активный',
    70 => 'Чаттер',
);
но когда ты получаешь статус писанин и потом ты что та написал и получил еще бал и стало всего 11 баллов и исчезает статус вообще а как сделать так чтобы с 10 до 40 не исчезался статус а чтобы сменился сразу с Писанин на Активный как это сделать скажи пожалуйста
0
15 / 15 / 8
Регистрация: 29.07.2014
Сообщений: 120
06.08.2014, 00:04
Усложняете как-то, блин.
Например, статусы по баллам с шагом 25.
PHP
1
2
3
4
// $points  из базы берем
$status = array('s1', 's2', 's3', 's4');
$key = $points % 25;
echo $status[$key];
Добавлено через 6 минут
Shamsik, берете какую-нибудь прогрессию и функцию остатка и отображаете диапазон чисел на номер статуса. Тогда морочиться со всякими if не будете.
0
 Аватар для Shamsik
-42 / 17 / 15
Регистрация: 23.12.2013
Сообщений: 521
Записей в блоге: 1
06.08.2014, 00:11  [ТС]
Где и как найти ее?
0
F́́́́́́́ŕ́́́́́́́é́́́ ́ak
 Аватар для Tatikoma
260 / 224 / 109
Регистрация: 07.07.2014
Сообщений: 965
06.08.2014, 00:16
artnazarov, это вы усложняете.

В момент обновления point'ов - смотрим, есть ли статус с новым кол-вом поинтов и просто меняем статус. Никаких прогрессий.

А зачастую это еще проще реализовано - статус не привязывается к юзеру, а определяется каждый раз при отображении страницы.
0
15 / 15 / 8
Регистрация: 29.07.2014
Сообщений: 120
06.08.2014, 00:31
И где я усложнил. Правильно он спрашивает. У него 11 поинтов никакому ключу соответствовать не будет.Tatikoma Shamsik, зачем статусы вообще в базе хранить? Что значит в момент обновления поинтов? Я понимаю, что вы на логику представления в шаблоне намекаете. Но базу то дергать зачем. PHP от вычисления остатка задохнется?
0
F́́́́́́́ŕ́́́́́́́é́́́ ́ak
 Аватар для Tatikoma
260 / 224 / 109
Регистрация: 07.07.2014
Сообщений: 965
06.08.2014, 00:34
artnazarov, или вы усложняете, или я додумываю.

У меня есть ощущение, что изначально у пользователя 0 поинтов и нет никакого статуса. Далее поинты увеличиваются инкрементально по единичке. Соответственно если хранить связь в базе при увеличении поинтов - все работает тривиально по описанному выше алгоритму.
0
 Аватар для Shamsik
-42 / 17 / 15
Регистрация: 23.12.2013
Сообщений: 521
Записей в блоге: 1
06.08.2014, 00:42  [ТС]
В базу хранить легче , потому чтобы можно было легко добавлять новые статусы с нужными параметрами или же существующие изменить

Добавлено через 2 минуты
Если изночально если 0 поинтов пользователю присваивается статус Простой потом когда набирает 10 баллов примерно чтобы пошла статус Обычный

Но

мне нужно примерно с 10 баллов до 30 баллов Остовался статус Обычно потом с 30 до 60 примерно менялся и становился новый статус активный

А по твоему 1 коды отображается статус когда у тебя 10 баллов и когда набираешь 11 балоов она исчезает

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
                            
 
$status = array(
    1 => 'Обычный',
    10 => 'Писанин',
    40 => 'Активный',
    70 => 'Чаттер',
);
 
$currentPoints = 40; // Текущее кол-во баллов
    $points = $currentPoints + 1;
    if(array_key_exists($points, $status)){
        echo $status[$points];
    }
0
15 / 15 / 8
Регистрация: 29.07.2014
Сообщений: 120
06.08.2014, 00:46
Tatikoma, он баллы изменит, что статусы менять по всей базе?
0
F́́́́́́́ŕ́́́́́́́é́́́ ́ak
 Аватар для Tatikoma
260 / 224 / 109
Регистрация: 07.07.2014
Сообщений: 965
06.08.2014, 00:48
Я не понимаю что вы хотите..

SQL
1
2
3
4
5
6
7
8
9
SELECT u.`name`, (
    SELECT `status_name`
    FROM `status` s
    WHERE s.`points` <= u.`points`
    ORDER BY s.`points`
    LIMIT 1
) AS `status`
FROM `user` u
WHERE u.`user_id` = ...
Это? - Выбираем из базы пользователя и на лету, исходя из поинтов, - выбираем статус.
0
15 / 15 / 8
Регистрация: 29.07.2014
Сообщений: 120
06.08.2014, 00:48
Shamsik, я своего кода у Вас не увидел. Вы смысл моего сообщения поняли?
Спорить не буду, делайте что хотите
0
F́́́́́́́ŕ́́́́́́́é́́́ ́ak
 Аватар для Tatikoma
260 / 224 / 109
Регистрация: 07.07.2014
Сообщений: 965
06.08.2014, 00:48
artnazarov, все зависит от задачи, а она описана весьма туманно.
0
15 / 15 / 8
Регистрация: 29.07.2014
Сообщений: 120
06.08.2014, 00:52
Tatikoma, еще раз, он отредактирует статусы, пороговые эти баллы )
Вы написали
UPDATE user SET status = ..");
Что это такое?
0
F́́́́́́́ŕ́́́́́́́é́́́ ́ak
 Аватар для Tatikoma
260 / 224 / 109
Регистрация: 07.07.2014
Сообщений: 965
06.08.2014, 00:53
Цитата Сообщение от artnazarov Посмотреть сообщение
Что это такое?
Набросок SQL-запроса. Очевидно же?)
1
 Аватар для Shamsik
-42 / 17 / 15
Регистрация: 23.12.2013
Сообщений: 521
Записей в блоге: 1
06.08.2014, 12:52  [ТС]
твой код я не понял как вообще вместить та туда )))

PHP
1
2
3
4
5
6
7
8
9
10
11
12
                            $status = array(
    1 => 'Обычный',
    10 => 'Писанин',
    40 => 'Активный',
    70 => 'Чаттер',
);
 
$currentPoints = 40; // Текущее кол-во баллов
    $points = $currentPoints + 1;
    if(array_key_exists($points, $status)){
        echo $status[$points];
    }

//Вот твой код
PHP
1
2
3
4
// $points  из базы берем
$status = array('s1', 's2', 's3', 's4');
$key = $points % 25;
echo $status[$key];
Добавлено через 57 секунд
Мне просто нужно сделать так чтобы с 10баллов до 20 статус вообще не менялся при этом же коде но что добавить надо я не понял так и

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
1
2
3
4
5
6
7
8
9
10
11
12
                            $status = array(
    1 => 'Обычный',
    10 => 'Писанин',
    40 => 'Активный',
    70 => 'Чаттер',
);
 
$currentPoints = 40; // Текущее кол-во баллов
    $points = $currentPoints + 1;
    if(array_key_exists($points, $status)){
        echo $status[$points];
    }
Добавлено через 11 часов 53 минуты
Ну парни как решить та ее (( никак не получается
0
F́́́́́́́ŕ́́́́́́́é́́́ ́ak
 Аватар для Tatikoma
260 / 224 / 109
Регистрация: 07.07.2014
Сообщений: 965
06.08.2014, 13:13
Shamsik, SQL-запрос выше не подходит?...
0
 Аватар для Shamsik
-42 / 17 / 15
Регистрация: 23.12.2013
Сообщений: 521
Записей в блоге: 1
06.08.2014, 17:01  [ТС]
SQL
1
2
3
4
5
6
7
8
9
SELECT u.`name`, (
    SELECT `status_name`
    FROM `status` s
    WHERE s.`points` <= u.`points`
    ORDER BY s.`points`
    LIMIT 1
) AS `status`
FROM `user` u
WHERE u.`user_id` = ...
тут все запутано как та сделай пожалуйста если не трудно понятнее вот мая таблица в базе где лежит статусы

SQL
1
2
3
4
5
6
CREATE TABLE IF NOT EXISTS `status_user` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(255) NOT NULL,
  `points` VARCHAR(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COMMENT='Статус пользователя' AUTO_INCREMENT=12 ;
вот чтобы запрос был в функции которую ты писал
PHP
1
2
3
4
5
6
7
8
9
10
11
12
    $status = array(
    1 => 'Обычный',
    10 => 'Писанин',
    40 => 'Активный',
    70 => 'Чаттер',
);
 
$currentPoints = 40; // Текущее кол-во баллов
    $points = $currentPoints + 1;
    if(array_key_exists($points, $status)){
        echo $status[$points];
    }

.... p.s Спасибо тебе за то что помогаешь с ее решением

Добавлено через 1 час 59 минут
Все решил спс за помощь тебе
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.08.2014, 17:01
Помогаю со студенческими работами здесь

Выполнить расчёт, если знания в одном столбце совпадают с значениям в другом
Добрый день! Такой вот вопрос: имеем диапазон данных. Первая колонка - колонка с датами, вторая - с некоторыми значениями. Третья колонка...

Свойство должно быть доступно для записи в одном наследнике и readonly в другом
Есть базовый класс с вот таким пропертом private string _name; public virtual string Name { get { return _name; } ...

Вычесть два массива, если в одном массиве больше элементов, чем в другом
Здраствуйте! Сижу изучаю одномерные массивы, но зашел в тупик на счет вычитания массивов... Для вас это конечно просто, но я чего-то не...

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

Как имея два рекордсета, упорядочить данные в одном, по порядку, в котором записи идут в другом?
То есть, если у меня первый рекордсет имеет записи построенные следующим образом: первый: 5 | a 2 | c 1 | b 3 | e 4 | d ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Камера 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, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru