Скрипт для составления SQL запросов по XLSX файлу

22.12.2015 12:44:31

Читает XLSX файл с перечнем мета тэгов и генерирует файл с SQL для обновления метатегов.

01.php (Download)

 <??>
<!DOCTYPE HTML>
<html lang="ru">
<head>
	<meta charset="UTF-8">
	<title></title>
</head>
<body>
<?
  error_reporting(E_ALL);
  ini_set('display_errors', 'On');


    function conv_obj_UTF_2_1251(&$OBJ)
    {
      if (is_object($OBJ))
      {
        $class_vars = get_object_vars($OBJ);
        foreach ($class_vars as $name => $value)
        {
          if (is_string($value))
          {
            $val = '';
            try
            {
              @$val = iconv("UTF-8", "windows-1251", $value);
            }
            catch (Exception $e)
            {
              echo 'Выброшено исключение: ',  $e->getMessage(), "\n";
            }

            if ($val)
            {
              $OBJ->$name = $val;
//              echo 'ok<hr>';
            }
          }
        }
      }
      else
      {
        $OBJ = iconv("UTF-8", "windows-1251", $OBJ);
      }

      return $OBJ;
    }

	function makeSql($aItem)
	{
	  $sRet = '';
	  switch ($aItem['type']) 
	  {
	    case 'aux':
          $sRet = '
UPDATE `ab_aux_pages` 
SET `meta_title` = \''.$aItem['title'].'\', `meta_description` = \''.$aItem['text'].'\' 
WHERE `aux_page_ID`='.$aItem['id']
;
	    break;

	    case 'info':
          $sRet = '
UPDATE `ab_info_pages`
SET `meta_title` = \''.$aItem['title'].'\', `meta_description` = \''.$aItem['text'].'\' 
WHERE `info_page_ID`='.$aItem['id']
;
	    break;


	    case 'prod':
          $sRet = '
UPDATE `ab_products`
SET `name` = \''.$aItem['title'].'\', `meta_description` = \''.$aItem['text'].'\' 
WHERE `productID`='.$aItem['id']
;
	    break;

	
	    case 'cat':
          $sRet = '
UPDATE `ab_categories`
SET `adtitle_group` = \''.$aItem['title'].'\', `meta_description` = \''.$aItem['text'].'\' 
WHERE `categoryID`='.$aItem['id']
;
	    break;
	  
	    default:
	  
	    break;
	  }
	  
	  return $sRet.";\n";
	}
    

	function myCut($sIn, $sType)
	{
	  $p0 = strpos($sIn, '-');
	  $p1 = strpos($sIn, $sType);
	  $len = strlen($sType);

	  return substr($sIn, $p1 + $len, $p0 - $p1 - $len);
	}


	function parseUrl($sIn)
	{
	  $aRet = array();
	  
	  $aRet['type'] = '';
  
	  if(strpos($sIn, 'aux') !== FALSE)
	  {
	    $aRet['type'] = 'aux';
	  }

	  if(strpos($sIn, 'cat') !== FALSE)
	  {
	    $aRet['type'] = 'cat';
	  }

	  if(strpos($sIn, 'info') !== FALSE)
	  {
	    $aRet['type'] = 'info';
	  }

	  if(strpos($sIn, 'prod') !== FALSE)
	  {
	    $aRet['type'] = 'prod';
	  }

      if(!$aRet['type'])
	  {
	    die('<b>:'. $sIn.' No Type!!!</b>');
	  }

	  $aRet['id'] = myCut($sIn, $aRet['type']);

	  return $aRet;
	}

  date_default_timezone_set('Europe/Moscow');
  require_once ('lib/PHPExcel.php');
  
  
  $oExcel = PHPExcel_IOFactory::load('in.xlsx');
  
  $sOutFile = 'result.txt';
  file_put_contents($sOutFile, '');
?>
<table border="1">
<?
  for ($i=1; $i < 344; $i++) // 345
  {
    $sLink = $oExcel->getActiveSheet()->getCell('A'.$i)->getValue();
    $sTitle = $oExcel->getActiveSheet()->getCell('B'.$i)->getValue();
    $sTitle = conv_obj_UTF_2_1251($sTitle);
    $sText = $oExcel->getActiveSheet()->getCell('C'.$i)->getValue();
    $sText = conv_obj_UTF_2_1251($sText);
    
    $aTmp = parseUrl($sLink);
    $aTmp['title'] = $sTitle;
    $aTmp['text'] = $sText;  
    
	  if(strpos($aTmp['id'], '_') !== FALSE)
	  {
	    continue;
	  }

    $sSql = makeSql($aTmp);
    if($sSql)
	{
      file_put_contents($sOutFile, file_get_contents($sOutFile) . $sSql);
	}
?>
	<tr>
		<td><?=$i;?></td>
		<td><?=$sLink;?></td>
		<td><?=$aTmp['id'];?></td>
		<td><?=$aTmp['type'];?></td>
<?/*
		<td><?=$sTitle;?></td>
		<td><?=$sText;?></td>
*/?>		
	</tr>
<?
  }
?>
</table>

	
</body>
</html>
<?














































































Для работы нужен PHPExcel

Скачать

Есть системные пометки.

Яндекс.Метрика