За последние 24 часа нас посетили 21960 программистов и 1011 роботов. Сейчас ищут 697 программистов ...

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

Тема в разделе "Wordpress", создана пользователем Ирина Гущина, 8 авг 2019.

Метки:
  1. Ирина Гущина

    Ирина Гущина Новичок

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

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
  3. Ирина Гущина

    Ирина Гущина Новичок

    С нами с:
    8 авг 2019
    Сообщения:
    19
    Симпатии:
    0
    Сколько хотите за разбирательства?
     
  4. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    "SELECTcreate_date, uid, status ,amount_value, lid FROM " . $wpdb->base_prefix . "ihc_orders WHERE status = 'Completed' AND uid = $cur_id"
     
    Ирина Гущина нравится это.
  5. Ирина Гущина

    Ирина Гущина Новичок

    С нами с:
    8 авг 2019
    Сообщения:
    19
    Симпатии:
    0
    Всем спасибо. В общем я разобралась. Код вышел таким:
    Код (Text):
    1. <?php
    2. require_once 'connection.php';
    3.   $link = mysqli_connect($host, $user, $password, $database);
    4.   if (!$link) {
    5.     echo 'Не могу соединиться с БД. Код ошибки: ' . mysqli_connect_errno() . ', ошибка: ' . mysqli_connect_error();
    6.     exit;
    7.   }
    8.     global $wpdb;
    9.     $cur_user = wp_get_current_user()->user_login;
    10.     $cur_id = get_current_user_id();
    11.   $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'");
    12.    
    13.   while ($result = mysqli_fetch_array($sql)) {
    14.               $start=($result['create_date']);
    15.               $user_uid=($result['uid']);
    16.               $user_id=($result['id']);
    17.               $stat=($result['status']);
    18.               $reg_lid=($result['lid']);
    19.               $amount=($result['amount_value']);
    20.               $now = time();
    21.               $datediff = date('d.m.Y') - date("d.m.Y", strtotime($result['create_date']));    
    22.              
    23.       if ($user_uid==$cur_id&&($reg_lid['lid']==1)) {
    24.         /* Начисляем процент для lid=1*/
    25.             $proc = 25;  //Процентов за всё время
    26.             $proc_d =0.25*$datediff;  //Процентов в день
    27.             $proc = $amount/100*$proc;  // высчитываем процент от числа
    28.             $proc_d = $amount/100*$proc_d;  // высчитываем процент в день от числа
    29.             $amountWithPct_all = $amount + $proc;  // суммируем число с процентами от этого числа
    30.             $amountWithPct_d = $amount + $proc_d;  // суммируем число с процентами в день от этого числа
    31.             round ($amountWithPct_all);  // округляем
    32.             round ($amountWithPct_d);    // округляем    
    33.        
    34.         echo "Дата оплаты: {$start}<br>";
    35.           echo "Прошло дней: {$datediff}<br>";
    36.           echo "Внесено: {$amount} ₽<br>";
    37.         echo "Заработано на данный момент: $proc_d ₽<br>";
    38.         echo "Cумма на конец периода: $amountWithPct_all ₽<br><br>";
    39.       }
    40.      
    41.       elseif($user_uid==$cur_id&&($reg_lid['lid']==2)){
    42.       /* Начисляем процент для lid=2*/
    43.             $proc = 60; //Процентов за всё время
    44.             $proc_d =0.6*$datediff; //Процентов в день
    45.             $proc = $amount/100*$proc; // высчитываем процент от числа
    46.             $proc_d = $amount/200*$proc_d; // высчитываем процент в день от числа
    47.             $amountWithPct_all = $amount + $proc; // суммируем число с процентами от этого числа
    48.             $amountWithPct_d = $amount + $proc_d; // суммируем число с процентами в день от этого числа
    49.             round ($amountWithPct_all); // округляем
    50.             round ($amountWithPct_d); // округляем
    51.          
    52.         echo "Дата оплаты: {$start}<br>";
    53.           echo "Прошло дней: {$datediff}<br>";
    54.           echo "Внесено: {$amount} ₽<br>";
    55.         echo "Заработано на данный момент: $proc_d ₽<br>";
    56.         echo "Cумма на конец периода: $amountWithPct_all ₽<br><br>";    
    57. }
    58.       elseif ($user_uid==$cur_id&&($reg_lid['lid']==3)){
    59.                 /* Начисляем процент для lid=3*/
    60.             $proc = 89; //Процентов за всё время
    61.             $proc_d =0.89*$datediff; //Процентов в день
    62.             $proc = $amount/100*$proc; // высчитываем процент от числа
    63.             $proc_d = $amount/300*$proc_d; // высчитываем процент в день от числа
    64.             $amountWithPct_all = $amount + $proc; // суммируем число с процентами от этого числа
    65.             $amountWithPct_d = $amount + $proc_d; // суммируем число с процентами в день от этого числа
    66.             round ($amountWithPct_all); // округляем
    67.             round ($amountWithPct_d); // округляем
    68.          
    69.         echo "Дата оплаты: {$start}<br>";
    70.           echo "Прошло дней: {$datediff}<br>";
    71.           echo "Внесено: {$amount} ₽<br>";
    72.         echo "Заработано на данный момент: $proc_d ₽<br>";
    73.         echo "Cумма на конец периода: $amountWithPct_all ₽<br><br>";
    74. }
    75.       else{
    76.         }    
    77.   }
    78. ?>
    Грязновато, но работает.
     
  6. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    @Ирина Гущина
    так не заработает?
    PHP:
    1. $sql = mysqli_query($link, "SELECT ihc_orders.create_date, ihc_orders.uid, ihc_orders.status , ihc_orders.amount_value, ihc_orders.lid, users.id FROM " . $wpdb->base_prefix . "ihc_orders, " . $wpdb->base_prefix . "users WHERE ihc_orders.uid=" . $wpdb->base_prefix . "users.id AND status= 'Completed'");
     
  7. Ирина Гущина

    Ирина Гущина Новичок

    С нами с:
    8 авг 2019
    Сообщения:
    19
    Симпатии:
    0
    Спасибо, но так не работает.