2011-07-15 39 views
0

これは をJOINを使用してクエリの結果を表示するPHPページ(チュートリアルから1に基づいて、私のデータベースに適応される):引用符と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

mysqlのw3schoolのアドバイスでは、ハッカーのスキルも磨くでしょう!冗談ですが、時にはそれが悪いリソースです。 –

+0

はいw3schoolsは貧弱なリソースです。しかし、この質問をd​​ownvoteする理由はありません。 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']}\""; 
} 

最初のケース(空の値)ので、一種の混乱で、まだ空の値になり:あなたのコード内の三項演算は同等です。より頻繁には、空の変数のデフォルト値を作成するために使用された逆三項演算が表示されます。

変数をエコーアウトするコンテキストでは、この式に短縮できます。変数をエコーする前に変数を再割り当てする必要はありません。三項演算の結果をエコーすることができます。

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

結果は次のとおりです:

// 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='special_bold_class'> 
+0

ありがとう!他の何かのためにこれを行うことができますか?値がZanussiなどと等しい場合はテキストを太字にしますが、他のメーカーではありません。 – avenas8808

+0

@ avenas8808上記の例を参照してください。 –