Update Pali Text Use CSV
Home
$from";
if(($handle=fopen("filelist.csv",'r'))!==FALSE){
while(($filelist[$fileNums]=fgetcsv($handle,0,','))!==FALSE){
$fileNums++;
}
}
if($to==0 || $to>=$fileNums) $to=$fileNums-1;
$FileName=$filelist[$from][1].".htm";
$fileId=$filelist[$from][0];
$fileId=$filelist[$from][0];
$dirLog=_DIR_LOG_."/";
$dirDb="/";
$inputFileName=$FileName;
$outputFileNameHead=$filelist[$from][1];
$bookId=$filelist[$from][2];
$vriParNum=0;
$wordOrder=1;
$dirXmlBase=_DIR_PALI_CSV_."/";
$dirPaliTextBase=_DIR_PALI_HTML_."/";
$dirXml=$outputFileNameHead."/";
$xmlfile = $inputFileName;
echo "doing:".$xmlfile."
";
$log=$log.date("Y-m-d h:i:sa").",$from,$FileName,open\r\n";
$arrInserString=array();
// 打开vri html文件并读取数据
$pali_text_array=array();//vri text
if(($fpPaliText=fopen($dirPaliTextBase.$xmlfile, "r"))!==FALSE){
while(($data=fgets($fpPaliText))!==FALSE){
array_push($pali_text_array,$data);
}
fclose($fpPaliText);
echo "pali text load:".$dirPaliTextBase.$xmlfile."
";
}
else{
echo "can not pali text file. filename=".$dirPaliTextBase.$xmlfile;
}
// 打开csv文件并读取数据
$inputRow=0;
if(($fp=fopen(_DIR_PALI_TITLE_."/".($from+1)."_title.csv", "r"))!==FALSE){
while(($data=fgetcsv($fp,0,','))!==FALSE){
if($inputRow>0){
$params=$data;
array_push($arrInserString,$params);
}
$inputRow++;
}
fclose($fp);
echo "单词表load:".$dirXmlBase.$dirXml.$outputFileNameHead.".csv
";
}
else{
echo "can not open csv file. filename=".$dirXmlBase.$dirXml.$outputFileNameHead.".csv";
}
if((count($arrInserString)) != count($pali_text_array)-2){
$log=$log."$from, $FileName,error,文件行数不匹配 csv = ".(count($arrInserString)-1) ." pali_text_array=".(count($pali_text_array)-2)." \r\n";
}
$book=$from+1;
//计算段落信息,如上一段
PDO_Connect("sqlite:"._FILE_DB_PALITEXT_);
$query="select * from pali_text where book = '$book' ";
$title_data = PDO_FetchAll($query);
echo "Paragraph Count:".count($title_data)."
";
$paragraph_count = count($title_data);
// 开始一个事务,关闭自动提交
$PDO->beginTransaction();
$query ="UPDATE pali_text SET level = ? , toc = ? , chapter_len = ? , next_chapter = ?, prev_chapter=? , parent= ? , chapter_strlen = ? WHERE book=? and paragraph=?";
$stmt = $PDO->prepare($query);
$paragraph_info = array();
array_push($paragraph_info,array($from,-1,$paragraph_count,-1,-1,-1));
for($iPar=0;$iPar < count($title_data); $iPar++){
$title_data[$iPar]["level"] = $arrInserString[$iPar][3];
}
for($iPar=0;$iPar < count($title_data); $iPar++){
$book=$from+1;
$paragraph=$title_data[$iPar]["paragraph"];
if($title_data[$iPar]["level"]==8){
$title_data[$iPar]["level"]=100;
}
$curr_level=$title_data[$iPar]["level"];
$length=-1;
for($iPar1=$iPar+1;$iPar10){
for($iPar1=$iPar-1;$iPar1>=0; $iPar1--){
if($title_data[$iPar1]["level"]==$curr_level){
$prev=$title_data[$iPar1]["paragraph"];
break;
}
}
}
$next=-1;
if($iPar0){
for($iPar1=$iPar-1;$iPar1>=0; $iPar1--){
if($title_data[$iPar1]["level"]<$curr_level){
$parent=$title_data[$iPar1]["paragraph"];
break;
}
}
}
//计算章节包含总字符数
$iChapter_strlen = 0;
for($i = $iPar ; $i < $iPar+$length; $i++ ){
$iChapter_strlen += $title_data[$i]["lenght"];
}
$newData=array(
$arrInserString[$iPar][3],
$arrInserString[$iPar][5],
$length,
$next,
$prev,
$parent,
$iChapter_strlen,
$book,
$paragraph
);
$stmt->execute($newData);
if($curr_level>0 && $curr_level<8){
array_push($paragraph_info,array($book,$paragraph,$length,$prev,$next,$parent));
}
}
// 提交更改
$PDO->commit();
if (!$stmt || ($stmt && $stmt->errorCode() != 0)) {
$error = PDO_ErrorInfo();
echo "error - $error[2]
";
$log=$log."$from, $FileName, error, $error[2] \r\n";
}
else{
$count=count($title_data);
echo "updata $count paragraph info recorders.
";
echo count($paragraph_info)." Heading
";
}
//段落信息结束
$myLogFile = fopen(_DIR_LOG_."/db_update_palitext.log", "a");
fwrite($myLogFile, $log);
fclose($myLogFile);
?>
齐活!功德无量!all done!";
}
else{
echo "";
echo "正在载入:".($from+1)."——".$filelist[$from+1][0];
}
?>