|
|
|
| Все коды перепробовала, которые сдесь писали. Но так ничего не получилось.
Помогите ,где ошибка?(переделанный пример из книги)
<?php
// Осуществляем соединение с базой данных
require_once("config.php");
if(empty($_FILES['csv']['tmp_name']))
puterror("Ошибка при отправке csv-файла");
if(!($fp = fopen($_FILES['csv']['tmp_name'],"rb")))
puterror("Ошибка при открытии отправленного файла");
// Читаем содержимое файла
$buffer = fread($fp,filesize($_FILES['csv']['tmp_name']));
// Закрываем файл
fclose($fp);
// Удаляем файл
unlink($_FILES['csv']['tmp_name']);
// Присваиваем по умолчанию
$separator = ";";
// Если передан параметр separator изменяем значение переменной $separator
$separator = $_POST['separator'];
// Если имеются пустые позиции забиваем их прочерком -
$buffer = str_replace($separator.$separator, $separator."-".$separator,$buffer);
$buffer = str_replace("\n".$separator, "\n-".$separator,$buffer);
$buffer = str_replace($separator."\n", $separator."-\n",$buffer);
// Разбиваем файл по строкам, каждую из которых заносим
// в отдельный элемент массива $strtmp
$tok = strtok($buffer,"\n");
while ($tok)
{
$tok = strtok("\n");
$strtmp[] = $tok;
}
// Начало формирования SQL-запроса на вставку данных из
// csv-файла
$insert_query = "insert into name_cat values ";
// Разбиваем строку по отдельным словам, используя
// разделитель $separator
foreach($strtmp as $value)
{
// Если строка пуста - выходим из цикла. Пустые строки могут появится,
// если в конце csv-файла находятся пустые строки.
// if(empty($value)) break;
// товар
$name = strtok($separator);
$tok=strtok($separator);
//$org_id=strtok($separator);
$org_id=substr($tok,0,strlen($tok)-1);
$org_id=str_replace(" ","", $org_id);
//print "$price=substr($tok,0,strlen($tok)-1)";
$price=str_replace(" ","", $price);
//$sub_id=strtok($separator);
$sub_id=substr($tok,0,strlen($tok)-1);
$sub_id=str_replace(" ","", $sub_id);
// Преобразуем прямые кавычки в обратные
// $name = str_replace("'","'",$name);
// Формируем и выполняем SQL-запрос на добавление позиции
$insert_query .= "(null,
'$name',
$org_id,
'$price',
$sub_id),";
}
// Из запроса $insert_query удаляем последнюю запятую
$insert_query = substr($insert_query,0,strlen($insert_query)-1);
// Удаляем предыдущие записей
$query_delete = "delete from name_cat where sub_id=21";
mysql_query($query_delete);
// Выполняем SQL-запросы
mysql_query($insert_query);
?>
|
<?php
if(!isset($button)) $button = "Добавить";
if(!isset($separator)) $separator = ";";
if(!isset($action)) $action = "addfile1.php";
?>
<table><tr><td>
<p class=boxmenu>
</p>
</td></tr></table>
<form enctype='multipart/form-data' action='<?php echo $action; ?>' method='post'>
<table>
<tr><td><p class='zag2'>файл</td><td><input size='61' class='input' type='file' name='csv'></td></tr>
<tr><td><p class='zag2'>разделитель</td><td><input size='61' class='input' type='text' name='separator' value='<?php echo $separator; ?>'></td></tr>
<tr><td></td><td><input class='button' type='submit' value='<?php echo $button; ?>'></td></tr>
</table>
</form>
|
| |
|
|
|
|
|
|
|
для: dina
(24.04.2006 в 11:38)
| | что то у меня ничего не работает!!!!!!!!
Говорит 404. Файл не найден.
Проверьте правильность введенного URL. Обратите внимание на то, что строчные и прописные буквы в написании имен файлов и каталогов различаются.
Пример 1. Чтение и вывод на экран содержания CSV-файла
<?php
$row = 1;
$handle = fopen("test.csv", "r");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "<p> $num полей в строке $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
}
fclose($handle);
?>
|
| |
|
|
|
|
|
|
|
для: dina
(24.04.2006 в 11:38)
| | На каком этапе происходит сбой? | |
|
|
|
|
|
|
|
для: cheops
(24.04.2006 в 14:41)
| | В смысле?
Я вот хотела испытать пример
Пример 1. Чтение и вывод на экран содержания CSV-файла
<?php
$row = 1;
$handle = fopen("test.csv", "r");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "<p> $num полей в строке $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
}
fclose($handle);
?>
|
Но выдает ошибку.
А это может из-за того что не php5?
А в самом первом примере, где то в начале ошибка, потому что в цикл вставляла print, но ничего не печатается | |
|
|
|
|
|
|
|
для: dina
(24.04.2006 в 14:51)
| | Странно все заработало, хотя ничего не делала.
Но в первом коде, пока не происходит запись в БД | |
|
|
|
|
|
|
|
для: dina
(24.04.2006 в 15:53)
| | Некая компиляция этих двух фрагментов.
Предполагается, что таблица table1 имеет на 1 столбец больше, чем csv-файл - самый первый столбец считается первичным ключом и генерируется автоинкрементом.
<?php
require_once("config.php");
if(!empty($_FILES['csv']['tmp_name']))
{
$name = $_FILES['csv']['name'];
if(!($fp = fopen($_FILES['csv']['tmp_name'],"rb")))
puterror("Ошибка при открытии отправленного файла");
$maxlen = 0;
$separator = $_POST['separator'];
$quotechar = $_POST['quotechar'];
if(get_magic_quotes_gpc())
{
$separator = stripslashes($separator);
$quotechar = stripslashes($quotechar);
}
while(!feof($fp))
$maxlen = max($maxlen, strlen(fgets($fp)));
fseek($fp, 0, SEEK_SET);
// Читаем содержимое файла
$lines = 0;
while(($row = fgetcsv($fp, $maxlen, $separator, $quotechar)) !== false)
{
;
$query = 'INSERT INTO table1 values (null';
foreach($row as $val)
$query .= ',"'. mysql_escape_string($val). '"';
$query .= ')';
$res = mysql_query($query);
if(!$res) die("error in insert request: [$query] ". mysql_error());
$lines += mysql_affected_rows();
}
fclose($fp);
echo "<br><br>Добавлено $lines строк из файла $name <br><br>\r\n";
}
if(!isset($separator)) $separator = ";";
if(!isset($quotechar)) $quotechar = '"';
?>
<table><form enctype=multipart/form-data method=post>
<tr><td><p class='zag2'>файл</td><td><input size='61' class='input' type='file' name='csv'></td></tr>
<tr><td><p class='zag2'>разделитель</td><td><input size='1' class='input' type='text' name='separator' value='<?php echo $separator; ?>'></td></tr>
<tr><td><p class='zag2'>символ кавычки</td><td><input size='1' class='input' type='text' name='quotechar' value='<?php echo $quotechar; ?>'></td></tr>
<tr><td></td><td><input class='button' type='submit' value='Add file'></td></tr>
</form></table>
|
| |
|
|
|