Продаю парсер с сайта komus.ru для bitrix и любых других cms

2 Октябрь 2014 Нет комментариев

Парсер умеет копировать целиком весь каталог товаров с сайта komus.ru, сохраняя всю структуру каталога, свойства товара сохраняет в отдельную таблицу, что позволяет формировать полноценный поиск по свойствам товара, копирует картинки к товару. Так же парсер умеет копировать всю структуру подбора картриджей с сайта komus.ru, что позволит построить такой же компонент для подбора картриджей.

Парсер может парсить komus.ru как по прайсу комуса, так и напрямую с сайта.

Кроме копирования данных парсер так же обновляет наличие товара в уже ранее скопированном каталоге на вашем сайте, обновляет цены – можно задать ваш алгоритм формирования цены.

Пишите на phplancer@phplancer.ru

Поделиться в соц. сетях

Опубликовать в Google Buzz
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Categories: Новости Tags:

Импорт mysql дампа средствами php

26 Апрель 2013 Нет комментариев

В моем примере база была InnoDB, поэтому пример привожу с ее фишками:

//читаем файл с дампом
$str = file_get_contents("dump.sql");

//если есть CREATE TABLE, тогда создаем таблицы
if( preg_match_all("/\-\- Table.*?\s\-\-\s(.*?)\-\-/s", $str, $p) ) {
$er = false;
foreach( $p[1] as $v ) {

if( trim($v) != '' ) {

if(!mysql_query(trim($v), $link)) {

echo '<strong style="color: red;">Ошибка запроса:'.$v.'</strong>';

$er = true;

}

}

}

}

//если есть инсерты, инсертим ;)
if(preg_match_all("/\-\- Dumping data.*?\s\-\-\s(.*?)\-\-/s", $str, $p)) <span style="font-size: 13px;">{</span>

foreach( $p[1] as $v ) {

if( trim($v) != '' ) {

if(!mysql_query(trim($v), $link)) {

echo '<strong style="color: red;">Ошибка запроса:'.$v.'</strong>';

$er = true;

}

}

}

}

//создаем связи между таблицами
if(preg_match_all("/\-\- Constraints.*?\s\-\-\s(.*?)\-\-/s", $str, $p)) <span style="font-size: 13px;">{</span>

foreach( $p[1] as $v ) {

if( trim($v) != '' ) {

if(!mysql_query(trim($v), $link)) {

echo '<strong style="color: red;">Ошибка запроса:'.$v.'</strong>';

$er = true;

}

}

}

}

if( $er !== false ) {
echo '<strong style="color: green;">'.gettext("Дамп базы данных установлен.").'</strong>';
}
else {
echo '<strong style="color: green;">'.gettext("Дамп базы данных установлен с ошибками.").'</strong>';
}

Поделиться в соц. сетях

Опубликовать в Google Buzz
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Categories: Новости Tags: ,

Подсчет записей в базе данных для пагинатора

27 Август 2012 Нет комментариев

При создании пагинатора или вывода количества записей для данного запроса на странице обычно используется 2 одинаковых запроса SELECT. Первым запросом мы считаем общее кол-во записей, соот-щих данным условием SELECT COUNT(*)… , вторым запросом выдергиваем кол-во записей нужных для этой страницы, используя LIMIT. В итоге мы получаем два огромных медленных запроса. Есть решение как сделать все это действие 1 большим запросом и 1 маленьким:

SELECT SQL_CALC_FOUND_ROWS * FROM table WHERE column > 1 LIMIT 0, 50;

Первым делаем наш запрос, что раньше шел вторым, т е тот что с лимитом, но добавляем в него SQL_CALC_FOUND_ROWS
Далее делаем запрос, который вернет общее кол-во записей, соот-щих условию предыдущего запроса, без учета LIMIT:
SELECT FOUND_ROWS();
Второй запрос должен выполняться сразу после первого.

Поделиться в соц. сетях

Опубликовать в Google Buzz
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Categories: Новости Tags:

INSERT UPDATE в одном флаконе. Часть 2.

27 Август 2012 Нет комментариев

В части 1 я уже описывал как делать 1 запрос вместо двух используя уникальный ключ, но что делать, когда такой ключ невозможен? Решение – это составной уникальный ключ из полей таблицы.

Например есть некая таблица, где хранятся значения дополнительных параметров для товара, в таблице tFieldValue есть поля:

valueId

value

fieldId – ключ, указывающий значение какого параметра храним

goodId – ключ, указывающий на товар.

Далее при сохранении карточки товара например у нас должны сохраняться и дополнительные параметры, т е надо сначало таблице tFieldValue проверить есть ли там значение для поля fieldId у товара goodId, если есть, то обновить поле value, если нет то добавить новую запись.

Чтобы решить эту задачу в 1 запрос в таблице tFieldValue из полей fieldId и goodId делаем 1 составной уникальный ключ, в phpmyadmin в структуре таблице выделяем эти два поля галочкой и нажимаем кнопку с уникальным ключом, либо запросом:

ALTER TABLE ` tFieldValue` ADD UNIQUE (

`fieldId` ,
`goodId`

);

Далее работаем с этой таблице как описано в части 1:

INSERT INTO `tFieldValue` (value,fieldId,goodId ) VALUES (‘8′, 120,1)
ON DUPLICATE KEY UPDATE value=’8′

Mysql будет искать запись в таблице tFieldValue с полем fieldId = 120 ,goodId=1, если найдет, то обновит value, если не найдет, тогда добавит новую запись.

Поделиться в соц. сетях

Опубликовать в Google Buzz
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Categories: Новости Tags:

ubuntu apache2 virtual hosts bash script

Перерыл кучу скриптом, выкладываю единственный скрипт на баше, который удалось найти, который нормально создает виртуальный хосты в ubuntu:

#!/bin/bash

### Checking for user
if [ "$(whoami)" != 'root' ]; then
echo “You have no permission to run $0 as non-root user. Use sudo !!!”
exit 1;
fi

### Configure email and vhost dir
email=’prasad@chaugule.in’ # email address of administrator
vhroot=’/etc/apache2/sites-available’ # no trailing slash
iserror=’no’
hosterror=”
direrror=”

# Take inputs host name and root directory
echo -e “Please provide hostname. e.g.dev,staging”
read hostname
echo -e “Please provide web root directory. e.g. /websites/dev,e.g. /websites/staging”
read rootdir

### Check inputs
if [ "$hostname" = "" ]
then
iserror=”yes”
hosterror=”Please provide domain name.”
fi

if [ "$rootdir" = "" ]
then
iserror=”yes”
direrror=”Please provide web root directory name.”
fi

### Displaying errors
if [ "$iserror" = "yes" ]
then
echo “Please correct following errors:”
if [ "$hosterror" != "" ]
then
echo “$hosterror”
fi

if [ "$direrror" != "" ]
then
echo “$direrror”
fi
exit;
fi

### check whether hostname already exists
if [ -e $vhroot"/"$hostname ]; then
iserror=”yes”
hosterror=”Hostname already exists. Please provide another hostname.”
fi

### check if directory exists or not
if ! [ -d $rootdir ]; then
iserror=”yes”
direrror=”Directory provided does not exists.”;
fi

### Displaying errors
if [ "$iserror" = "yes" ]
then
echo “Please correct following errors:”
if [ "$hosterror" != "" ]
then
echo “$hosterror”
fi

if [ "$direrror" != "" ]
then
echo “$direrror”
fi
exit;
fi

if ! touch $vhroot/$hostname
then
echo “ERROR: “$vhroot”/”$hostname” could not be created.”
else
echo “Virtual host document root created in “$vhroot”/”$hostname
fi

if ! echo ”
ServerAdmin $email
ServerName $hostname
ServerAlias $hostname www.$hostname
DocumentRoot $rootdir

AllowOverride All

AllowOverride All

ErrorLog /var/log/apache2/$hostname
LogLevel error
CustomLog /var/log/apache2/$hostname custom
” > $vhroot/$hostname
then
echo “ERROR: the virtual host could not be added.”
else
echo “New virtual host added to the Apache vhosts file”
fi

### Add hostname in /etc/hosts
if ! echo “127.0.0.1 $hostname” >> /etc/hosts
then
echo “ERROR: Not able write in /etc/hosts”
else
echo “Host added to /etc/hosts file”
fi

### enable website
a2ensite $hostname

### restart Apache
/etc/init.d/apache2 reload

### give permission to root dir
chmod 755 $rootdir

if ! touch $rootdir/phpinfo.php
then
echo “ERROR: “$rootdir”/phpinfo.php could not be created.”
else
echo “”$rootdir”/phpinfo.php created.”
fi
if ! echo “” > $rootdir/phpinfo.php
then
echo “ERROR: Not able to write in file “$rootdir”/phpinfo.php. Please check permissions.”
else
echo “Added content to “$rootdir”/phpinfo.php.”
fi

# show the finished message
echo “Complete! The new virtual host has been created.
To check the functionality browse http://”$hostname”/phpinfo.php
Document root is “$vhroot”/”$hostname

Поделиться в соц. сетях

Опубликовать в Google Buzz
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Categories: Новости Tags:

Что делать, если имена таблиц mysql переводятся в нижний регистр в Windows

10 Февраль 2012 Нет комментариев

В настройках mysql в файле my.ini надо добавить строку lower_case_table_names=0, тогда таблицы начнут создаваться в нужном вам регистре. Подробнее можно прочитать тут: http://www.mysql.ru/docs/man/Name_case_sensitivity.html

Поделиться в соц. сетях

Опубликовать в Google Buzz
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Categories: Новости Tags: ,

Что делать если не работает Apache в windows7, заблокирован 80 порт

9 Февраль 2012 Нет комментариев
  1. заходим в regedit (пуск – выполнить – regedit)
  2. идем в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP
  3. добавляем новую запись DWORD (32-bit)
  4. Называем ее NoRun
  5. два раза кликаем по записи и меняем значение на 1
  6. сохраняем и перезагружаем компьютер

 

Поделиться в соц. сетях

Опубликовать в Google Buzz
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Categories: Новости Tags: ,

Таймер обратного отсчета на javascript

20 Декабрь 2011 Нет комментариев

Выкладываю код таймера отсчета времени до определенной даты, который считает дни, часы, секунды.

 function timer( start, finish, step )
 {
      var now = new Date(start+step);
      var newTime = new Date(finish);
      var totalRemains = (newTime.getTime()-now.getTime());
      if (totalRemains>1)
      {
          var RemainsSec=(parseInt(totalRemains/1000));
          var RemainsFullDays=(parseInt(RemainsSec/(24*60*60)));
          var secInLastDay=RemainsSec-RemainsFullDays*24*3600;
          var RemainsFullHours=(parseInt(secInLastDay/3600));
          if (RemainsFullHours<10){RemainsFullHours="0"+RemainsFullHours};
          var secInLastHour=secInLastDay-RemainsFullHours*3600;
          var RemainsMinutes=(parseInt(secInLastHour/60));
          if (RemainsMinutes<10){RemainsMinutes="0"+RemainsMinutes};
          var lastSec=secInLastHour-RemainsMinutes*60;
          if (lastSec<10){lastSec="0"+lastSec};
          var mcend = new Date(finish);
          var mcnow = now.getTime();
        
         
          $("#timer").html("Осталось: "+RemainsFullDays+" дней "+RemainsFullHours+":"+RemainsMinutes+":"+lastSec);
          step += 1000;
          setTimeout("timer()",1000);
      } 
      else {
	      $("#timer").html("Время истекло.");
      }
  }
  $(document).ready(function(){
      timer(<?php echo time()*1000?>,<?php echo $finish*1000;?>,0);
   });

start – текущее время в миллисекундах
finish – время окончания в миллисекундах
step – шаг отсчета в миллисекундах

Поделиться в соц. сетях

Опубликовать в Google Buzz
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Categories: Новости Tags:

Декодер паролей Total Commander

18 Август 2011 Нет комментариев

Столкнулся с проблемой, когда нужен пароль от ftp для редактора, а пароля нет, есть только вбитый  в Total Commander, но оттуда его не вытащить, нашел в сети отличную программу, решающую проблему по получению пароля из Total Commander.

Тотал коммандер хранит свои фтп доступы в файле wcx_ftp.ini, он лежит в C:\Program Files\Total Commander\

Открываем его блокнотом, ищем нужный доступ, копируем зашифрованный пароль, вставляем в программу и получаем пароль.

Скачать программу для декодирования (получения) паролей из Total Commander

 

Поделиться в соц. сетях

Опубликовать в Google Buzz
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Categories: Новости Tags:

webmoney – как отключить sms подтверждения

24 Январь 2011 Нет комментариев

Начался новый рабочий год, шалко валко деньги на кошелек вебмани потекли, но при оплате ими появилась новая фишка – sms подтверждения. Вещь удобная для личного кошелька, но когда кошелек корпоративный и зарегистрирован не на тебя, то такая фишка копец как неудобно. Чтобы выключить sms подтверждения webmoney делаем простые телодвижения:

  1. Идем по ссылке https://security.webmoney.ru/asp/setsmssimpletrans.asp
  2. Авторизовываемся через квипер
  3. На открывшейся странице жмем на кнопку «ВЫКЛючить подтверждение через SMS»
  4. Получаем последнюю смску с кодом, жмем «Авторизоваться»
  5. Видим сообщение об отключении подтверждений по смс.
  6. Живем спокойно

Поделиться в соц. сетях

Опубликовать в Google Buzz
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Categories: Новости Tags: