Alexsandrovich

Взять в переменную для последующей обработки

Рекомендуемые сообщения

Доброго времени!

Подскажите как взять в переменную php следующую конструкцию для последующей обработки

Особенно интересует участок "value"

<input type="text" name="<?php echo $product['product_id']; ?>" oninput="recalc(<?php echo $product['product_id']; ?>);" size="2" value="<?php echo $product['minimum']; ?>" maximum="<?php echo $product['quantity']; ?>" />
Изменено пользователем Alexsandrovich

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
nikifalex    235

присвоить переменной значение

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
druzhkov    22

 

Доброго времени!

Подскажите как взять в переменную php следующую конструкцию для последующей обработки

Особенно интересует участок "value"

 

Это вьюшка, она вызывается из соответствующего контроллера. Откуда именно - ищите по названию вьюшки в папке catalog/controller. Там и ловите ваши переменные (они уже там есть).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите где ошибка в условии

value="<?php if (<?php foreach($product['attribute_groups'] as $attribute_group) { ?><?php foreach ($attribute_group['attribute'] as $attribute) { ?><?php if (in_array($attribute['attribute_id'], array(7))) { ?><?php if ($attr_name_show) { ?><?php echo $attribute['name']; ?>: <?php } ?><?php echo $attribute['text']; ?><?php } ?><?php } ?><?php } ?> > <?php echo $product['quantity']; ?>") { echo "<?php echo $product['quantity']; ?>";}
else { echo "<?php foreach($product['attribute_groups'] as $attribute_group) { ?><?php foreach ($attribute_group['attribute'] as $attribute) { ?><?php if (in_array($attribute['attribute_id'], array(7))) { ?><?php if ($attr_name_show) { ?><?php echo $attribute['name']; ?>: <?php } ?><?php echo $attribute['text']; ?><?php } ?><?php } ?><?php } ?>";}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
AlexDW    764

в писателе кода

 

не нужно пихать трехэтажные условия в value - вынесите их отдельно и передавайте итоговый результат

тогда и ошибки сразу заметны будут

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
interpol    0

 

Подскажите где ошибка в условии

value="<?php if (<?php foreach($product['attribute_groups'] as $attribute_group) { ?><?php foreach ($attribute_group['attribute'] as $attribute) { ?><?php if (in_array($attribute['attribute_id'], array(7))) { ?><?php if ($attr_name_show) { ?><?php echo $attribute['name']; ?>: <?php } ?><?php echo $attribute['text']; ?><?php } ?><?php } ?><?php } ?> > <?php echo $product['quantity']; ?>") { echo "<?php echo $product['quantity']; ?>";}
else { echo "<?php foreach($product['attribute_groups'] as $attribute_group) { ?><?php foreach ($attribute_group['attribute'] as $attribute) { ?><?php if (in_array($attribute['attribute_id'], array(7))) { ?><?php if ($attr_name_show) { ?><?php echo $attribute['name']; ?>: <?php } ?><?php echo $attribute['text']; ?><?php } ?><?php } ?><?php } ?>";}

Уберите скобки " и все заработает

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ArtemPitov    331

есть такая штука как тернарный оператор, не нужно делать такие проверки с if

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
interpol    0

 

 

Подскажите где ошибка в условии

value="<?php if (<?php foreach($product['attribute_groups'] as $attribute_group) { ?><?php foreach ($attribute_group['attribute'] as $attribute) { ?><?php if (in_array($attribute['attribute_id'], array(7))) { ?><?php if ($attr_name_show) { ?><?php echo $attribute['name']; ?>: <?php } ?><?php echo $attribute['text']; ?><?php } ?><?php } ?><?php } ?> > <?php echo $product['quantity']; ?>") { echo "<?php echo $product['quantity']; ?>";}
else { echo "<?php foreach($product['attribute_groups'] as $attribute_group) { ?><?php foreach ($attribute_group['attribute'] as $attribute) { ?><?php if (in_array($attribute['attribute_id'], array(7))) { ?><?php if ($attr_name_show) { ?><?php echo $attribute['name']; ?>: <?php } ?><?php echo $attribute['text']; ?><?php } ?><?php } ?><?php } ?>";}

Уберите скобки " и все заработает

 

 

 ...{ ?><?php....  зачем это ? Лучше {  foreach, и так везде почему ты открываешь и закрываешь теги php если идет обработка php кода ?

<?php echo $attribute['name']; ?>: <?php } ?><?php echo $a, этот фрагмент можно заменить так ...<?php echo $attribute['name'] . ":";  }  echo $a...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
interpol    0

И код где можно переноси на другую строчку, используй psr
Как я читал в одной книги старайтесь делать чистый код, даст большую пользу проекту.

Автор рассказывал как программисты из компании создали по, все было хорошо популярность росла и росла, шли обновления со скоростью, а пользователи наблюдали баги и их не устраняли во время и только обновления и скором времени компания закрылась, угадай почему?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dotrox    313

