PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
rasl89
Отправлено: 08 Июня, 2020 - 20:16:57
Post Id



Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Март 2020  
Откуда: Россия, Уфа


Помог: 1 раз(а)




Помогите сформировать поиск по бд.

В PHP определяется ник пользователя и заносится в переменную: $autor_posts.

Есть некая БД, в ней есть таблица bs_usermeta, с столбцами: umeta_id, user_id, meta_key, meta_value.

1. В столбце meta_value ищем ник $autor_posts
2. когда находим ник, определяем в этой строке ID из столбца user_id
3. далее ищем по всем строкам совпадение по трем столбцам: user_id, meta_key, meta_value
user_id - должно быть искомое в п.2 ID
meta_key - строка mjob_delivery_order
meta_value - там искомое число - все ради этого числа
заносим число в переменную и выводим где нужно echo...
Приложил скин таблицы.

Если кратко: есть ник, по нему определяям ID, и ищем совпадение в одной строке трех столбов: ID(определенное по нику)+meta_key(mjob_delivery_o rder) +meta_value (нужное число).
Прикреплено изображение (Нажмите для увеличения)
Таблица скрин.PNG

(Отредактировано автором: 08 Июня, 2020 - 20:26:22)

 
 Top
Albert
Отправлено: 09 Июня, 2020 - 01:39:35
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Июнь 2020  
Откуда: Украина


Помог: 0 раз(а)




Если у вас user_id - это ID пользователя, а meta_key - это его ник, то почему в таблице дублируются user_id? Причем с разными meta_key...
 
 Top
rasl89
Отправлено: 09 Июня, 2020 - 09:46:16
Post Id



Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Март 2020  
Откуда: Россия, Уфа


Помог: 1 раз(а)




Albert пишет:
Если у вас user_id - это ID пользователя, а meta_key - это его ник, то почему в таблице дублируются user_id? Причем с разными meta_key...

Спасибо за ответ.

Эта таблица стандартная на WordPress.
Туда забиты все данные по пользователям по порядку. Сначала все поля для ID 1, потом ниже...
Для этого я и хочу организовать поиск.
Есть ник, по нему определяям ID, и ищем совпадение в одной строке трех столбов: ID(определенное по нику)+meta_key(mjob_delivery_o rder) +meta_value (нужное число).

(Отредактировано автором: 09 Июня, 2020 - 09:46:38)

 
 Top
Albert
Отправлено: 09 Июня, 2020 - 16:01:42
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Июнь 2020  
Откуда: Украина


Помог: 0 раз(а)




Если это wp. то получить объект пользователя по логину, нику или почте можно с помощью функции get_user_by().
PHP:
скопировать код в буфер обмена
  1. // получаем объект пользователя по нику
  2. $user = get_user_by('slug', $autor_posts);
  3. // получаем значение поля mjob_delivery_order
  4. $mjob_delivery_order = $user->get('mjob_delivery_order');
 
 Top
rasl89
Отправлено: 09 Июня, 2020 - 20:13:27
Post Id



Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Март 2020  
Откуда: Россия, Уфа


Помог: 1 раз(а)




Albert пишет:
Если это wp. то получить объект пользователя по логину, нику или почте можно с помощью функции get_user_by().
PHP:
скопировать код в буфер обмена
  1. // получаем объект пользователя по нику
  2. $user = get_user_by('slug', $autor_posts);
  3. // получаем значение поля mjob_delivery_order
  4. $mjob_delivery_order = $user->get('mjob_delivery_order');


отлично, очень просто и работает!
только у меня возникла следующая проблема
то, что мы сделали я вывожу в публичном профиле количество продаж, когда заходишь в профиль к какому-то пользователю; теперь когда заходишь к себе в профиль там ошибки:
Fatal error: Uncaught Error: Call to a member function get() on bool in
Error: Call to a member function get() on bool in
(Добавление)
Разобрался! Не туда поставил вывод!
Все работает четко! спасибо большое!

Еще вопрос, тогда при помощи такой же схемы
я сделаю пополнение баланса...
то есть:
платеж проходит...возвращается успех- далее отрабатывает:
PHP:
скопировать код в буфер обмена
  1. $user = get_user_by('slug', $autor_posts);
  2. $ae_user_wallet = $user->get('ae_user_wallet');


только вот проблема вот в чем:
значение ae_user_walle имеет такой вид:
O:16:"AE_VirtualWallet":2:{s:8:"currency";O:11:"AE_Currency":4:{s:4:"code";s:3:"usd";s:6:"signal";s:1:"$";s:9:"isDefault";b:1;s:12:"rateExchange";i:1;}s:7:"balance";d:300.15;}

как прибавить некое число из переменной к "balance";d:300.15;?
таким образом пополнится баланс
 
 Top
Albert
Отправлено: 09 Июня, 2020 - 22:16:01
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Июнь 2020  
Откуда: Украина


Помог: 0 раз(а)




Для редактирования данных о пользователе есть функция wp_update_user()
 
 Top
rasl89
Отправлено: 09 Июня, 2020 - 22:26:01
Post Id



Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Март 2020  
Откуда: Россия, Уфа


Помог: 1 раз(а)




Albert пишет:
Для редактирования данных о пользователе есть функция wp_update_user()


очень крутые штуки! не знал что есть такое на WP.
только непонятно как как прибавить некое число из переменной к "balance";d:300.15;?
 
 Top
rasl89
Отправлено: 11 Июня, 2020 - 22:41:00
Post Id



Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Март 2020  
Откуда: Россия, Уфа


Помог: 1 раз(а)




Albert пишет:
Для редактирования данных о пользователе есть функция wp_update_user()


получается так:
PHP:
скопировать код в буфер обмена
  1. $balance_user="d:300.00";
  2. $a=explode(':',$balance_user);
  3. $balance_user=$a[0].':'.($a[1]+$m_amount);


$balance_user="d:300.00" - как сюда передать цифру из ячейки? ведь у всех пользователей разные балансы
 
 Top
LIME
Отправлено: 12 Июня, 2020 - 01:42:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 10630
Дата рег-ции: Нояб. 2010  


Помог: 320 раз(а)




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


-----
DDD
 
 Top
rasl89
Отправлено: 12 Июня, 2020 - 09:44:18
Post Id



Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Март 2020  
Откуда: Россия, Уфа


Помог: 1 раз(а)




LIME пишет:
получается что разные
(Добавление)
получается что я дофига сильно ошибобаюсь
(Добавление)
я много раз работал даже на вп
смешно смотреть на вас на мелких
(Добавление)
каждого люблю...мелкий сергей привет тебе
(Добавление)
это форум портала ...
интересно)) ктото тут есть еще такой кто сумеет со мной...слабаки
никто не сумеет


Lime, а что по моему вопросу?
 
 Top
Vladimir Kheifets
Отправлено: 14 Июня, 2020 - 14:02:03
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 532
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 26 раз(а)




rasl89 пишет:
Еще вопрос, тогда при помощи такой же схемы
я сделаю пополнение баланса...
значение ae_user_walle имеет такой вид:
O:16:"AE_VirtualWallet":2:{s:8:"currency";O:11:"AE_Currency":4:{s:4:"code";s:3:"usd";s:6:"signal";s:1:"$";s:9:"isDefault";b:1;s:12:"rateExchange";i:1;}s:7:"balance";d:300.15;}
как прибавить некое число из переменной к "balance";d:300.15;?
таким образом пополнится баланс

Добрый день!
Если принимать структуру данных, как неизбежную реальность,
то можно сделать так:
Спойлер (Отобразить)
Удачи!
 
 Top
rasl89
Отправлено: 14 Июня, 2020 - 21:16:22
Post Id



Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Март 2020  
Откуда: Россия, Уфа


Помог: 1 раз(а)




Vladimir Kheifets пишет:

?>[/PHP][/spoiler]Удачи!


Владимир, спасибо! Как всегда выручаете!

(Отредактировано автором: 14 Июня, 2020 - 21:29:03)

 
 Top
Строитель
Отправлено: 14 Июня, 2020 - 23:28:06
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 70 раз(а)




rasl89 пишет:
только непонятно как как прибавить некое число из переменной к "balance";d:300.15;?
По структуре строки не трудно догадаться, что из БД вы получаете сериализованный объект. Для работы с подобными строками есть штатная функция unserialize(). Всё, что вам надо сделать - преобразовать строку в объект:
Спойлер (Отобразить)
После сериализации объекта модифицированную строку можно снова записать в БД.

Нужно обратить внимание на использование объектов класса AE_VirtualWallet и AE_Currency, они должны быть описаны (объявлены) в вашей программе. Если по каким-то причинам эти классы не были подгружены, то можно описать их перед началом десериализации:
Спойлер (Отобразить)

(Добавление)

Vladimir Kheifets, ох ё-маё!

Радость


-----
~ PHP-7 & REGEXP - This is a really powerful kit ~
****************************************
 
 Top
rasl89
Отправлено: 15 Июня, 2020 - 07:31:47
Post Id



Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Март 2020  
Откуда: Россия, Уфа


Помог: 1 раз(а)




Строитель пишет:

По структуре строки не трудно догадаться, что из БД вы получаете сериализованный объект. Для работы с подобными строками есть штатная функция unserialize(). Всё, что вам надо сделать - преобразовать строку в объект:

После сериализации объекта модифицированную строку можно снова записать в БД.

Нужно обратить внимание на использование объектов класса AE_VirtualWallet и AE_Currency, они должны быть описаны (объявлены) в вашей программе. Если по каким-то причинам эти классы не были подгружены, то можно описать их перед началом десериализации:



Вот это да, век - живи, век- учись!
Спасибо большое!
 
 Top
rasl89
Отправлено: 15 Июня, 2020 - 13:26:49
Post Id



Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Март 2020  
Откуда: Россия, Уфа


Помог: 1 раз(а)




Строитель пишет:
rasl89 пишет:
только непонятно как как прибавить некое число из переменной к "balance";d:300.15;?
По структуре строки не трудно догадаться, что из БД вы получаете сериализованный объект. Для работы с подобными строками есть штатная функция unserialize(). Всё, что вам надо сделать - преобразовать строку в объект:
Спойлер (Отобразить)
После сериализации объекта модифицированную строку можно снова записать в БД.

Нужно обратить внимание на использование объектов класса AE_VirtualWallet и AE_Currency, они должны быть описаны (объявлены) в вашей программе. Если по каким-то причинам эти классы не были подгружены, то можно описать их перед началом десериализации:
Спойлер (Отобразить)

(Добавление)

Vladimir Kheifets, ох ё-маё!

Радость


Вопрос, как сюда передать значение переменной пополнения баланса?
единственный вопрос как сюда переменную передать:
$object->balance += 100;
$object->balance += $m_amount; ?
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB