Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 05.08.2019
Сообщений: 24
1

Как связать одинаковые значения из двух таблиц и вывести информацию только для залогиненого пользователя?

08.08.2019, 16:33. Показов 981. Ответов 1

Author24 — интернет-сервис помощи студентам
Всем здравствуйте. Помогите, пожалуйста, разобраться. CMS WordPress. Установлены плагины для платного доступа Ultimate Membership Pro и Ultimate Affiliate Pro. Они между собой связаны. Есть такой код:
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
    <?php
error_reporting(-1);
header('Content-Type: text/html; charset=utf-8');
//Скрипт для 100000
require_once 'connection.php'; // подключаем скрипт
// подключаемся к серверу
  $link = mysqli_connect($host, $user, $password, $database); // Соединяемся с базой
  // Ругаемся, если соединение установить не удалось
  if (!$link) {
    echo 'Не могу соединиться с БД. Код ошибки: ' . mysqli_connect_errno() . ', ошибка: ' . mysqli_connect_error();
    exit;
  }
    global $wpdb;
    $cur_user = wp_get_current_user()->user_login;
    $cur_id = get_current_user_id();
  $sql = mysqli_query($link, "SELECT create_date, uid, status , amount_value, lid FROM " . $wpdb->base_prefix . "ihc_orders WHERE status= 'Completed' AND uid IN (SELECT ID FROM " . $wpdb->base_prefix . "users)");
    //$sql = mysqli_query($link, "SELECT ID FROM " . $wpdb->base_prefix . "users WHERE ID IN (SELECT create_date, uid, status , amount_value, lid FROM " . $wpdb->base_prefix . "ihc_orders)");//status= 'Completed' AND //OR uid='".$cur_u_id."'
  while ($result = mysqli_fetch_array($sql)) {
            //$cur_id = get_current_user_id();
            $start=($result['create_date']);
            $user_uid=($result['uid']); 
            $stat=($result['status']);
            $reg_lid=($result['lid']);
            $amount=($result['amount_value']); 
      /* Время */
            $now = time(); // текущее время (метка времени)
            $datediff = date('d.m.Y') - date("d.m.Y", strtotime($result['create_date'])); // получаем разность дат
      
      
      if ( is_user_logged_in()&&(($cur_id = get_current_user_id())==($user_uid=($result['uid'])))&&($reg_lid['lid']=1)) {
    echo 'Вы авторизованы на сайте!<br>';
          //if($reg_lid['lid']=1){
        /* Начисляем процент для lid=1*/  
            $proc = 25;
            $proc_d =0.25*$datediff;
            $proc = $amount/100*$proc;
            $proc_d = $amount/100*$proc_d;
            $amountWithPct_all = $amount + $proc;
            $amountWithPct_d = $amount + $proc_d;
            round ($amountWithPct_all);
            round ($amountWithPct_d);     
      }
      elseif(is_user_logged_in()&&($reg_lid['lid']=2)){
//elseif($reg_lid['lid']=2){
      /* Начисляем процент для lid=2*/
            $proc = 60; //Процентов за всё время
            $proc_d =0.6*$datediff; //Процентов в день
            $proc = $amount/100*$proc; // высчитываем процент от числа
            $proc_d = $amount/200*$proc_d; // высчитываем процент в день от числа
            $amountWithPct_all = $amount + $proc; // суммируем число с процентами от этого числа
            $amountWithPct_d = $amount + $proc_d; // суммируем число с процентами в день от этого числа
            round ($amountWithPct_all); // округляем
            round ($amountWithPct_d); // округляем
}
      elseif (is_user_logged_in()&&($reg_lid['lid']=3)){
              /* Начисляем процент для lid=3*/
            $proc = 89; //Процентов за всё время
            $proc_d =0.89*$datediff; //Процентов в день
            $proc = $amount/100*$proc; // высчитываем процент от числа
            $proc_d = $amount/300*$proc_d; // высчитываем процент в день от числа
            $amountWithPct_all = $amount + $proc; // суммируем число с процентами от этого числа
            $amountWithPct_d = $amount + $proc_d; // суммируем число с процентами в день от этого числа
            round ($amountWithPct_all); // округляем
            round ($amountWithPct_d); // округляем
}
      else{
          echo "Данных ещё нет";
      }
      
      /*Выводим результат*/
        echo "ID пользователя: {$user_uid}<br>";
        echo "ID пользователя из get: {$cur_id}<br>";
        echo "Дата начала: {$start}<br>";
        echo "Прошло дней: {$datediff}<br>";
        echo "Внесено: {$amount} ₽<br>";
        echo "Заработано на данный момент: $proc_d ₽<br>";
        echo "Cумма на конец периода: $amountWithPct_all ₽<br><br>";
      
global $current_user;
get_currentuserinfo();
echo 'Логин: ' . $current_user->user_login . "\n<br>";
echo 'ID : ' . $cur_id . "\n<br>";
//echo 'LID :' .$glid . "\n<br>";
echo 'Внесено: ' . $amount  . "\n<br>";
echo "Прошло дней: {$datediff}<br>";
echo 'Заработано на данный момент: ' . $proc_d . "₽\n<br>";
echo 'Cумма на конец периода: ' . $amountWithPct_all . "₽\n<br>";
      
  } 
?>
Есть таблица wp_users в которой есть столбец ID. Есть таблица wp_ihc_orders со столбцом uid( значения которого соответствуют столбцу ID из таблицы wp_users). Также в таблице wp_ihc_orders есть столбцы create_date, lid и amount_value значения из которых должны получать пользователи с ID под которым они вошли в личный кабинет.
Сейчас выводится информация по всем пользователям, а надо только по пользователю который в данный момент в своём личном кабинете.
Как связать ID залогиненого пользователя с его uid?
Как узнать lid и в соответствии с этими значениями вывести ему информацию?
ID (uid?) может быть бесконечное множество, а lid до 15.
Что-то не могу разобраться. Я так думаю надо добавить какую-то проверку по ID пользователя и показывать только его данные из таблицы. Но я совершенно не понимаю как(
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.08.2019, 16:33
Ответы с готовыми решениями:

PHP+jQuery.ajax - только для залогиненого пользователя
Доброй ночи. Ситуация - есть WEB прилада, работает только если юзверь залогинился. Прикрутил...

Как вывести информацию из двух связанных по ID таблиц
Но если во второй таблице три поля, в котором присутствую ID из первой таблице!!!! Я сколько не...

Как вывести в DBGrid информацию из двух таблиц по выбранной строке в третьей
Здравствуйте. У меня такая ситуация: Есть таблица &quot;Данные&quot; - ключ, фио, ... По выбранной строке...

DataCombo, как связать данные с двух таблиц?
Скажите пожалуйста как связать данные. То есть в одном DataCombo1 я выбрал например МАРКИ, а во...

1
0 / 0 / 0
Регистрация: 05.08.2019
Сообщений: 24
09.08.2019, 23:02  [ТС] 2
Надо было в условии вывода задать сравнение ID и uid из разных таблиц. Код получился большим и грязным но, вдруг кому-то это поможет. Сам код:
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
<?php
error_reporting(-1);
header('Content-Type: text/html; charset=utf-8');
//Скрипт для 100000
require_once 'connection.php'; // подключаем скрипт
// подключаемся к серверу
  $link = mysqli_connect($host, $user, $password, $database); // Соединяемся с базой
  // Ругаемся, если соединение установить не удалось
  if (!$link) {
    echo 'Не могу соединиться с БД. Код ошибки: ' . mysqli_connect_errno() . ', ошибка: ' . mysqli_connect_error();
    exit;
  }
    global $wpdb;
    $cur_user = wp_get_current_user()->user_login;
    $cur_id = get_current_user_id();
  $sql = mysqli_query($link, "SELECT " . $wpdb->base_prefix . "ihc_orders.create_date, " . $wpdb->base_prefix . "ihc_orders.uid, " . $wpdb->base_prefix . "ihc_orders.status , " . $wpdb->base_prefix . "ihc_orders.amount_value, " . $wpdb->base_prefix . "ihc_orders.lid, " . $wpdb->base_prefix . "users.id FROM " . $wpdb->base_prefix . "ihc_orders, " . $wpdb->base_prefix . "users WHERE " . $wpdb->base_prefix . "ihc_orders.uid=" . $wpdb->base_prefix . "users.id AND status= 'Completed'");
  while ($result = mysqli_fetch_array($sql)) {
            $start=($result['create_date']);
            $user_uid=($result['uid']);
            $user_id=($result['id']);
      $usid=($user_uid===$user_id);
            $stat=($result['status']);
            $reg_lid=($result['lid']);
            $amount=($result['amount_value']); 
  /* Время */
            $now = time(); // текущее время (метка времени)
            $datediff = date('d.m.Y') - date("d.m.Y", strtotime($result['create_date'])); // получаем разность дат
          
      if ( is_user_logged_in()&&$user_uid==$cur_id&&($reg_lid['lid']=1)) {
    echo 'Вы авторизованы на сайте!<br>';
        /* Начисляем процент для lid=1*/  
            $proc = 25;
            $proc_d =0.25*$datediff;
            $proc = $amount/100*$proc;
            $proc_d = $amount/100*$proc_d;
            $amountWithPct_all = $amount + $proc;
            $amountWithPct_d = $amount + $proc_d;
            round ($amountWithPct_all);
            round ($amountWithPct_d);
          
          
          if ($user_uid==$cur_id) {
              /*Выводим результат*/
        echo "ID пользователя: {$user_uid}<br>";
        echo "ID пользователя из get: {$cur_id}<br>";
        echo "Дата начала: {$start}<br>";
        echo "Прошло дней: {$datediff}<br>";
        echo "Внесено: {$amount} ₽<br>";
        echo "Заработано на данный момент: $proc_d ₽<br>";
        echo "Cумма на конец периода: $amountWithPct_all ₽<br><br>";
} else {
    echo 'Нет данных';
}
 
      }
      elseif(is_user_logged_in()&&$user_uid==$cur_id&&($reg_lid['lid']=2)){
      /* Начисляем процент для lid=2*/
            $proc = 60; //Процентов за всё время
            $proc_d =0.6*$datediff; //Процентов в день
            $proc = $amount/100*$proc; // высчитываем процент от числа
            $proc_d = $amount/200*$proc_d; // высчитываем процент в день от числа
            $amountWithPct_all = $amount + $proc; // суммируем число с процентами от этого числа
            $amountWithPct_d = $amount + $proc_d; // суммируем число с процентами в день от этого числа
            round ($amountWithPct_all); // округляем
            round ($amountWithPct_d); // округляем
          
                  if ($user_uid==$cur_id) {
        /*Выводим результат*/  
        echo "ID пользователя: {$user_uid}<br>";
        echo "ID пользователя из get: {$cur_id}<br>";
        echo "Дата начала: {$start}<br>";
        echo "Прошло дней: {$datediff}<br>";
        echo "Внесено: {$amount} ₽<br>";
        echo "Заработано на данный момент: $proc_d ₽<br>";
        echo "Cумма на конец периода: $amountWithPct_all ₽<br><br>";
} else {
    echo 'Нет данных';
}         
}
      elseif (is_user_logged_in()&&$user_uid==$cur_id&&($reg_lid['lid']=3)){
              /* Начисляем процент для lid=3*/
            $proc = 89; //Процентов за всё время
            $proc_d =0.89*$datediff; //Процентов в день
            $proc = $amount/100*$proc; // высчитываем процент от числа
            $proc_d = $amount/300*$proc_d; // высчитываем процент в день от числа
            $amountWithPct_all = $amount + $proc; // суммируем число с процентами от этого числа
            $amountWithPct_d = $amount + $proc_d; // суммируем число с процентами в день от этого числа
            round ($amountWithPct_all); // округляем
            round ($amountWithPct_d); // округляем
          
                          if ($user_uid==$cur_id) {
         /*Выводим результат*/ 
        echo "ID пользователя: {$user_uid}<br>";
        echo "ID пользователя из get: {$cur_id}<br>";
        echo "Дата начала: {$start}<br>";
        echo "Прошло дней: {$datediff}<br>";
        echo "Внесено: {$amount} ₽<br>";
        echo "Заработано на данный момент: $proc_d ₽<br>";
        echo "Cумма на конец периода: $amountWithPct_all ₽<br><br>";
} else {
    echo 'Нет данных';
}
 
}
      else{
      }   
  } 
?>
0
09.08.2019, 23:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.08.2019, 23:02
Помогаю со студенческими работами здесь

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

Как связать данные из двух таблиц и поместить их в третью? Желательно в Access SQL запросом
Имеется 3 таблицы: --Список студентов колледжа (ИД, ФИО, Дата рождения, Группа, Номер зачётки), ...

Как отобразить в одном DataGrid информацию с двух сущностей (таблиц) в БД
Как отобразить в одном Датагриде информацию с двух сущностей(таблиц) в БД? ДатаГрид для биндинги...

Как вывести информацию конкретного пользователя?
Здравствуйте дорогие форумчане! У меня проблема с выводом информации каждого пользователя. В...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru