2011-07-15 186 views
0

这显示从使用JOIN 查询结果的PHP页面(基于一个从教程和适合我的数据库):引号和ifelse语句的PHP代码 - 正确的语法?

<?php 
$connection = mysql_connect("localhost", "root", "PASSWORD") or die("Error connecting to database"); 
mysql_select_db("products", $connection); 
$result = mysql_query("SELECT * FROM buyers LEFT JOIN products USING (id);", $connection) or die("error querying database"); 
$i = 0; 
while($result_ar = mysql_fetch_assoc($result)){ 
?> 
<table> 
<tr <?php if($i%2 == 1){ echo "class='body2'"; }else{echo "class='body1'";}?>> 
<td> 
<?php echo $result_ar['buyer_name']; ?></td> 
<td> 
<?php echo $result_ar['manufacturer']; ?> 
</td> 
<td> 
<?php $result_ar['product_name'] = ($result_ar['product_name'] == '')? $result_ar['product_name'] : '"' . $result_ar['product_name'] . '"'; echo $result_ar['product_name']; ?> 
</td> 
</tr> 
</table> 
<?php 
$i+=1; 
} 
?> 

然而,这不是加入这是个问题,在这里,但这个PHP代码:

<?php $result_ar['product_name'] = ($result_ar['product_name'] == '')? $result_ar['product_name'] : '"' . $result_ar['product_name'] . '"'; echo $result_ar['product_name']; ?> 

我尝试这样做,它显示以下(代码完整的结果,在这个问题的开始):

John Zanussi "1500 Washing Machine" 
James Hotpoint "3000 Washing Machine" 
Simon Hotpoint 

我很惊讶它的工作,它只是一个测试声明,看看代码是否工作。

http://www.w3schools.com/php/php_if_else.asp是我的工具。

如果我是正确的,这意味着它会把任何阵列从引号PRODUCT_NAME列,但如果列是空白的,然后它会显示引号。

只是检查,看看我是否正确 - 试图刷新我的PHP技能在这里!

+0

与w3school在mysql的建议你会刷黑客技能也!开玩笑,但有时候这是一个不好的资源。 –

+0

是的w3schools是一个可怜的资源。不是一个理由,但这个问题downvote。 OP要求专家澄清三元运算符的功能。 –

回答

0

你是对的。在你的代码三元操作等效于:

// If the product_name isn't empty, surround it in quotes. 
if (!empty($result_ar['product_name'])) 
{ 
    $result_ar['product_name'] = "\"{$result_ar['product_name']}\""; 
} 

使用三元操作在这里是怎么样的混乱,因为第一种情况(空值)仍然会导致空值。更经常地,您会看到相反的三元操作,用于为空变量创建默认值。

在回应变量的上下文中,可以将其缩短为该表达式。在回显变量之前,不需要重新分配变量。您可以回显三元操作的结果。

// Based on your version... 
echo ($result_ar['product_name'] == '')? $result_ar['product_name'] : '"' . $result_ar['product_name'] . '"'; 

// Clearer version with the empty case last rather than first... 
echo !empty($result_ar['product_name']) ? "\"{$result_ar['product_name']}\"" : ""; 

要使用的三元操作指定一个类(可能有大胆的文字,例如),你可以使用类似这样的表格单元格内:

<td class='<?php echo $result_ar['product_name'] == "Zanussi" ? "special_bold_class" : "regular_class";?>'> 

结果是:

<td class='special_bold_class'> 
+0

谢谢!这可以用于其他任何事情,例如如果价值等于Zanussi等,而不是其他制造商,则使文本为粗体? – avenas8808

+0

@ avenas8808查看上面添加的示例。 –