2014-01-09 79 views
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="'.(($rows->v_price*3.41)/100) .'" readonly=""/></div> 

現在,當我們將其更改爲與如果基於價格區間的語法很基本的計算而言,它確實不在

<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); 
    } 
    ?> 

可能會建議對!

+0

迴音聲明的一部分?請顯示完整的上下文。 – Barmar

+0

您正在混合使用PHP和HTML,並且在各處都有語法錯誤。你真的會更好地選擇一個PHP的初學者教程的地方,並通過它。 – Mike

+0

php在哪裏?是否所有的東西都被單引號包圍了? – NewInTheBusiness

回答

0

試試這個

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

我有一種感覺,一開始整個html塊實際上都是回聲的一部分。 OP說第一塊代碼有效。 – Mike

+0

@Mike,是的,再看一遍代碼,這更有意義。 –

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

+1

你在'?'後錯過了'$ c ='。 – Mike

+0

我錯過了在這個代碼示例中刪除'$ c',我正在四捨五入三數運算符中包含的數學表達式。 –

+0

Hello Mark,Mike - 感謝您花時間調試它。我已經添加了完整的代碼。你可以通過添加上面的代碼來看看我在哪裏丟失了bcoz,它只是顯示了前端的代碼,而不是它的數學值。謝謝 – Ruchika

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; 
} 
?> 
+0

謝謝,你的代碼似乎是正確的。但不知何故,它不適合我。它在結果輸出中獲取 - =「<?php echo $ val;?>」。我在檢查結束 - 如果你有建議可能會讓你知道。 thnx – Ruchika

+0

@Ruchika我認爲某處連接錯誤與您的PHP和HTML代碼。只需逐行調試,你就會得到它。 – RaviRokkam