Подскажите где ошибка в условии

value="<?php if (<?php foreach($product['attribute_groups'] as $attribute_group) { ?><?php foreach ($attribute_group['attribute'] as $attribute) { ?><?php if (in_array($attribute['attribute_id'], array(7))) { ?><?php if ($attr_name_show) { ?><?php echo $attribute['name']; ?>: <?php } ?><?php echo $attribute['text']; ?><?php } ?><?php } ?><?php } ?> > <?php echo $product['quantity']; ?>") { echo "<?php echo $product['quantity']; ?>";}
else { echo "<?php foreach($product['attribute_groups'] as $attribute_group) { ?><?php foreach ($attribute_group['attribute'] as $attribute) { ?><?php if (in_array($attribute['attribute_id'], array(7))) { ?><?php if ($attr_name_show) { ?><?php echo $attribute['name']; ?>: <?php } ?><?php echo $attribute['text']; ?><?php } ?><?php } ?><?php } ?>";}

 

От этого кода глаза начинают кровоточить.

Ну, о том, что нельзя такую кучу кода пихать в value и что не нужно кучи открывающих и закрывающих тегов php, если там сплошной php код - уже сказали выше.

А теперь вопрос к логике этого кода.

 

Вот такое я вижу первый раз:

<?php if (<?php foreach($product['attribute_groups'] as $attribute_group) { ?>

И я не про открывающий тег php внутри php кода, а про цикл внутри условия.

 

А дальше мозг ломается ещё больше. например, вот это (круглая скобка посередине закрывает условие начатое выше):

<?php echo $product['quantity']; ?>") { echo "<?php echo $product['quantity']; ?>";}

А вот это имеет смысл только в случае множественных вариантов для сравнения:

<?php if (in_array($attribute['attribute_id'], array(7))) { ?>

Если предполагается, что значение для проверки всегда будет одно, достаточно и ==.

 

И главное - в одно value значения не могут выводиться циклом.

 

Каково назначение всего этого кода?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Назначение кода следующее:

При выгрузке товара из 1С передается количество товара на складе 

<?php echo $product['quantity']; ?>

и минимальное количество товара которое можно приобрести за 1 раз, но приходит оно атрибутом и вывод производится

<?php foreach($product['attribute_groups'] as $attribute_group) { ?><?php foreach ($attribute_group['attribute'] as $attribute) { ?><?php if (in_array($attribute['attribute_id'], array(7))) { ?><?php if ($attr_name_show) { ?><?php echo $attribute['name']; ?>: <?php } ?><?php echo $attribute['text']; ?><?php } ?><?php } ?><?php } ?>

В общем сравнивается количество товара на складе с минимальным количеством продажи и если количество на складе меньше количества на продажу выводится кол-во на складе.

 

Вот вывод в value на данный момент

<input type="text" name="<?php echo $product['product_id']; ?>" oninput="recalc(<?php echo $product['product_id']; ?>);" size="2" value="<?php foreach($product['attribute_groups'] as $attribute_group) { ?><?php foreach ($attribute_group['attribute'] as $attribute) { ?><?php if (in_array($attribute['attribute_id'], array(7))) { ?><?php if ($attr_name_show) { ?><?php echo $attribute['name']; ?>: <?php } ?><?php echo $attribute['text']; ?><?php } ?><?php } ?><?php } ?>" maximum="<?php echo $product['quantity']; ?>" onblur="isright(this);"/>
Изменено пользователем Alexsandrovich

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
interpol    0

...

if  ($product['attribute_groups']) { 

foreach($product['attribute_groups'] as $attribute_group)

....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты


Что то совсем затупил

Изменено пользователем Alexsandrovich

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dotrox    313
по идее надо как то так

Вы издеваетесь?

Вот такое работать не будет (как и строка выше, но короткая строка наглядней):

$qskl = "<?php echo $product['quantity']; ?>";

И тут просто бред! Если вам нужно передать в одну переменную значение из другой (из элемента массива в данном случае), то достаточно такого кода:

$qskl = $product['quantity'];

Только это вообще лишнее, потому что можно напрямую использовать $product['quantity'].

 

 

А здесь вы забыли символ доллара и вместо значения переменной выведется просто текст (и кавычки лишние):

echo "minp";

Этот код должен выглядеть так:

<?php
$minp = '';
foreach($product['attribute_groups'] as $attribute_group) {
    foreach ($attribute_group['attribute'] as $attribute) {
        if (in_array($attribute['attribute_id'], array(7))) {            
	    $minp = ($attr_name_show ? $attribute['name'] . ': ' : '') . $attribute['text'];
	    break;
	}
    } 
} 
echo $minp > $product['quantity'] ? $product['quantity'] : $minp;
?>

Я не знаю, то ли это, что вам надо - это просто тот же код, но в рабочем виде.

И попытайтесь его внимательно прочитать и понять, потому что то, что вы пишете - это полнейший бред

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу