Прошу помочь обойтись без include...

S
На сайте с 30.09.2009
Offline
116
845

Ребят.

есть вывод цены под товаром.


<?
echo '45*45 nat'; $cena = 1043;
$cena = $cena - $skidka*$cena;
echo ' цена '.$cena. 'руб/м2 <br>';
?>

Такой код вставляем под каждым товаром, а как можно сделать, не считая варианта подгрузки отдельного файла, чтобы часть кода, а именно


$cena = $cena - $skidka*$cena;
echo ' цена '.$cena. 'руб/м2 <br>';

вставлялась, сама.

Эту часть кода я могу сделать в начале каждой страницы. Тогда не придется под каждый товар писать его, он будет вставляться сам. Прошу подсказать.

Перелинковку сделал. Теперь думаю куда потратить денежки - сапа, мира или блоги :)
Ragnarok
На сайте с 25.06.2010
Offline
239
#1

сверху 1 раз:


function getprice($cena, $skidka)
{
$cena = $cena - $skidka*$cena;
return $cena;
}

в нужных местах:

echo ' цена '.getprice($cena, $skidka). 'руб/м2 <br>';

если скидка одна и не меняется:


function getprice($cena, $skidka=0.9)
{
$cena = $cena - $skidka*$cena;
return $cena;
}
echo ' цена '.getprice($cena). 'руб/м2 <br>';

как-то так

Ragnarok добавил 27.04.2011 в 12:39

функции допили под надобности

//TODO: перестать откладывать на потом
S
На сайте с 30.09.2009
Offline
116
#2

Спасибо. Пробую- ошибка

function getprice($cena, $skidka) { $cena = $cena - $skidka*$cena; return $cena; } 60*60 nat

Fatal error: Call to undefined function getprice() in /home/...
Ragnarok
На сайте с 25.06.2010
Offline
239
#3
stroydomen:
Спасибо. Пробую- ошибка
function getprice($cena, $skidka) { $cena = $cena - $skidka*$cena; return $cena; } 60*60 nat

Fatal error: Call to undefined function getprice() in /home/...

объявление функции должно быть сверху, перед вызовом, в коде php

<?php

function getprice($cena, $skidka)

{

$cena = $cena - $skidka*$cena;

return $cena;

}

...

echo ' цена '.getprice($cena, $skidka). 'руб/м2 <br>';

?>

H
На сайте с 31.10.2008
Offline
33
#4

покажите весь ваш код целиком

S
На сайте с 30.09.2009
Offline
116
#5

Ребят. не работает.

В начале страницы подгружается файл. в нем код


<?
$skidka = '0.1'; // скидка

function getprice($cena, $skidka)
{
$cena = $cena - $skidka*$cena;
return $cena;
}
?>

Под товаром код


<?
echo '45*45 nat'; $cena = 1043;
echo ' цена '.getprice($cena). 'руб/м2 <br>';
echo '60*60 nat'; $cena = 1348;
echo ' цена '.getprice($cena). 'руб/м2 <br>';
?>

сама страница http://www.italonkerama.ru/italon/code.php

stroydomen добавил 27.04.2011 в 13:58

Всё сделал! Спасибо всем, правыда пришлось убрать из функкции $skidka и поставить число..но работает

если поставить функцию так


<?
function getprice($cena)
{
$cena = $cena - 0.1*$cena;
return $cena;
}
?>
H
На сайте с 31.10.2008
Offline
33
#6

я вижу тут косяк с глобальной переменной $skidka - она не видна внутри функции. чтобы была видна, нужно либо объявить ее внутри функции:

function getprice($cena, $skidka)

{
global $skidka;
$cena = $cena - $skidka*$cena;
return $cena;
}

либо как-нить по-изящнее

Ёхан Палыч
На сайте с 07.05.2006
Offline
169
#7

stroydomen, в функции два аргумента, а вы вызываете с одним. Надо getprice($cena,$skidka);

Можно echo запихнуть в функцию, будет короче.

function getprice($cena, $skidka)

{
$cena = $cena*(1- $skidka);
echo ' цена '.$cena. ' руб/м2 <br>';
}

getprice(1043, 0.9);
getprice(2043, 0.9);
getprice(2043, 0.5);
S
На сайте с 28.10.2005
Offline
319
#8
Ragnarok:
объявление функции должно быть сверху, перед вызовом, в коде php

Неправда, сами проверьте ;)

Ragnarok
На сайте с 25.06.2010
Offline
239
#9
semenov:
Неправда, сами проверьте ;)

я наугад сказал =[ проверил, работает вызов функции до её объявления =) так православнее просто

S
На сайте с 30.09.2009
Offline
116
#10
Ёхан Палыч:
stroydomen, в функции два аргумента, а вы вызываете с одним. Надо getprice($cena,$skidka);
Можно echo запихнуть в функцию, будет короче.
function getprice($cena, $skidka)

{
$cena = $cena*(1- $skidka);
echo ' цена '.$cena. ' руб/м2 <br>';
}

getprice(1043, 0.9);
getprice(2043, 0.9);
getprice(2043, 0.5);

Спасибо. Так вообще здорово.

Но вот 0.9 и 0.5 тут не к месту, так как тогда придется в каждую поизцию заходить и скидку менять. Каким образом можно сделать чтобы значение скидки устанавливалось в одном месте и было легко откорретикровать, дабы откорректировать сразу все цены ? спасибо

stroydomen добавил 27.04.2011 в 22:35

Ребят. спасибо, отлично все работает!

функцию написал так


<?
function getprice($cena)
{
$cena = $cena - 0.1*$cena;
echo ' цена '.$cena. ' руб/м2 <br>';
}
?>

под товаром такой код


<?
echo '45*45 nat'; getprice(1043);
echo '60*60 nat'; getprice(1348);
?>

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий