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

Newageman

Создатель
Регистрация
3 Янв 2012
Сообщения
45
Реакции
5
Всем здравствуйте. Помогите, пожалуйста, разобраться. Сайт на wordpress. Установлены плагины для платного доступа и млм Ultimate Membership Pro и Ultimate Affiliate Pro. Они между собой связаны. Есть такой код (хоть и написан мной и через одно место)
Код:
    <?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()->ID;
  $sql = mysqli_query($link, "SELECT create_date, uid, status , amount_value, lid FROM " . $wpdb->base_prefix . "ihc_orders WHERE uid='".$cur_id."'"); //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()&&($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 пользователя и показывать только его данные из таблицы. Но я совершенно не понимаю как( Я понимаю, что это должно быть не сложно, но я же тупой)
 
Как связать ID залогиненого пользователя с его uid? Как узнать lid и в соответствии с этими значениями вывести ему информацию?


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

PHP:
<?php
error_reporting(-1);
header('Content-Type: text/html; charset=utf-8');
require_once 'wp-load.php'; // подключаем движок вп, скрипт должен лежать в корне
global $wpdb;

$user_id = '';
if ( is_user_logged_in() ) {
  $user_id = get_current_user_id();
  echo 'Вы авторизованы на сайте!<br>';
} else {
  echo 'Вы не авторизованы';
  die();
}

$current_user = get_userdata($user_id);

$now = time(); // текущее время (метка времени)

$ihc_orders_result = $wpdb->get_results("SELECT create_date, uid, status , amount_value, lid FROM " . $wpdb->prefix . "ihc_orders WHERE uid='".$user_id."'",ARRAY_A );

if(!empty($ihc_orders_result)){
  foreach ($ihc_orders_result as $result) {
    $start=($result['create_date']);
    $user_uid=($result['uid']);  
    $stat=($result['status']);
    $reg_lid=($result['lid']);
    $amount=($result['amount_value']);
    $datediff = date('d.m.Y') - date("d.m.Y", strtotime($result['create_date'])); // получаем разность дат

    if ( $reg_lid['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;
      $amountWithPct_all = round ($amountWithPct_all);
      $amountWithPct_d = round ($amountWithPct_d);    
    }


    if ( $reg_lid['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; // суммируем число с процентами в день от этого числа
      $amountWithPct_all=round ($amountWithPct_all); // округляем
      $amountWithPct_d=round($amountWithPct_d); // округляем
    }

    if ( $reg_lid['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; // суммируем число с процентами в день от этого числа
      $amountWithPct_all=round ($amountWithPct_all); // округляем
      $amountWithPct_d=round($amountWithPct_d); // округляем
    }



    /*Выводим результат*/
    echo "ID пользователя: {$user_uid}<br>";
    echo "ID пользователя из get: {$user_id}<br>";
    echo "Дата начала: {$start}<br>";
    echo "Прошло дней: {$datediff}<br>";
    echo "Внесено: {$amount} ₽<br>";
    echo "Заработано на данный момент: $proc_d ₽<br>";
    echo "Cумма на конец периода: $amountWithPct_all ₽<br><br>";


    echo 'Логин: ' . $current_user->user_login . "\n<br>";
    echo 'ID : ' . $user_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>";

  }
} else{
  echo "Данных ещё нет";
}

?>

P.S. на работоспособность не проверял, советую включить режим отладки в конфиге вп директивой define( 'WP_DEBUG', true );
 
что там в таблицах это нужно конеретно смотреть и сравнивать, а вообще вот немного подправил код, его нужно бросать в корень с установленным вп. Возможно, это поможет дальше разобраться с решением задачи.

P.S. на работоспособность не проверял, советую включить режим отладки в конфиге вп директивой define( 'WP_DEBUG', true );
Спасибо, большое за то что откликнулись. Я пока такой код набросал.
Код:
<?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{
      }    
  }
?>
Он работает. Но мне кажется он очень грязный. Надо как-то его сократить.
 
Последнее редактирование:
вот так будет покрасивее:

PHP:
<?php
error_reporting(-1);
header('Content-Type: text/html; charset=utf-8');
require_once 'wp-load.php'; // подключаем движок вп, скрипт должен лежать в корне
global $wpdb;

$user_id = '';
if ( is_user_logged_in() ) {
  $user_id = get_current_user_id();
  echo 'Вы авторизованы на сайте!<br>';
} else {
  echo 'Вы не авторизованы';
  die();
}

$current_user = get_userdata($user_id);

$ihc_orders_result = $wpdb->get_results("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 " . $wpdb->base_prefix . "ihc_orders.status= 'Completed' AND " . $wpdb->base_prefix . "ihc_orders.uid='".$user_id."'",ARRAY_A );

if(!empty($ihc_orders_result)){
  foreach ($ihc_orders_result as $result) {
    $start=$result['create_date'];
    $user_uid=$result['uid']; 
    $stat=$result['status'];
    $reg_lid=$result['lid'];
    $amount=$result['amount_value'];
    $datediff = date('d.m.Y') - date("d.m.Y", strtotime($result['create_date'])); // получаем разность дат

    if ( $reg_lid['lid']==1) {
      $proc = 25;
      $proc_d =0.25*$datediff;
      $proc = $amount/100*$proc;
      $proc_d = $amount/100*$proc_d;
    }


    if ( $reg_lid['lid']==2) {
      $proc = 60; //Процентов за всё время
      $proc_d =0.6*$datediff; //Процентов в день
      $proc = $amount/100*$proc; // высчитываем процент от числа
      $proc_d = $amount/200*$proc_d; // высчитываем процент в день от числа
    }

    if ( $reg_lid['lid']==3) {
      $proc = 89; //Процентов за всё время
      $proc_d =0.89*$datediff; //Процентов в день
      $proc = $amount/100*$proc; // высчитываем процент от числа
      $proc_d = $amount/300*$proc_d; // высчитываем процент в день от числа
    }

    if(!empty($amount) AND !empty($proc) AND !empty($proc_d)){
      $amountWithPct_all = $amount + $proc; // суммируем число с процентами от этого числа
      $amountWithPct_d = $amount + $proc_d; // суммируем число с процентами в день от этого числа
      $amountWithPct_all=round ($amountWithPct_all); // округляем
      $amountWithPct_d=round($amountWithPct_d); // округляем

      /*Выводим результат*/
      echo 'Логин: ' . $current_user->user_login . "\n<br>";
      echo "ID пользователя: {$user_id}<br>";
      echo "ID пользователя из get: {$user_id}<br>";
      echo "Дата начала: {$start}<br>";
      echo "Прошло дней: {$datediff}<br>";
      echo "Внесено: {$amount} ₽<br>";
      echo "Заработано на данный момент: $proc_d ₽<br>";
      echo "Cумма на конец периода: $amountWithPct_all ₽<br><br>";
    }

  }
} else{
  echo "Данных ещё нет";
}

?>
 
Последнее редактирование:
вот так будет покрасивее:

PHP:
<?php
error_reporting(-1);
header('Content-Type: text/html; charset=utf-8');
require_once 'wp-load.php'; // подключаем движок вп, скрипт должен лежать в корне
global $wpdb;

$user_id = '';
if ( is_user_logged_in() ) {
  $user_id = get_current_user_id();
  echo 'Вы авторизованы на сайте!<br>';
} else {
  echo 'Вы не авторизованы';
  die();
}

$current_user = get_userdata($user_id);

$ihc_orders_result = $wpdb->get_results("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 " . $wpdb->base_prefix . "ihc_orders.status= 'Completed' AND " . $wpdb->base_prefix . "ihc_orders.uid='".$user_id."'",ARRAY_A );

if(!empty($ihc_orders_result)){
  foreach ($ihc_orders_result as $result) {
    $start=$result['create_date'];
    $user_uid=$result['uid'];
    $stat=$result['status'];
    $reg_lid=$result['lid'];
    $amount=$result['amount_value'];
    $datediff = date('d.m.Y') - date("d.m.Y", strtotime($result['create_date'])); // получаем разность дат

    if ( $reg_lid['lid']==1) {
      $proc = 25;
      $proc_d =0.25*$datediff;
      $proc = $amount/100*$proc;
      $proc_d = $amount/100*$proc_d;
    }


    if ( $reg_lid['lid']==2) {
      $proc = 60; //Процентов за всё время
      $proc_d =0.6*$datediff; //Процентов в день
      $proc = $amount/100*$proc; // высчитываем процент от числа
      $proc_d = $amount/200*$proc_d; // высчитываем процент в день от числа
    }

    if ( $reg_lid['lid']==3) {
      $proc = 89; //Процентов за всё время
      $proc_d =0.89*$datediff; //Процентов в день
      $proc = $amount/100*$proc; // высчитываем процент от числа
      $proc_d = $amount/300*$proc_d; // высчитываем процент в день от числа
    }

    if(!empty($amount) AND !empty($proc) AND !empty($proc_d)){
      $amountWithPct_all = $amount + $proc; // суммируем число с процентами от этого числа
      $amountWithPct_d = $amount + $proc_d; // суммируем число с процентами в день от этого числа
      $amountWithPct_all=round ($amountWithPct_all); // округляем
      $amountWithPct_d=round($amountWithPct_d); // округляем
    }

    /*Выводим результат*/
    echo 'Логин: ' . $current_user->user_login . "\n<br>";
    echo "ID пользователя: {$user_id}<br>";
    echo "ID пользователя из get: {$user_id}<br>";
    echo "Дата начала: {$start}<br>";
    echo "Прошло дней: {$datediff}<br>";
    echo "Внесено: {$amount} ₽<br>";
    echo "Заработано на данный момент: $proc_d ₽<br>";
    echo "Cумма на конец периода: $amountWithPct_all ₽<br><br>";

  }
} else{
  echo "Данных ещё нет";
}

?>

Спасибо, большое. Так действительно значительно лучше и чище.
А Вы не могли бы подсказать как быть с таким вопросом? Для просмотра ссылки Войди или Зарегистрируйся
 
пожалуйста, обратите внимание, я там немного подправил все. Обновите страничку и смотрите еще раз)
 
Назад
Сверху