Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Перенос базы из ShopScript в OpenCart
Форумы портала PHP.SU » » Хранение данных, их вывод и обработка » Перенос базы из ShopScript в OpenCart

Страниц (1): [1]
 

1. -=1100=- - 21 Августа, 2014 - 11:54:27 - перейти к сообщению
Тут Переносил один магазин с shopscript в opencart и для удобство написал маленький скрипт который помог мне сделать все гораздо быстрее. Данный скрипт можно применить для любой системы. Его задача брать из "старой" таблицы структуру и данные, создавать нужную структуру для новой таблицы и формировать файлик с новой структурой и данными для нового сайта.
вот сам скрипт.
Перенос осуществляется потаблично.

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. header("Content-Type: text/html; charset=utf-8");
  4.  
  5.  
  6. /*
  7.  * Берем таблицу из строго сайта и экспортируем ее в php массив
  8.  * Получаем файл с названием таблицы.
  9.  * Название файла (таблицы)  пишем в 11 строку. $file=""
  10.  * */
  11.  
  12. $file="SC_categories";
  13. ?>
  14.  
  15. <style>
  16.         th{
  17.                 border-right:solid 1px #E8BA8D;
  18.                 font-weight:normal;
  19.                 font-size:12px;
  20.                 padding:0 3px;
  21.                 }
  22. </style>
  23. <?PHP
  24.  
  25. // Подключается наш файл
  26. include $file.".php";
  27.  
  28. /*
  29.  * Сам массив...
  30.  * Ключ массива - столбец новой таблицы
  31.  * Значение - столбец старой таблицы
  32.  * сначала перечисляются все столбцы которые есть в старой и новой таблице.
  33.  * Пример: есть продукт в старой таблицы поле с его id productID а в новой product_id,
  34.  * пишем "product_id"=>"productID".
  35.  * Так же можно делать так. В новой таблице появилась поле article_product, но в старой его нет, а в новой оно обязательно. Тогда заполним его значениями из из столбца productID. "article_product"=>"productID"
  36.  * И еще если в новой таблице есть поля который нет в старой можно просто сделать этому полю значение по умолчанию
  37.  * "language_id"=>"2" (значение должно быть обязательно в кавычках )
  38.  * */
  39.  
  40. $category=array(
  41.         "category"=>"categoryID",
  42.         "name"=>"name_ru",
  43.         "sort"=>"sort_order",
  44.         "language_id"=>"2"
  45. );
  46.  
  47. // Название новой таблицы
  48.  
  49. $table="categories";
  50.  
  51. /*
  52.  *Для себя выводил таблицу но можно ее убрать
  53.  * */
  54.  
  55.         //echo "<table style='width:100%'>";
  56.         $n=true;
  57.         $cols="INSERT INTO `".$table."` (";
  58.         $val=" VALUES ";
  59.         unset($$file[0]);
  60.         foreach ($$file as $v){
  61.                 if($n){
  62.                         //echo "<tr>";
  63.                         foreach ($v as $k=>$e){
  64.                                 if(in_array($k,$category)){
  65.                                         //echo "<th>".$k."</th>";
  66.                                         $cols .= "`".array_search($k,$category)."`,";
  67.                                         $product[array_search($k,$category)]=$k;
  68.                                         unset($category[array_search($k,$category)]);
  69.                                 }
  70.                         }
  71.                         foreach ($category as $k => $v3){
  72.                                 $cols .= "`".$k."`,";
  73.                         }
  74.                 }
  75.                 $n=false;
  76.                 //echo "<tr>";
  77.                 $val .= "(";
  78.                 foreach ($v as $k => $v2){
  79.                         if(in_array($k,$product)){
  80.                                 //echo "<td>".$v2."</td>";
  81.                                 $val .= "'".htmlspecialchars(strip_tags($v2,"<a>,<p>"))."',";
  82.                         }
  83.                 }
  84.  
  85.                 foreach ($category as $k => $v3){
  86.                         if(!empty($v[$v3])){
  87.                                 $val .= "'".htmlspecialchars(strip_tags($v[$v3],"<a>,<p>"))."',";
  88.                         }else{
  89.                                 $val .= "'".htmlspecialchars(strip_tags($v3,"<a>,<p>"))."',";
  90.                         }
  91.                 }
  92.                 $val=substr($val,0,-1);
  93.                 $val .="), ";
  94.  
  95.                 //echo "</tr>";
  96.         }
  97.  
  98.         $cols=substr($cols,0,-1).")";
  99.         $val = substr($val,0,-2);
  100.         //echo "</table>";
  101.  
  102.  
  103.  
  104. // Выводим наш запрос для проверки
  105.         echo $cols.$val;
  106. // Создадим каталок sql вручную
  107. // И пишем в него файл с названием новой таблицы для последующего его импорта.
  108.         file_put_contents("sql/".$table.".sql",$cols.$val);
  109.  
  110. ?>
  111.  


Может кому пригодится.

 

Powered by ExBB FM 1.0 RC1