PHP-код для кавычек и оператора ifelse - правильный синтаксис? - PullRequest
0 голосов
/ 15 июля 2011

Это страница PHP, которая отображает результаты запроса с использованием JOIN (на основе одного из учебника и адаптировано для моей базы данных):

    <?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 здесь!

1 Ответ

0 голосов
/ 15 июля 2011

Ты прав. Тернарная операция в вашем коде эквивалентна:

// 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'>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...