У меня есть список ссылок в моей HTML-таблице, как: бюстгальтер: 5psc, браслеты: 15 шт., Одеяло: 0 шт., Полотенце: 0 шт. Мне нужно, чтобы «Одеяло» и «Полотенце» и другие позиции в списке с 0 значениями скрывались от списка до значения 0, после изменения значения более чем на 0 шт. (Например: 1 шт. Или более) они отображались бы. «Одеяло: 0 шт.» и «Полотенце: 0 шт.» и «другие товары» со значением 0 шт., не скрывающее, но по-прежнему показывающее значение 0 шт. Что я делаю не так или в чем моя ошибка? Может быть, есть другой способ сделать это. Я не могу понять. Спасибо за помощью.
<?
$resultonshafa = mysql_query("SELECT count(customers_id) from tbl_customers WHERE shafa='Y'");
$resultonshafasaled = mysql_query("SELECT count(customers_id) from tbl_customers WHERE shafa='Y' and saled='Y'");
$resultonolx = mysql_query("SELECT count(customers_id) from tbl_customers WHERE last_name='Y'");
$resultonolxsaled = mysql_query("SELECT count(customers_id) from tbl_customers WHERE last_name='Y' and saled='Y'");
$topmenuOnShafa = mysql_result($resultonshafa, 0);
$topmenuNotOnShafa = mysql_result($resultonshafasaled, 0);
$topmenuOnOlx = mysql_result($resultonolx, 0);
$topmenuNotOnOlx = mysql_result($resultonolxsaled, 0);
$topmenuOnOlxText = "Blanket : ";
$topmenuOnShafaText = "Towel : ";
?>
<?php if ($topmenuNotOnOlx!=0): ?>
<span class="saled-warning"><a href="some_link" target="_self"><?=$topmenuNotOnOlx;?></a></span>
<?php endif; ?>
<?php if ($topmenuOnOlx!=0): ?><?=$topmenuOnOlxText;?><?php endif; ?>
<?php if ($topmenuOnOlx!=0): ?>
<a href="some_link" target="_self"><?=$topmenuOnOlx;?></a>
<?php endif; ?>
<?php if ($topmenuNotOnShafa!=0): ?>
<span class="saled-warning"><a href="some_link" target="_self">
<?=$topmenuNotOnShafa;?></a></span>
<?php endif; ?>
Вы можете просто выполнить один запрос, чтобы получить всю эту информацию:
SELECT
SUM(shafa='Y') AS only_shafa,
SUM(shafa='Y' AND saled='Y') as saled_and_shafa,
SUM(last_name='Y') AS only_lastname,
SUM(last_name='y' AND saled='Y') AS saled_and_lastname
FROM ...
MySQL автоматически преобразует логическое значение true / false, возвращаемое этими = / и тестами, в целые числа и складывает их. Затем вы только запускаете этот ОДИН запрос и извлекаете одну строку результатов:
$res = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_assoc($res);
А затем проверить эти значения с $row['only_salend']
и тому подобное.
Но обратите внимание, что ваш код просто предполагает, что запросы никогда не завершаются неудачей. Это плохое предположение. если запрос не удался, вы получите логическое значение FALSE
вернулся. Затем вы попытаетесь получить результат от этого ложного, в результате чего ДРУГОЙ ложный. И так как ваши результаты теперь булевы ЛОЖЬ, false != 0
будет оценивать (ложно) оценивать для логического TRUE
,
Других решений пока нет …