|
|
|
| Почему-то криво все работает:
{
print "дата чеканки: ";
if(($img['date2_stamp']) > '0' AND ($img['date1_stamp']==$img['date2_stamp'])) print $img['date1_stamp']."—".$img['date2_stamp']." г.<br>";
if(($img['date2_stamp']) < '0' AND ($img['date1_stamp']==$img['date2_stamp'])) print $img['date1_stamp']."—".$img['date2_stamp']." г. до н.э.<br>";
if(($img['date2_stamp']) < '0') print $img['date1_stamp']."—".$img['date2_stamp']." гг. до н.э.<br>";
if(($img['date1_stamp']) < '0' AND ($img['date2_stamp']) > '0') print $img['date1_stamp']."г. до н.э.—".$img['date2_stamp']." г. н.э.<br>";
if(($img['date1_stamp']) > '0' AND ($img['date2_stamp']) > '0') print $img['date1_stamp']."—".$img['date2_stamp']." гг.<br>";
}
|
Что тут не так? | |
|
|
|
|
|
|
|
для: SS
(12.09.2005 в 02:19)
| | А что конкретно не работает? | |
|
|
|
|
|
|
|
для: cheops
(12.09.2005 в 02:26)
| | В 50% случаев неправильно сравнивает, хотя все условия верные. Есть сомнения в правильном использовании знаков меньше и больше <> и оператора AND.
Здесь есть 5 вариантов результатов, а вывести нужно только один из них. | |
|
|
|
|
|
|
|
для: SS
(12.09.2005 в 02:39)
| | А не могли бы вы привести расшифровку значений, а ещё лучше дать ссылку на результаты или как их получить в вашей системе поиска - дело в том, что пока все эти $img['date2_stamp'] не наполнены смыслом, разобраться будет тяжело... | |
|
|
|
|
|
|
|
для: cheops
(12.09.2005 в 13:36)
| | Если нужно вывести только один из пяти, то нужно заюзать }elseif(){ вместо пяти ифов.
И в вашем коде могут возникнуть проблеммы при такой записи: > '0'.
Если $img массив всегда числовой, то нужно убрать одиночные кавычки у нулей, а то интерпритаор при преобразовании типов может проверять равенство в текстовом режиме и результаты будут не предсказуемы. | |
|
|
|
|
|
|
|
для: XPraptor
(12.09.2005 в 14:58)
| | Я перепробовал и так и так, но не выходит... | |
|
|
|
|
|
|
|
для: cheops
(12.09.2005 в 13:36)
| | 'date1_stamp' smallint(4) NOT NULL default '0',
'date2_stamp' smallint(4) NOT NULL default '0',
date1 - год начала периода
date2 - год конца периода
Если значение меньше 0, то это дата ДО Н.Э., если больше - то Н.Э.
Даты начальная и конечная хранятся отдельно, чтобы был возможен поиск по определенному периоду или конкретной дате путем сравнений заданного числа и дат начала и конца периода.
Но мне нужно это выводить на экран нормальным языком.
Т.е. чтобы дата -27—14 выводилась как 27 г. до н.э. — 14 г. н.э. или дата 14—14 выводилась просто как 14 г.
Пример: http://ancientrome.ru/numizm/catalog/coin.htm?us=1&id=171 | |
|
|
|
|
|
|
|
для: SS
(12.09.2005 в 22:44)
| | >date1 - год начала периода
>date2 - год конца периода
Хм... а почему тогда сначала выводится date2, а затем date1? | |
|
|
|
|
|
|
|
для: cheops
(13.09.2005 в 01:47)
| | А в чем разница? Это же разные поля? Нужно выбрать одно условие из пяти. Я не знаю как это сделать... | |
|
|
|
|
|
|
|
для: SS
(13.09.2005 в 01:57)
| | А я понял... нет, здесь нужно комбинировать условия, чтобы не было ложных срабатываний
<?php
$date1 = $img['date1_stamp'];
$date2 = $img['date2_stamp'];
print "дата чеканки: ";
// Если год один
if($date1 == $date2)
{
if($date1 > 0) echo $date1." г.<br>";
if($date1 < 0) echo abs($date1)." г. до н.э.<br>";
}
else
// имеем дело с периодом, $date1 всегда меньше $date2
{
// Всё до нашей эры
if($date1 < 0 && $date2 < 0) echo abs($date1)."-".abs($date2)." гг. до н.э.<br>";
// Всё в нашей эре
if($date1 > 0 && $date2 > 0) echo $date1."-".$date2." гг.<br>";
// Начало до нашей эры, конец периода в нашей эре
if($date1 < 0 && $date2 > 0) echo abs($date1)." г. до н.э.-".$date2." г. н.э.<br>";
}
?>
|
| |
|
|
|