Как Выводить Информацию Из Бд В Области Корзины (На Главную)?

Здравствуйте! Пожалуйста объясните мне как сделать вывод информации из Базы Данных сайта на главную страницу, имеется таблица пользователя user_score его из него нужно достать информацию определенного пользователя и показать в его "профиле" (не обще доступно, а только самому пользователю после входа в свой аккаунт), таблица user_score показывает баллы пользователя, который администратор ему сам присваивает.

Цель вывод и показ бала пользователя в его профиле (напротив корзины).

Если не ошибаюсь нужно в этом файле (cart_content.tpl) положить данную функцию (его показ):

{else}
{__("my_cart")}
0 {__("items")}
 - {include 
file="common/price.tpl"
value=$smarty.session.cart.display_subtotal} ------- {user_score}  ------ Бал пользователя
{/if}

Здравствуйте! Пожалуйста объясните мне как сделать вывод информации из Базы Данных сайта на главную страницу, имеется таблица пользователя user_score его из него нужно достать информацию определенного пользователя и показать в его "профиле" (не обще доступно, а только самому пользователю после входа в свой аккаунт), таблица user_score показывает баллы пользователя, который администратор ему сам присваивает.

Цель вывод и показ бала пользователя в его профиле (напротив корзины).

Если не ошибаюсь нужно в этом файле (cart_content.tpl) положить данную функцию (его показ):

{else}
{__("my_cart")}
0 {__("items")}
 - {include 
file="common/price.tpl"
value=$smarty.session.cart.display_subtotal} ------- {user_score}  ------ Бал пользователя
{/if}

Здравствуйте! Вам нужно что-то вроде

{if $smarty.session.auth.user_id}
    {* Достаем балл для конкретного пользователя *}
    {* fn_get_user_score - функция, которая достанет данные из базы *}
    {assign var="user_score" value=$smarty.session.auth.user_id|fn_get_user_score}
{* Отображаем балл *}
{$user_score}

{/if}

Данную функцию (код) нужно поставить внутри самого файла cart_content.tpl? Если да то значит оно должно отобразить данные (баллы), при наличии баллов в таблице пользователя (user_score) с опр.ид (id)?

Если можно то более подробно:

{if $smarty.session.auth.user_id}
    {* Достаем балл для конкретного пользователя *}
    {* fn_get_user_score - функция, которая достанет данные из базы *}
    {assign var="user_score" value=$smarty.session.auth.user_id|fn_get_user_score}
{* Отображаем балл *}
{$user_score}

{/if}

assign var="user_score" - Это место значения которое обращается в саму таблицу, если она имеется?

fn_get_user_score - Функция которая достанет значение из базы

Если таблицу переименовать с user_score на user_sc, то необходимо изменить значение внутри assign var="user_score" на assign var="user_sc" или саму функцию нужно изменить с fn_get_user_score fn_get_user_sc?

Спасибо.

Возможно я сделал что-то не так:

Smarty Compiler: Syntax error in template "responsive\templates\blocks\cart_content.tpl" on line 34 "{assign var="user_score" value=$smarty.session.auth.user_id|fn_get_user_score}" unknown modifier "fn_get_user_score" -->

Возможно я сделал что-то не так:

Smarty Compiler: Syntax error in template "responsive\templates\blocks\cart_content.tpl" on line 34 "{assign var="user_score" value=$smarty.session.auth.user_id|fn_get_user_score}" unknown modifier "fn_get_user_score" -->

У Вас нет такой функции в системе. Её нужно написать. Для этого она мной и указана была.

Данную функцию (код) нужно поставить внутри самого файла cart_content.tpl? Если да то значит оно должно отобразить данные (баллы), при наличии баллов в таблице пользователя (user_score) с опр.ид (id)?

Если можно то более подробно:

{if $smarty.session.auth.user_id}
    {* Достаем балл для конкретного пользователя *}
    {* fn_get_user_score - функция, которая достанет данные из базы *}
    {assign var="user_score" value=$smarty.session.auth.user_id|fn_get_user_score}
{* Отображаем балл *}
{$user_score}

{/if}

assign var="user_score" - Это место значения которое обращается в саму таблицу, если она имеется?

fn_get_user_score - Функция которая достанет значение из базы

Если таблицу переименовать с user_score на user_sc, то необходимо изменить значение внутри assign var="user_score" на assign var="user_sc" или саму функцию нужно изменить с fn_get_user_score fn_get_user_sc?

Спасибо.

{assign var="user_score"} - так называется переменная, которую Вы потом сможете использовать в любом месте шаблона.
fn_get_user_score - Ваша функция, которая достанет из базы необходимые Вам данные.

Функцию напишите в модуле my_changes, в файле app/addons/my_changes/func.php. В функции напишите что-то вроде

function fn_get_user_score ($user_id) {
$user_score = db_get_field(“SELECT * FROM ?:user_scores WHERE user_id = ?i”, $user_id);
return $user_score;
}

Как вариант

{if $auth.user_id}
    {"SELECT user_score FROM user_score WHERE user_id = ?i"|db_get_field:$auth.user_id}
{/if}
{assign var="user_score"} - так называется переменная, которую Вы потом сможете использовать в любом месте шаблона.
fn_get_user_score - Ваша функция, которая достанет из базы необходимые Вам данные.

Функцию напишите в модуле my_changes, в файле app/addons/my_changes/func.php. В функции напишите что-то вроде

function fn_get_user_score ($user_id) {
$user_score = db_get_field(“SELECT * FROM ?:user_scores WHERE user_id = ?i”, $user_id);
return $user_score;
}

Огромное спасибо, успехов в Вашей работе!


Как вариант

{if $auth.user_id}
    {"SELECT user_score FROM user_score WHERE user_id = ?i"|db_get_field:$auth.user_id}
{/if}

Спасибо за дополнительную консультацию!

Также хотел бы узнать у Вас, где находиться файл который отвечает за оформление заказа (тот файл который его открывает с определенным статусом, например "Открыто"), если не ошибаюсь это файл fn.cart.php и это следующий код в нем, отвечающий за открытие (оформление) заказа и присвоение для него статуса "Открыто":

if ($action != 'save') {
list($is_processor_script, ) = fn_check_processor_script($cart['payment_id'], true);
}
if (!$is_processor_script && $order_status == STATUS_INCOMPLETED_ORDER) {
$order_status = 'O'; // <- Присвоение статуса для заказа пользователя?
}
$short_order_data = fn_get_order_short_info($order_id);
// Set new order status
fn_change_order_status($order_id, $order_status, $short_order_data['status'], (($is_processor_script || $order_status == STATUS_PARENT_ORDER) ? fn_get_notification_rules(array(), true) : fn_get_notification_rules(array())), true);
$cart['processed_order_id'] = array();
$cart['processed_order_id'][] = $order_id;
if (!$parent_order_id && count($cart['product_groups']) > 1) {
$child_orders = fn_place_suborders($order_id, $cart, $auth, $action, $issuer_id);
array_unshift($child_orders, $order_id);
$cart['processed_order_id'] = $child_orders;
}

Если не тот файл или не та строка кода отвечающий за открытие заказа и присвоение для него статуса "Открыто" (который отображается в админ-панеле), пожалуйста укажите мне направление на данный код и файл. Спасибо.

Также хотел бы узнать у Вас, где находиться файл который отвечает за оформление заказа (тот файл который его открывает с определенным статусом, например "Открыто"), если не ошибаюсь это файл fn.cart.php и это следующий код в нем, отвечающий за открытие (оформление) заказа и присвоение для него статуса "Открыто":

if ($action != 'save') {
list($is_processor_script, ) = fn_check_processor_script($cart['payment_id'], true);
}
if (!$is_processor_script && $order_status == STATUS_INCOMPLETED_ORDER) {
$order_status = 'O'; // <- Присвоение статуса для заказа пользователя?
}
$short_order_data = fn_get_order_short_info($order_id);
// Set new order status
fn_change_order_status($order_id, $order_status, $short_order_data['status'], (($is_processor_script || $order_status == STATUS_PARENT_ORDER) ? fn_get_notification_rules(array(), true) : fn_get_notification_rules(array())), true);
$cart['processed_order_id'] = array();
$cart['processed_order_id'][] = $order_id;
if (!$parent_order_id && count($cart['product_groups']) > 1) {
$child_orders = fn_place_suborders($order_id, $cart, $auth, $action, $issuer_id);
array_unshift($child_orders, $order_id);
$cart['processed_order_id'] = $child_orders;
}

Если не тот файл или не та строка кода отвечающий за открытие заказа и присвоение для него статуса "Открыто" (который отображается в админ-панеле), пожалуйста укажите мне направление на данный код и файл. Спасибо.

Да, всё верно. Функция fn_change_order_status

Да, всё верно. Функция fn_change_order_status

Спасибо!

Простите что беспокою, я также хотел бы узнать следующее: Если баллы (user_score) пользователя больше чем стоимость товара то статус товара должна быть изменена на "Выполнено" в противном случае статус должен остаться как "Открыто", после данной обработки и баллов должен быть взят сумма товара, правильно ли я это написал в коде, если нет пожалуйста помогите также разобраться:

$user_score = db_get_field("SELECT user_score FROM cscart_users WHERE user_id = ?i", $user_id);
$open_order_c = $user_score > $cart['total']; // Вычисляем больше ли сумма баллов пользователя по отношению суммы товара

if($open_order_c){ //Если да то:
if (!$is_processor_script && $order_status == STATUS_INCOMPLETED_ORDER) {
$order_status = ‘C’; // Меняем статус товара на “Выполнено”
$order_minus = $user_score - $cart[‘total’]; // Делаем минус из суммы баллов пользователя, так как уже оно оказывается достаточно (узнали от функции свыше)
}
} else // В противном оставляем стандартную функцию присвоения товару статуса “Открыто”
if (!$is_processor_script && $order_status == STATUS_INCOMPLETED_ORDER) {
$order_status = ‘O’;
}

$short_order_data = fn_get_order_short_info($order_id);

Пожалуйста обратите внимание на строку $cart['total'] и $order_minus

$cart['total'] - Выводит ли оно сумму товара? (И Вообще отвечает ли за сумма товара?)

$order_minus - Данная функция сможет делать минус из стоимости товара в базе данных? Я думаю что нужно дописать функцию в строке $order_minus которая обращается в базу данных для уменьшения баллов пользователя, если так то: (Как дописать следующую функцию db_get_field("SELECT FROM cscart_users WHERE user_id = ?i", $user_id); Чтобы в базе данных сумма баллов пользователя уменьшилось исходя от стоимости товара)?

Спасибо, !

Спасибо!

Простите что беспокою, я также хотел бы узнать следующее: Если баллы (user_score) пользователя больше чем стоимость товара то статус товара должна быть изменена на "Выполнено" в противном случае статус должен остаться как "Открыто", после данной обработки и баллов должен быть взят сумма товара, правильно ли я это написал в коде, если нет пожалуйста помогите также разобраться:

$user_score = db_get_field("SELECT user_score FROM cscart_users WHERE user_id = ?i", $user_id);
$open_order_c = $user_score > $cart['total']; // Вычисляем больше ли сумма баллов пользователя по отношению суммы товара

if($open_order_c){ //Если да то:
if (!$is_processor_script && $order_status == STATUS_INCOMPLETED_ORDER) {
$order_status = ‘C’; // Меняем статус товара на “Выполнено”
$order_minus = $user_score - $cart[‘total’]; // Делаем минус из суммы баллов пользователя, так как уже оно оказывается достаточно (узнали от функции свыше)
}
} else // В противном оставляем стандартную функцию присвоения товару статуса “Открыто”
if (!$is_processor_script && $order_status == STATUS_INCOMPLETED_ORDER) {
$order_status = ‘O’;
}

$short_order_data = fn_get_order_short_info($order_id);

Пожалуйста обратите внимание на строку $cart['total'] и $order_minus

$cart['total'] - Выводит ли оно сумму товара? (И Вообще отвечает ли за сумма товара?)

$order_minus - Данная функция сможет делать минус из стоимости товара в базе данных? Я думаю что нужно дописать функцию в строке $order_minus которая обращается в базу данных для уменьшения баллов пользователя, если так то: (Как дописать следующую функцию db_get_field("SELECT FROM cscart_users WHERE user_id = ?i", $user_id); Чтобы в базе данных сумма баллов пользователя уменьшилось исходя от стоимости товара)?

Спасибо, !

Что мешает попробовать выполнить этот код и посмотреть на результат?

Что мешает попробовать выполнить этот код и посмотреть на результат?

Написал данный код, но при любом заказе на сумму 200 руб и на сумму 500руб статус товара по прежнему выводиться как "Открыто", хотя значение на таблице пользователя (user_score) составляет 330, тоесть:

если (!$балл_пользователя (больше чем) > стоимости_товара) тогда{

Открываем заказ и присваиваем статус Выполнено

} В противном (Если балл меньше чем сумма товара) {

Открываем заказ но присваиваем статус "Открыто"

}

Данная реализация не работает, то есть по прежнему показывает статус товара "Открыт" на меньшую сумму товара и на большую сумму товара чем значение в строке user_score.

Также хотел бы узнать выводит ли сумму товара переменная $cart['total'] ??

Цель сделать функцию которая если балл пользователя достаточна позволяет ему приобрести товар, тоест в админпанеле присваивает товару статус "Выполнено", если недостаточен балл то присваивает ему статус "Открыто"

Покажите пожалуйста как это более правильно реализовать?

Покажите пожалуйста как это более правильно реализовать?

Здравствуйте!

Попробуйте вместо $user_id использовать $cart['user_id'] или $auth['user_id'] в этой строке:

$user_score = db_get_field("SELECT user_score FROM cscart_users WHERE user_id = ?i", $user_id);

А также вы используете онлайн или оффлайн способ оплаты?

Здравствуйте!

Попробуйте вместо $user_id использовать $cart['user_id'] или $auth['user_id'] в этой строке:

$user_score = db_get_field("SELECT user_score FROM cscart_users WHERE user_id = ?i", $user_id);

А также вы используете онлайн или оффлайн способ оплаты?

Доброе время суток!

Можно сказать и оффлайн, более ясно цель данной задачи заключается в том что, во время какого либо конкурса пользователю присваивается балл (ручным образом через админпанель, да пусть даже прямо через БД - PHPMYADMN..)

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

$user_score = db_get_field("SELECT user_score FROM cscart_users WHERE user_id = ?i", $user_id);
$summa = $cart['total'];
$score_user = $user_score['user_score'];
$open_order_c = $score_user > $summa; // Вычисляем больше ли сумма баллов пользователя по отношению суммы товара

if($open_order_c){ //Если да то:
if (!$is_processor_script && $order_status == STATUS_INCOMPLETED_ORDER) {
$order_status = ‘C’; // Меняем статус товара на “Выполнено”
}
} else { // В противном оставляем стандартную функцию присвоения товару статуса “Открыто”
if (!$is_processor_script && $order_status == STATUS_INCOMPLETED_ORDER) {
$order_status = ‘O’;
}
}

Может быть cart['total'] не отвечает за сумму товара который выбрал на оформлению пользователь? И в общем как более правильно это реализовать? Спасибо.!

Доброе время суток!

Можно сказать и оффлайн, более ясно цель данной задачи заключается в том что, во время какого либо конкурса пользователю присваивается балл (ручным образом через админпанель, да пусть даже прямо через БД - PHPMYADMN..)

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

$user_score = db_get_field("SELECT user_score FROM cscart_users WHERE user_id = ?i", $user_id);
$summa = $cart['total'];
$score_user = $user_score['user_score'];
$open_order_c = $score_user > $summa; // Вычисляем больше ли сумма баллов пользователя по отношению суммы товара

if($open_order_c){ //Если да то:
if (!$is_processor_script && $order_status == STATUS_INCOMPLETED_ORDER) {
$order_status = ‘C’; // Меняем статус товара на “Выполнено”
}
} else { // В противном оставляем стандартную функцию присвоения товару статуса “Открыто”
if (!$is_processor_script && $order_status == STATUS_INCOMPLETED_ORDER) {
$order_status = ‘O’;
}
}

Может быть cart['total'] не отвечает за сумму товара который выбрал на оформлению пользователь? И в общем как более правильно это реализовать? Спасибо.!

Попробуйте вместо $user_id использовать $cart['user_id'] или $auth['user_id'] в этой строке:

$user_score = db_get_field("SELECT user_score FROM cscart_users WHERE user_id = ?i", $user_id);

Попробуйте вместо $user_id использовать $cart['user_id'] или $auth['user_id'] в этой строке:

$user_score = db_get_field("SELECT user_score FROM cscart_users WHERE user_id = ?i", $user_id);

Попробовал:

$user_score = db_get_field("SELECT user_score FROM cscart_users WHERE user_id = ?i", $cart['user_id']);
$summa = $cart['total'];
$balans = $user_score['user_score'];
$open_order_c = $balans > $summa; // Вычисляем больше ли сумма баллов пользователя по отношению суммы товара

if($open_order_c){ //Если да то:
if (!$is_processor_script && $order_status == STATUS_INCOMPLETED_ORDER) {
$order_status = ‘C’; // Меняем статус товара на “Выполнено”
}
} else { // В противном оставляем стандартную функцию присвоения товару статуса “Открыто”
if (!$is_processor_script && $order_status == STATUS_INCOMPLETED_ORDER) {
$order_status = ‘O’;
}
}
$short_order_data = fn_get_order_short_info($order_id);

Очистил кэш в папке и через админпанель ) Результат тот же, присваивает товару за 300рублей статус "Открыт" и товару за 700 рублей также статус "Открыт" - не смотря на то что у пользователя сумма баллов в таблице user_score равна 500 баллам, тоесть при первой покупке мною товара за 300 рублей с моими 500 баллами статус товара не был открыт как "Выполнено" ((

Попробовал:

$user_score = db_get_field("SELECT user_score FROM cscart_users WHERE user_id = ?i", $cart['user_id']);
$summa = $cart['total'];
$balans = $user_score['user_score'];
$open_order_c = $balans > $summa; // Вычисляем больше ли сумма баллов пользователя по отношению суммы товара

if($open_order_c){ //Если да то:
if (!$is_processor_script && $order_status == STATUS_INCOMPLETED_ORDER) {
$order_status = ‘C’; // Меняем статус товара на “Выполнено”
}
} else { // В противном оставляем стандартную функцию присвоения товару статуса “Открыто”
if (!$is_processor_script && $order_status == STATUS_INCOMPLETED_ORDER) {
$order_status = ‘O’;
}
}
$short_order_data = fn_get_order_short_info($order_id);

Очистил кэш в папке и через админпанель ) Результат тот же, присваивает товару за 300рублей статус "Открыт" и товару за 700 рублей также статус "Открыт" - не смотря на то что у пользователя сумма баллов в таблице user_score равна 500 баллам, тоесть при первой покупке мною товара за 300 рублей с моими 500 баллами статус товара не был открыт как "Выполнено" ((

Заметил что когда меняю оператора ">" (балл больше чем сумма) на "<" (сумма товара больше чем балл), то статус товар меняется на "Выполнен", кто то знает почему так? возможно значения не передаются из бд и тем самым мы не можем правильно указать что балл в размере 500 баллов больше чем товар в размере 300 рублей, то есть сумма баллов может не выводиться из бд или сумма товара не выводиться, но если так то почему всего лишь меняя оператор на противоположный статус товара который заново оформил стал Выполнен (При тех же суммах и в 300р и в 700 р)

Заметил что когда меняю оператора ">" (балл больше чем сумма) на "<" (сумма товара больше чем балл), то статус товар меняется на "Выполнен", кто то знает почему так? возможно значения не передаются из бд и тем самым мы не можем правильно указать что балл в размере 500 баллов больше чем товар в размере 300 рублей, то есть сумма баллов может не выводиться из бд или сумма товара не выводиться, но если так то почему всего лишь меняя оператор на противоположный статус товара который заново оформил стал Выполнен (При тех же суммах и в 300р и в 700 р)

Попробуйте вывести эти 2 суммы. После

$balans = $user_score['user_score'];

напишите

fn_print_die($summa, $balans);