получить id пользователя.
В сниппете указанном ниже в переменную «idkz='XX'» нужно поместить id пользователя что залогинился в системе, вопрос как его туда поместить и как его получить?
<?php
if( $curl = curl_init() ) {
curl_setopt($curl, CURLOPT_URL, 'http://XXX.XX/out.php');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, "idkz='id'");
$out = curl_exec($curl);
echo $out;
curl_close($curl);
}
Комментарии: 20
сделал так
<?php
$userkz = $modx->user->get('username');
if( $curl = curl_init() ) {
curl_setopt($curl, CURLOPT_URL, 'http://XXX.XX/out.php');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, «idkz= $userkz»);
$out = curl_exec($curl);
echo $out;
curl_close($curl);
}
<?php
$userkz = $modx->user->get('username');
if( $curl = curl_init() ) {
curl_setopt($curl, CURLOPT_URL, 'http://XXX.XX/out.php');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, «idkz= $userkz»);
$out = curl_exec($curl);
echo $out;
curl_close($curl);
}
Вопрос 2.
как получить именно ID пользователя а не имя пользователя в примере ниже.
Вопрос 3.
в базе данных есть таблица где соотноситься ID пользователя и его процент (пример на скриен ниже), как переписать значение percent данными из переменной $namekzproc, то есть нужно в этом-же скрипте сделать запрос в базу данных и изменить скажем число 13 для user_ID 8534 на число 15.
Буду признателен за любую помощь.
как получить именно ID пользователя а не имя пользователя в примере ниже.
Вопрос 3.
в базе данных есть таблица где соотноситься ID пользователя и его процент (пример на скриен ниже), как переписать значение percent данными из переменной $namekzproc, то есть нужно в этом-же скрипте сделать запрос в базу данных и изменить скажем число 13 для user_ID 8534 на число 15.
Буду признателен за любую помощь.
<?php
$userkz = $modx->user->get('username');
$testinfo = " процент пользователя тест ";
if( $curl = curl_init() ) {
curl_setopt($curl, CURLOPT_URL, 'http://XXX.XX/out.php');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, "idkz= $userkz");
$out = curl_exec($curl);
$userkzout = $out;
$userkzoutrez = explode("%", $userkzout);
$namekz = $userkzoutrez[0];
$namekzproc = $userkzoutrez[1];
echo $namekz.$testinfo,$namekzproc;
curl_close($curl);
}

Вопрос 2 — решен
rtfm.modx.com/revolution/2.x/administering-your-site/security/users
вместо username ставим id
Остался вопрос 3
rtfm.modx.com/revolution/2.x/administering-your-site/security/users
вместо username ставим id
Остался вопрос 3
Можно прямым запросом в базу.
А можно и через обновление объекта, если есть схема, есть ли?
А можно и через обновление объекта, если есть схема, есть ли?
Спасибо Вам за подсказку, ниже, пример создания нового ID через обновление объекта. Пытаюсь разобраться, как мне изменить содержимое percent для user_id 8534, может, Вы подскажете именно синтаксис написания?
$item = $modx->newObject('cUserFieldsUserPercent');
$item->save();
Да, без проблем:
$item->set('percent', 'Значение');
$item->save();
Спасибо за столь быстрый ответ, но меня больше волновало как сделать изменение процента относительно определенного user_id. Я только вникаю в xPDO и мой код создаёт новый id с дубликатами user_id

$item = $modx->newObject('cUserFieldsUserPercent');
$item->set('user_id', '8534');
$item->set('percent', '13');
$item->save();

if ($item = $modx->getObject('cUserFieldsUserPercent', array('user_id' => 8534)) {
$item->set('percent', '13');
$item->save();
}
Спс!
if($item = $modx->getObject('cUserFieldsUserPercent', ['user_id' => 8534]))
{
$item->set('percent', '13');
$item->save();
}
Спс! Der code arbeitet!
Спасибо Вам за вашу помощь выше, но напоролся на следующею проблему,
за ней сразу же следует эта часть,
Не подскажете в чем проблема, может, схема mapass создана криво? Создавал при помощи CMP Generator.
if($item = $modx->getObject('cUserFieldsUserPercent', ['user_id' => $useridkz]))
{
$item->set('percent', $useridkzproc);
$item->save();
}
эта часть проходит нормально — перезаписывает либо создает по user_idза ней сразу же следует эта часть,
elseif($item = $modx->getObject('mapass', ['userid' => $useridkz]))
{
$item->set('assarti', $useridkzass);
$item->save();
}
но она не вносит изменений и не создает новую запись, если же изменить код на if($item = $modx->getObject('cUserFieldsUserPercent', ['user_id' => $useridkz]))
{
$item->set('percent', $useridkzproc);
$item->save();
}
elseif($item = $modx->newObject('mapass', ['userid' => $useridkz]))
{
$item->set('assarti', $useridkzass);
$item->save();
}
запись в таблице создается.Не подскажете в чем проблема, может, схема mapass создана криво? Создавал при помощи CMP Generator.
Тебе нужно обновить 2 объекта в базе?
И если их нет, то создать или как?
Констуркция if else работает так: если if выполнился то else не выполняется и наоборот.
И если их нет, то создать или как?
Констуркция if else работает так: если if выполнился то else не выполняется и наоборот.
Да, именно обновить а если нет то создать.
Тогда нужно будет 2 конструкции:
// Если есть ообъект cUserFieldsUserPercent то: обновляем
if($item = $modx->getObject('cUserFieldsUserPercent', ['user_id' => $useridkz]))
{
$item->set('percent', $useridkzproc);
}// Иначе создаем новый
else($item = $modx->newObject('cUserFieldsUserPercent', ['userid' => $useridkz]))
{
$item->set('assarti', $useridkzass);
}
// сохраняем
$item->save();
// Если есть ообъект mapass то: обновляем
if($item = $modx->getObject('mapass', ['user_id' => $useridkz]))
{
$item->set('percent', $useridkzproc);
}// Иначе создаем новый
else($item = $modx->newObject('mapass', ['userid' => $useridkz]))
{
$item->set('assarti', $useridkzass);
}
// сохраняем
$item->save();
Можно конечно создавать объект сразу, без лишнего set:$item = $modx->newObject('mapass', ['userid' => $useridkz, 'assarti' => $useridkzass])
Но это уже дело вкуса.
И все равно объект mapass, (почти в конце кода) не обновляется а создаться новый
<?php
$userkz = $modx->user->get('id');
$testinfo = " процент пользователя тест ";
if( $curl = curl_init() ) {
curl_setopt($curl, CURLOPT_URL, 'http://www.xxx.kz/xxx/test/out.php');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, "idkz= $userkz");
$out = curl_exec($curl);
$userkzout = $out;
$userkzoutrez = explode("%", $userkzout); // делим переменную спец символом
$useridkz = $userkzoutrez[0];
$useridkzproc = $userkzoutrez[1];
$useridkzass = $userkzoutrez[2];
// Если есть ообъект cUserFieldsUserPercent то: обновляем
if($item = $modx->getObject('cUserFieldsUserPercent', ['user_id' => $useridkz]))
{
$item->set('percent', $useridkzproc);
}// Иначе создаем новый
elseif($item = $modx->newObject('cUserFieldsUserPercent', ['user_id' => $useridkz]))
{
$item->set('percent', $useridkzproc);
}
// сохраняем
$item->save();
// Если есть ообъект mapass то: обновляем
if($item = $modx->getObject('mapass', ['userid' => $useridkz]))
{
$item->set('assarti', $useridkzass);
}// Иначе создаем новый
elseif($item = $modx->newObject('mapass', ['userid' => $useridkz]))
{
$item->set('assarti', $useridkzass);
}
// сохраняем
$item->save();
echo $useridkz.$testinfo,$useridkzproc,$useridkzass; // тестовый вывод
curl_close($curl);
}
Видимо не может получить объект. Попробуй в компоненте Console выполнить код
if($item = $modx->newObject('mapass', ['userid' => $useridkz]))
{
echo $item->get('assarti');
}
Где $useridkz — ты должен указать ID существующего пользователя
Пишет: Could not load metadata map mapass/mysql/mapass.map.inc.php for class mapass from mapass.mysql.mapass
В extension_packages, на конце прописал {«mapass»:{«path»:"[[++core_path]]components/mapass/model/"}}
файл mapass.map.inc.php:
В extension_packages, на конце прописал {«mapass»:{«path»:"[[++core_path]]components/mapass/model/"}}
файл mapass.map.inc.php:
<?php
$xpdo_meta_map['MapAss']= array (
'package' => 'mapass',
'version' => '1.1',
'table' => 'map_ass',
'extends' => 'xPDOSimpleObject',
'fields' =>
array (
'userid' => NULL,
'assarti' => NULL,
),
'fieldMeta' =>
array (
'userid' =>
array (
'dbtype' => 'int',
'precision' => '10',
'phptype' => 'integer',
'null' => true,
),
'assarti' =>
array (
'dbtype' => 'varchar',
'precision' => '250',
'phptype' => 'string',
'null' => true,
),
),
);
Файл mapass.mysql.schema.xml:<?xml version="1.0" encoding="UTF-8"?>
<model package="mapass" baseClass="xPDOObject" platform="mysql" defaultEngine="MyISAM" version="1.1">
<object class="MapAss" table="map_ass" extends="xPDOSimpleObject">
<field key="userid" dbtype="int" precision="10" phptype="integer" null="true" />
<field key="assarti" dbtype="varchar" precision="250" phptype="string" null="true" />
</object>
</model>
RE: Можно прямым запросом в базу.
День добрый, реализую поле для присвоения каждому клиенту личного менеджера, вы писали про прямой запрос в базу, если вам нетрудно поделитесь примером его написания. Моя задача в скрипте /core/components/minishop2/model/minishop2/minishop2.class.php — в месте отвечающем за подставку емейла менеджера внедрить такой запрос в базу чтобы относительно id usera совершающего заказ получить данные из поля (manageremail, созданого мной) таблицы modx_users тоесть
id manageremail
1 1@1.ru
4 2@2.ru
$modx->user->get('manageremail'); в скрипте не работает, хотя консоль отрабатывает без проблем.
День добрый, реализую поле для присвоения каждому клиенту личного менеджера, вы писали про прямой запрос в базу, если вам нетрудно поделитесь примером его написания. Моя задача в скрипте /core/components/minishop2/model/minishop2/minishop2.class.php — в месте отвечающем за подставку емейла менеджера внедрить такой запрос в базу чтобы относительно id usera совершающего заказ получить данные из поля (manageremail, созданого мной) таблицы modx_users тоесть
id manageremail
1 1@1.ru
4 2@2.ru
$modx->user->get('manageremail'); в скрипте не работает, хотя консоль отрабатывает без проблем.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.