Excel - php - MySQL

kolyazdv

Новичок
Excel - php - MySQL

помогите пожалуйста!!!

есть прайс сделанный в Excel'e надо впихнуть его в БД

но проблема я не знаю как работать с Excel-документом с помощью php... :(

вычитал что нада использовать

Spreadsheet_Excel_Reader();

дайте линк где есть дока на эту тему иль киньте маленкий пример как прочитать с например с 3-х ячеек А1, А2, Е4 в строку
 

kolyazdv

Новичок
спасибо... попробывал вроде работает только вот проблема...

выскакивают около полутысячи предупреждений такого плана

Notice: Use of undefined constant Type_BOOLERR - assumed 'Type_BOOLERR' in z:\home\localhost\www\kpss\reader.php on line 571

но то бог с ним.... так еще руские буквы заменяет на '!"  ...

вот код

include("reader.php");

$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('CP1251');
$data->read("1234.xls");


for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) {
echo "\"".$data->sheets[0]['cells'][$i][$j]."\",";
}
echo "\n";

}
 

kolyazdv

Новичок
а как насчет кодировки?

не подскажите какая используется в Excel'e

если не CP1251? иль как надо сделать чтоб нормально отображалися руские буквы....
 

Dovg

Продвинутый новичок
вот только что
написал в excele русский текст, сохранил файл, а потом в стандартном view'е ТС начал листать кодировки
когда дошел до unicode, то стали промелькивать русские буквы
 

AmdY

Пью пиво
Команда форума
проблемма не в exel, а в кодировке в которой ты выдаёшь страницу, небось в UTF-8 ;)
можно использовать iconv
 

kolyazdv

Новичок
только вот проблемка у мня денвер
и на использование этой функции
$string = iconv(BROWSER_CHARSET, 'UTF-8', $string);
echo $string;


ругаеться

Fatal error: Call to undefined function: iconv() in
 

AmdY

Пью пиво
Команда форума
$string = iconv('CP1251', BROWSER_CHARSET, $string); - так правильнее.
Денвер, :). попробуй установить iconv.
Если ты вин-пользователь. обрати внимание на colinux+debian, тестируемая система должна работать на платформе linux, а debian обладает достаточно простой системой установки пакетов.
 

kolyazdv

Новичок
помогите все равно ничего не получилося... :(

как еще мона кроме iconv переобразовать в человечиский вид даные?

так как даже в БД не добовляеться выдает ошибку

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '!" ', '', '', 11, 'null.jpg', '', 'n')' at line 1
 

kolyazdv

Новичок
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('CP1251');
$data->read("1234.xls");

$string="";
$sql=""; $k=3;
for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) {
echo "\"".$data->sheets[0]['cells'][$i][$j]."\",";
$string.="\"".$data->sheets[0]['cells'][$i][$j]."\",";

}
$sql=$data->sheets[0]['cells'][$i][1];
echo $sql;
echo "<br>";
$k++;
addslashes($sql);
echo utf8_decode ($sql);
db_query("INSERT INTO tovar ( id, id_kategor, name, opis) VALUES (".$k.", 1, '".$sql."')") or die (db_error());
}

вот код уже и кавычки добавил и кодировку разную ставил ничего всеравно не получаеться!

подскажите как решить эту задачу
 

AmdY

Пью пиво
Команда форума
сделай echo инсерта и пакажи, что у тебя вставляется, попробуй это вставить через phpmyadmin
 

kolyazdv

Новичок
инсерт работает когда заместо $sql вставляю обычный текст...
и в phpmyadmin работает.
ругаеться на квадратики '!" "'!"  и даже

addslashes($sql);
но наверно сначала надо перевести строку в человеческий вид а потом вставлять
 

AmdY

Пью пиво
Команда форума
setOutputEncoding('CP1251'); - это здесь нипричём, просто нужен iconv, я буквально вчера юзал Spreadsheet_Excel_Reader, правда мне кирилица была ненужна, но посмотрев эту тему добавил iconv. Всё работате замечательно.
 

AmdY

Пью пиво
Команда форума
$data = new Spreadsheet_Excel_Reader(); - а можно было писать свой класс, а не использовать ГОТОВОЕ решение. iconv - быстрее и правильнее.
 

kolyazdv

Новичок
что означает

Notice: Use of undefined constant Type_BOOLERR - assumed 'Type_BOOLERR' in z:\home\localhost\www\1\reader.php on line 573

и

Notice: Undefined offset: 18 in z:\home\localhost\www\1\index.php on line 38
"",
Notice: Undefined offset: 18 in z:\home\localhost\www\1\index.php on line 38
"",
и заместо цыфр получаю нули...
а если их делаю в текстовый формат то - ""

а когда делаю со всех чисел текстовый формат а потом прописую руцями числа(подписует мне что число сохранено как текс) - то это число оно и выводит... а остальные нет :( чего ему еще тут надо?

p.s.
а насчет руских букв то хватило и

$data->setOutputEncoding('CP1251');

просто нада было подключить модули iconv и перезагрузить апач... что я сразу не сделал...
 

Vallar_ultra

Любитель выпить :)
AmdY

>сделай echo инсерта и пакажи, что у тебя вставляется, попробуй это вставить через phpmyadmin

Это я вообще не понял к чему было сказано.

>я буквально вчера юзал Spreadsheet_Excel_Reader,
>а можно было писать свой класс, а не использовать ГОТОВОЕ решение

Зачем противоречишь сам себе? А про велосипед с квадратными колесами тебе тут многие все грамотно объяснят.
 
Сверху