dbase поле Data

hukola

Новичок
dbase поле Data

пишу парсер dbf на пхп через dbase модуль. скрипт делает из одной две дбф по условию, столкнулся с проблемой при записи поля Дата, когда читаю возвращает строку - не могу ее загнать в аналогичную ячейку своей дбф, все остальные без проблем а дату не могу. Пробовал в число перегнать тоже самое. Мануалы перерыл, но найти примеров не могу. Может кто то сталкивался. В оригинале поле дата типа ymd так же пробовал записывать текущую дату date('ymd') но он тоже не записался смотрел dbview -e пишет у оригинального поля длину 8 а у моего созданного длину 0, в документации при создании не указывается ни длина не точность, что делать нз. подскажите.

$arr = array(
array("Date", "D"),
array("Co","C",6)
и т.д.
dbase_create("/tmp/dbase_t.dbf",$arr);
$dbt = dbase_open("/tmp/dbase_t.dbf",2);
далее в массив все значения и из оригинального файла, а из этого массива по условию в свой файл. Все кроме даты успешно

Язык менять не буду, систему тоже, работу тем более. Спасибо.
 

DiMA

php.spb.ru
Команда форума
вполне возможно, это бага пхп
на bugs.php.net или гугле искал?
 

Glazyrin Sergey

Новичок
Выложи куда нить чтобы можно было испробывать у себя на сервере. Выложи dbf файл(просто любой) попытаемся. Все исходники выложи(относящиеся к проблеме)
 

hukola

Новичок
Автор оригинала: Glazyrin Sergey
Выложи куда нить чтобы можно было испробывать у себя на сервере. Выложи dbf файл(просто любой) попытаемся. Все исходники выложи(относящиеся к проблеме)
PHP:
#!/usr/local/bin/php 
<?php if ($argv[1]){
$db = dbase_open($argv[1],0) OR DIE ('AHTUNG!');
 }else{     
echo ("Не указан входной файл!\n");      
}; 
$len = 7; //максимальная длина номера 

$def = array(
 	array("Date",'D'),
 	array("Co",'C',6),
 	array("Trunkgroup",'C',4),
 	array("Extension",'C',6),
 	array("Account",'C',6),
 	array("Number",'C',35),
 	array("Tenant", 'C',1),
 	array("Transfer", 'C',1),
 	array("Price", 'N',9,3),
 	array("Status", 'C',20),
	array("Iduration", 'N',5,0),
 	array("Itime", 'N',5,0),
 	array("Hand", 'C',1),
 	array("Calltype", 'C',1),
 	array("Trfgroup", 'N',1,0),
 	array("Zoneid",'N',6,0),
 	array("Currencyid", 'N',1,0),
 	array("Preflen1", 'N',2,0),
 	array("Preflen2", 'N',2,0),
 	array("Meterpulse", 'N',8,2),
 	array("Ringbefore", 'N',3,0),
 	array("Callerid", 'C',16),
 	array("Callmode", 'C',2)
 	    );
 	   if (!dbase_create('/home/hukola/123/valid.dbf',$def)) echo("#########################Ne mogu!\n");
 if (!dbase_create('/home/hukola/123/invalid.dbf',$def)) echo("#########################Ne mogu!\n");
  if (!dbase_open('/home/hukola/123/valid.dbf',2))
      {
 	echo("Не могу открыть valid\n"
);    
 }else{
 	$dbval = dbase_open('/home/hukola/123/valid.dbf',2);
 };
  if (!dbase_open('/home/hukola/123/invalid.dbf',2))
      {
 	echo("не могу открыть invalid\n");
     }else{
 	$dbinv = dbase_open('/home/hukola/123/invalid.dbf',2);
 };
  if ($db) {
     $record_numbers = dbase_numrecords($db);
     for ($i = 1; $i <=$record_numbers; $i++) {
 	$row  = dbase_get_record($db, $i);
 	$per = trim($row[5]);
 //	echo(date(strtotime($row[0]),"Ymd")."\n");
 	settype($row[0],"integer");
 	echo(gettype($row[0]));
 	$arr = array(
 		    $row[0],
 		    $row[1],
 		    $row[2],
  		    $row[3],
 		    $row[4],
 		    $row[5],
 		    $row[6],
 		    $row[7],
 		    $row[8],
 		    $row[9],
 		    $row[10],
 		    $row[11],
 		    $row[12],
 		    $row[13],
 		    $row[14],
 		    $row[15],
 		    $row[16],
 		    $row[17],
 		    $row[18],
 		    $row[19],
 		    $row[20],
 		    $row[21],
 		    $row[22]
		     		    );
  	if ($per <> "incoming") {
 	    	if ((strlen($per)) >= $len) {
 		 	            echo ("Номер - " . $per . " Длина - ". (strlen($per)). "\n");
 	    	    echo(("Минуты	- " . ($row[10])/60) ."\n");
 		    echo("Минуты округленые - " . (ceil(($row[10])/60))."\n");
 		    $valid++;
  		    dbase_add_record($dbval,$arr);
 		    dbase_pack($dbval);
      		    echo("Выполнено - ".(($i*100)/$record_numbers)."%\n");
 		    echo("==================================\n");
 		     		}else{
 		    echo ("invalid Number - " . $per . " Dlina - ". (strlen($per)). "\n");
 	    	    echo(("Minuts	- " . ($row[10])/60) ."\n");
 		    echo("Minuts after ceil - " . (ceil(($row[10])/60))."\n");
 		    $invalid++;
 		    dbase_add_record($dbinv,$arr);
 		    dbase_pack($dbinv);
 		    echo("Выполнено - ".(($i*100)/$record_numbers)."%\n");
 		    echo("==================================\n");
 		    //$invalid=array_merge($invalid,$row);
 		};
     	}else{
 	    echo ("Incoming! - " . $per . " Dlina - ". (strlen($per)). "\n");
 	    echo(("Minuts	- " . ($row[10])/60) ."\n");
 	    echo("Minuts after ceil - " . (ceil(($row[10])/60))."\n");
 	    $invalid++;
 	    dbase_add_record($dbinv,$arr);
 	    dbase_pack($dbinv);
 	    echo("Выполнено - ".(($i*100)/$record_numbers)."%\n");
 	    echo("==================================\n");
 	    //$invalid=array_merge($invalid,$row);
 	 	//echo("Выполнено - ".(($record_numbers*$i)/100)."%\n");
 	};
 	 /*echo("Vsego zapisey v fayle - ".$record_numbers."\n");
 echo("Valid zapisey - " .count($valid) ."\n");
 echo("Invalid zapisey - ".count($invalid)."\n"); 
echo("=============================================\n");*/
 }  dbase_close($db);
   };
 if($db){ echo("Всего записей в файле - ".$record_numbers."\n");
 echo("Валидных записей - " .($valid) ."\n");
 echo("Невалидных записей - ".($invalid)."\n");
 echo("=============================================\n");
 };
?>
собственно скрипт
парсер логов мини атс-ки

-~{}~ 02.02.09 15:45:

http://depositfiles.com/ru/files/93idmlbaa
файл локальные пути тока смените, не доделал.
 

hukola

Новичок
http://bugs.php.net/bug.php?id=47223 нашел, цуко млин время убил тока
 

hukola

Новичок
http://snaps.php.net/php5.2-latest.tar.gz ща соберу это и попробую

-~{}~ 02.02.09 16:19:

всё работает, всем спасибо
PHP 5.2.9-dev (cli) (built: Feb 2 2009 15:57:37)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies
hukola@laptop4ek:/tmp/php5.2-200902021130$
 
Сверху