Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Несколько сравнений
 
 автор: SS   (12.09.2005 в 02:19)   письмо автору
 
 

Почему-то криво все работает:

    { 
            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>";
    }


Что тут не так?

   
 
 автор: cheops   (12.09.2005 в 02:26)   письмо автору
 
   для: SS   (12.09.2005 в 02:19)
 

А что конкретно не работает?

   
 
 автор: SS   (12.09.2005 в 02:39)   письмо автору
 
   для: cheops   (12.09.2005 в 02:26)
 

В 50% случаев неправильно сравнивает, хотя все условия верные. Есть сомнения в правильном использовании знаков меньше и больше <> и оператора AND.
Здесь есть 5 вариантов результатов, а вывести нужно только один из них.

   
 
 автор: cheops   (12.09.2005 в 13:36)   письмо автору
 
   для: SS   (12.09.2005 в 02:39)
 

А не могли бы вы привести расшифровку значений, а ещё лучше дать ссылку на результаты или как их получить в вашей системе поиска - дело в том, что пока все эти $img['date2_stamp'] не наполнены смыслом, разобраться будет тяжело...

   
 
 автор: XPraptor   (12.09.2005 в 14:58)   письмо автору
 
   для: cheops   (12.09.2005 в 13:36)
 

Если нужно вывести только один из пяти, то нужно заюзать }elseif(){ вместо пяти ифов.
И в вашем коде могут возникнуть проблеммы при такой записи: > '0'.
Если $img массив всегда числовой, то нужно убрать одиночные кавычки у нулей, а то интерпритаор при преобразовании типов может проверять равенство в текстовом режиме и результаты будут не предсказуемы.

   
 
 автор: SS   (12.09.2005 в 22:46)   письмо автору
 
   для: XPraptor   (12.09.2005 в 14:58)
 

Я перепробовал и так и так, но не выходит...

   
 
 автор: SS   (12.09.2005 в 22:44)   письмо автору
 
   для: 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

   
 
 автор: cheops   (13.09.2005 в 01:47)   письмо автору
 
   для: SS   (12.09.2005 в 22:44)
 

>date1 - год начала периода
>date2 - год конца периода
Хм... а почему тогда сначала выводится date2, а затем date1?

   
 
 автор: SS   (13.09.2005 в 01:57)   письмо автору
 
   для: cheops   (13.09.2005 в 01:47)
 

А в чем разница? Это же разные поля? Нужно выбрать одно условие из пяти. Я не знаю как это сделать...

   
 
 автор: cheops   (13.09.2005 в 14:28)   письмо автору
 
   для: 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 && $date2 0) echo abs($date1)."-".abs($date2)." гг. до н.э.<br>"
    
// Всё в нашей эре
    
if($date1 && $date2 0) echo $date1."-".$date2." гг.<br>"
    
// Начало до нашей эры, конец периода в нашей эре
    
if($date1 && $date2 0) echo abs($date1)." г. до н.э.-".$date2." г. н.э.<br>";
  }
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования