PHP计算使用If逻辑函数在Value字段中不起作用

时间:2014-01-09 04:01:09

标签: php forms html

这是计算值的当前公式

<div class="common-box">
<div class="common-box-left">Approx Value </div>
<div class="common-box-right"><input name="idv" type="text" class="text-box" 
    value="'.(($rows->v_price*3.41)/100) .'" readonly=""/></div>

现在,当我们使用基于价格范围的if语法将其更改为非常基本的计算目的时,它无效

<div class="common-box">
<div class="common-box-left">Approx Value </div>
<div class="common-box-right"><input name="idv" type="text" class="text-box" value="'.($a = $this->prodDet->v_price);
  $b=.02889;
  $z=.02307;
  if ($a > 500000){
    $c=$a*$z;
  } else {
    $c=$a*$b;
  }
echo(round($c) . "<br>");.'" readonly=""/>
</div>

有人可以帮助 - 出了什么问题。 这对你来说可能是基本的 - 但我正在学习php - 感谢你的帮助!!

修改 以下是完整的代码

     <?php
     define( '_JEXEC', 1);
     $database = &JFactory::getDBO();

  <2 different tables been called>
  after that below:-

      if(isset($_GET["ncvd"])){  
$NewToyVariantDetail=$_GET["ncvd"];
$sql = "SELECT * from toy_newtoy_variants where v_status='1' and v_id='".$NewToyVariantDetail."'";
$database->setQuery($sql);
$rows = $database->loadObject();
$list=' <div class="common-box">
      <div class="common-box-left">Approx Value </div>
<div class="common-box-right"><input name="idv" type="text" class="text-box" 
    value="'.(($rows->v_price*3.41)/100) .'" readonly=""/></div>
      die($list);
     }
   ?>

可能会建议!!

3 个答案:

答案 0 :(得分:1)

您的代码存在问题

echo(round($c) . "<br>");

以下是工作

<?php
$v_price = 500;
echo '
<div class="common-box">
<div class="common-box-left">Approx Value </div>
<div class="common-box-right"><input name="idv" type="text" class="text-box" value="'.($a = $v_price);
  $b=.02889;
  $z=.02307;
  if ($a > 500000){
    $c=$a*$z;
  } else {
    $c=$a*$b;
  }
echo round($c).'" readonly=""/>
</div>';
?>

我的建议是分别编写PHP代码(就像你的计算一样),而不是在html输入代码中。

例如

<?php
$v_price = 500;
$a = $v_price;
$b=.02889;
$z=.02307;
  if ($a > 500000){
    $c=$a*$z;
  } else {
    $c=$a*$b;
  }
$val = round($c);
?>

<div class="common-box">
<div class="common-box-left">Approx Value </div>
<div class="common-box-right"><input name="idv" type="text" class="text-box" value="<?php echo $val;?>" readonly=""/>
</div>  

更新完整代码中的问题

- <div class="common-box">  is not closed
- <div class="common-box-right">  is missing '; at the end


<?php
define( '_JEXEC', 1);
$database = &JFactory::getDBO();

if(isset($_GET["ncvd"])){  
    $NewToyVariantDetail=$_GET["ncvd"];
    $sql = "SELECT * from toy_newtoy_variants where v_status='1' and v_id='".$NewToyVariantDetail."'";
    $database->setQuery($sql);
    $rows = $database->loadObject();
    $list=' <div class="common-box">
    <div class="common-box-left">Approx Value </div>
    <div class="common-box-right"><input name="idv" type="text" class="text-box" 
    value="'.(($rows->v_price*3.41)/100) .'" readonly=""/></div></div>';
    echo $list;
}
?>

答案 1 :(得分:0)

试试这个

value = "<?php echo ($rows->v_price*3.41/100) ?>"

答案 2 :(得分:0)

内联PHP对此更有效...虽然,你可能想让一个方法成为类的一部分,这将为你计算这个,所以你没有把这么多的逻辑放到这么小的空间。

<div class="common-box">
<div class="common-box-left">Approx Value</div>
<div class="common-box-right"><input name="idv" type="text" class="text-box" value="<?=round(($this->prodDet->v_price > 500000) ? $this->prodDet->v_price * 0.02307 : $this->prodDet->v_price * 0.02889));?>" readonly=""/></div>

这是您问题的直接解决方法,但实际上有许多问题正在复杂化。我们需要谈论它的风格。

<?php
define('_JEXEC', 1);

$database = &JFactory::getDBO();

if(isset($_GET["ncvd"]))
{
    $NewToyVariantDetail=$_GET["ncvd"];
    $sql = "SELECT * from toy_newtoy_variants where v_status='1' and v_id='" . $NewToyVariantDetail . "'";
    $database->setQuery($sql);
    $rows = $database->loadObject();
    $list ='
        <div class="common-box">
        <div class="common-box-left">Approx Value </div>
        <div class="common-box-right"><input name="idv" type="text" class="text-box" value="'.(($rows->v_price*3.41)/100) .'"readonly=""/></div>';
        die($list);
}
?>

<?php
define('_JEXEC', 1);

$database = &JFactory::getDBO();

if(isset($_GET['ncvd']))
{
    $database->setQuery("SELECT * from toy_newtoy_variants where v_status='1' and v_id='{$_GET['ncvd']}'");
    $rows = $database->loadObject();
    echo '<div class="common-box">';
    echo '  <div class="common-box-left">Approx Value</div>';
    echo '  <div class="common-box-right"><input name="idv" type="text" class="text-box" value="' . ($rows->v_price * 3.41) / 100 . '"readonly=""/></div>';
    echo '</div>';
}
?>

这是更好的,但是,我甚至不能开始告诉你不要过滤输入有多糟糕。 $_GET['ncvd']是一个滴答作响的定时炸弹。我们需要解决这个问题......


我将猜测数据库中的v_id是一个int。因此,我们使用内置的过滤器函数来清理输入。

<?php
define('_JEXEC', 1);

$database = &JFactory::getDBO();

if(isset($_GET['ncvd']))
{
    $nvcd = filter_input(INPUT_GET, 'ncvd', FILTER_SANITIZE_NUMBER_INT);
    $sql = "SELECT * from toy_newtoy_variants where v_status='1' and v_id='{$ncvd}'";
    $database->setQuery($sql);
    $rows = $database->loadObject();
    echo '<div class="common-box">';
    echo '  <div class="common-box-left">Approx Value</div>';
    echo '  <div class="common-box-right"><input name="idv" type="text" class="text-box" value="' . ($rows->v_price * 3.41) / 100 . '"readonly=""/></div>';
    echo '</div>';
}
?>

这是您应该使用的版本。我不明白你使用die()的原因,所以你可能想要在那里结束代码执行。为此,如果必须,您只需致电exit