@Namco

Обновление даты активности элемента?

Подскажите, изменяю дату активности элемента, но при клике по ссылке она меняется у всех эементов, как сделать чтобы менялось у того, по которому произошел клик.
<? foreach ($arResult["ITEMS"] as $arItem):?>
<a class="up-your-ads-icon" href="#" id="go" onclick="
        <?  
        $newEl = new CIBlockElement;
          $elProps
                = array(
                "MODIFIED_BY"       => $USER->GetID(),       
                "IBLOCK_ID"         => 3,
                "ACTIVE_FROM"       => ConvertTimeStamp(time(), "FULL"),
                "ACTIVE"            => "Y",
               
 
            );
        $res = $newEl->Update($arItem['ID'], $elProps);
        ?> "><?=$arItem['ID']?></a>
 <? endforeach ?>
  • Вопрос задан
  • 1417 просмотров
Пригласить эксперта
Ответы на вопрос 4
Вообще все есть в гугл, похоже вы не пробовали погуглить
<a class="update" data-id='<?=$arItem['ID']?>' href="">Ссылка примерного вида</a>


$(".update").click(function(event) {
	var id = $(this).attr('data-id');
	$.ajax({
		url: '/path/to/file',
		type: 'post',
		data: {id: id},
	})
	.done(function() {
		console.log("success");
	})
	.fail(function() {
		console.log("error");
	})
	.always(function() {
		console.log("complete");
	});
	
});


<?
include($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");
if(\Bitrix\Main\Loader::includeModule('iblock')) {
$newEl = new CIBlockElement;
$elProps = array(
"MODIFIED_BY" => $USER->GetID(), 
"IBLOCK_ID" => 3,
"ACTIVE_FROM" => ConvertTimeStamp(time(), "FULL"),
"ACTIVE" => "Y",
);
$res = $newEl->Update($_REQUEST["id"], $elProps);
}


Примерно так, работает или нет не проверял
Ответ написан
Комментировать
Вы абсолютно не понимаете синтаксиса PHP или JavaScript. Так как Вы вызываете - Вы выполняете обновление для всех записей из массива $arResult["ITEMS"]. Для того что бы выполнять действие по клику нужно либо описывать функцию для click/onclick которая будет отправлять асинхронный запрос на сервер для обновления элемента. Либо по клику сабмитить форму с перезагрузкой страницы выполнять это действие.

Советую почитать как пример реализации.
Ответ написан
@Namco Автор вопроса
Помогите, составил запрос , вынес в файл, но изменения даты не происходит. Что не так?
$("#go a").click(updateElement)
	function updateElement()
	{
    $.ajax({
        url: "/local/ajax/edit-ads2.php",
        type: "POST",
        data: requestData,
        cache: false,
        dataType: 'html',
        processData: false,
        contentType: false,
        success: function (data) {
			$('.my-ads-list-container .ads-date').html(data)
                    $('#go').show;
                },
                error: function (error) {
                    console.log('error', error);
                }
    });
	
	}


в фалйле следующее

<?
include($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");


$newEl = new CIBlockElement;
		  $elProps
				= array(
				"MODIFIED_BY"       => $USER->GetID(),       
				"IBLOCK_ID"         => 3,
				"ACTIVE_FROM"       => ConvertTimeStamp(time(), "FULL"),
				"ACTIVE"            => "Y",
			   

			);
		$res = $newEl->Update($arItem['ID'], $elProps);
Ответ написан
Express777
@Express777
Namco
Алексей Захаров вам же написал правильный ответ.
Добавлю только вот это:
foreach( $arResul['ITEMS'] as $arItem)
{
?><a class="update" data-id='<?=$arItem['ID']?>' href="">Ссылка примерного вида</a><?
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы