|
 17.6 Кб |
|
| помогите доделать парсер
он заносит каждую строчку по отдельности в базу а надо
чтобы был номер потом текст
$sql2 = mysql_connect('localhost','root','');
mysql_query("SET NAMES cp1251");
mysql_select_db('solid', $sql2);
include('xlsparser.php');
$file = "01.xls";
$sheets = parse_excel($file);
$is=0;
foreach($sheets as $sheet){
print "sheet #$is\n--------\n";
foreach($sheet as $row){
foreach($row as $col){
$print= "$col|";
$echo= explode("|", $print);
print_r($echo);
mysql_query("INSERT INTO `stories` ( `id` , `catid` , `hometext` ) VALUES ('', '$is', '$col');", $sql2);
}
print"\n";
}
$is++;
}
|
подскажите пожалуйста как сделать чтолбы номер и текст шли одной строкой и номер заносился в id базы и текст
CREATE TABLE `stories` (
`id` int(11) NOT NULL auto_increment,
`catid` int(11) NOT NULL default '0',
`hometext` text,
PRIMARY KEY (`id`),
KEY `catid` (`catid`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;
|
| |
|
|
|
|
|
|
|
для: dirol
(06.04.2011 в 10:54)
| | >чтобы был номер потом текст
Правильно ли я понимаю, что номер это (или что-то другое?)
print "sheet #$is\n--------\n";
|
а текст
PS Нужно больше подробностей, так как достаточно сложно ориентироваться не имея на руках 01.xls. | |
|
|
|
|
|
|
|
для: cheops
(06.04.2011 в 11:35)
| | так файл лежит в архиве который я прикрепил | |
|
|
|
|
|
|
|
для: dirol
(06.04.2011 в 12:06)
| | Ага, увидел, сейчас повожусь... | |
|
|
|
|
|
|
|
для: dirol
(06.04.2011 в 10:54)
| | Вот что у меня получилось
<?php
// Настраиваем щадящий уровень тревожности интерпретатора
error_reporting(E_ALL & ~E_NOTICE);
// Установка соединения с базой данных
$sql2 = mysql_connect('localhost','root','');
mysql_query("SET NAMES cp1251");
mysql_select_db('solid', $sql2);
// Чистим таблицу от старых значений
$query = "DELETE FROM `stories`";
if(!mysql_query($query)) exit("Ошибка выполнения SQL-запроса ".mysql_error());
// Подключаем XLS-парсер
include('xlsparser.php');
$file = "01.xls";
$sheets = parse_excel($file);
$is=0;
foreach($sheets as $sheet)
{
foreach($sheet as $row)
{
$sql = array();
if(!empty($row[0]) && !empty($row[1]))
{
// Формируем массив для создания многострочного INSERT-запроса
$sql[] = "('NULL', '$is', '".mysql_escape_string($row[1])."')";
// Если помещать в таблицу номер id, но нужно убирать PRIMARY KEY
// с поля id, так как в XLS-таблице номера дублируются, в качестве
// PRIMARY KEY лучше создать индекс на двух столбцах id и catid
//$sql[] = "('".intval($row[0])."', '$is', '".mysql_escape_string($row[1])."')";
}
// Если есть хотя бы одна строка
if(!empty($sql))
{
// Формируем и выполняем многострочную INSERT-вставку
$query = "INSERT INTO `stories`
(`id`, `catid`, `hometext`) VALUES ".
implode(",", $sql);
if(!mysql_query($query)) exit("Ошибка выполнения SQL-запроса ".mysql_error());
}
}
$is++;
}
?>
| Вам скорее всего придется пересмотреть первичный ключ таблицы, если вы хотите, чтобы номера были теми же, что и в XLS-листе. Иначе происходит дублирование первичного ключа (либо вообще удаляйте индекс первичного ключа, либо генерируйте его автоматически, как в скрипте выше, либо стройте его по двум столбцам). | |
|
|
|