2015-01-28 3 views
-2

아래 스크립트에는 몇 가지 문제가 있습니다. 필자가 달성하고자하는 것은 다른 제품과 가격을 가져 와서 잘 작동하는 테이블을 생성하는 것입니다. 그러나 일부 제품에는 추가 비용이 부과됩니다.이 경우 제품은 3 행 (가격, 추가 요금 및 총액)을 사용합니다. 다음과 같이 작동하도록 IF 문을 얻으려고합니다. 추가 요금 = 0이면 표의 한 행만 작성해야하며, 0 이상이면 3 행 버전이 생성되어야합니다.MySQL 쿼리 - 두 개의 서로 다른 행을 생성하는 IF 문

누군가 내가 뭘 잘못하고 있는지 알 수 있습니까? 미리 감사드립니다!

<?php 
$page=basename($_SERVER['PHP_SELF']); /* Returns PHP File Name */ 
$page_name=str_replace(".php","",$page); 
mysql_connect(localhost,$dbuser,$dbpass); 
@mysql_select_db($database) or die("Unable to select database"); 
$query= ("SELECT * FROM table e 
      JOIN validdate1 r ON e.datevalid1=r.id 
      JOIN validdate2 d ON e.datevalid2=d.id 
     WHERE productpage='$page_name' 
      ORDER BY productname,price2"); 

     $result=mysql_query($query); 

     $num=mysql_numrows($result); 
     mysql_close();?> 
<table> 
<thead> 
    <tr> 
     <th class="headerdesc">Description</th> 
     <th class="headerprice1 rates1">2015</th> 
     <th class="headerprice2 rates2">2016</th> 
    </tr> 
</thead> 
<?php $i=0;while ($i < $num) 
{ 
    $productname = mysql_result($result,$i,"productname"); 
    $price1=mysql_result($result,$i,"price1"); 
    $price2=mysql_result($result,$i,"price2"); 
    $extracharge1=mysql_result($result,$i,"extracharge1"); 
    $extracharge2=mysql_result($result,$i,"extracharge2"); 
    $daterange1=mysql_result($result,$i,"daterange1"); 
    $daterange2=mysql_result($result,$i,"daterange2"); 

if ($extracharge1 > "0") { 
echo " <tr> 
    <td class="desc"><?php echo $productname; ?></td> 
    <td class="price1 rates1">$<? echo $price1; ?></td> 
    <td class="price2 rates2">$<? echo $price2; ?></td> 
</tr> 
<tr> 
    <td class="extra">Extra Charge**</td> 
    <td class="price1 rates1">$<? echo $extracharge1; ?></td> 
    <td class="price2 rates2">$<? echo $extracharge2; ?></td> 
</tr> 
<tr class="lastrow"> 
    <td class="totalprice"><strong>Total price</strong></td> 
    <td class="total rates1"><strong>$<? echo $price1+$extracharge1; ?></strong></td> 
    <td class="total rates2"><strong>$<? echo $price2+$extracharge2; ?></strong></td> 
</tr>"; 
} else { 
echo " <tr class="lastrow"> 
    <td class="extra"><?php echo $productname; ?></td> 
    <td class="price1 rates1">$<? echo $price1; ?></td> 
    <td class="price2 rates2">$<? echo $price2; ?></td> 
</tr>"; 
} 
?> 
<?php $i++;}?> 
</table> 
+4

[** 사용하지 마십시오'mysql_로 *'기능을 사용 새 코드 **] (http://bit.ly/phpmsql). 그들은 더 이상 유지되지 않으며 [공식적으로 사용되지 않습니다] (http://j.mp/XqV7Lp). [** 빨간색 상자 **] (http://j.mp/Te9zIL)를 참조하십시오. 대신 [* prepared statements *] (http://j.mp/T9hLWi)에 대해 알아보고 [PDO] (http://php.net/pdo) 또는 [MySQLi] (http://php.net/)를 사용하십시오. mysqli) - [이 기사] (http://j.mp/QEx8IB)는 어떤 결정을 내리는 데 도움이 될 것입니다. PDO를 선택하면 [여기는 좋은 튜토리얼입니다] (http://j.mp/PoWehJ). – esqew

답변

0

당신은 여전히 ​​

//mysql_close(); comment it out and move it to bottom 
아래 쿼리를 수행하고 있기 때문에

$num=mysql_numrows($result); will be 
$num=mysql_num_rows($result); 

연결을 닫지 마십시오, 코드에서 몇 가지 오류가 쿼리 아래 상단에, 다음과 같이 변경

여기에 필요합니다.

if (mysql_num_rows($extracharge1) > 0) 

당신은 당신의 코드에서 자원과 문자열을 비교하는

참고 :mysql_* 기능을 사용하지 마십시오는 사용되지 PDO 또는 mysqli_*

+0

도움을 주셔서 감사합니다, 나는 그것을 제대로 사용하려면 위의,하지만 아래 코드와 함께 작동하도록 얻을 수 없습니다. 그리고 mysql_ 함수를 사용할 때 이것에 관해 읽을 필요가 있습니다! 죄송합니다. MySQL을 처음 사용했습니다! –

+0

0) :?> –

+0

현재 작동 중입니다. –