reki-ozera 0 Опубликовано: 10 декабря 2010 Рассказать Опубликовано: 10 декабря 2010 (изменено) Делаю сайт http://reki-ozera.ru который будет иметь очень большую базу данных, все статьи будут размещаться как новости - база в CSV файле Кучу всего перерыл и что то собрал вроде этого... 1. файл (import.php) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title>Импорт данных из CSV файла в базу DLE</title> </head> <body> <form action="csv.php" method="post" enctype="multipart/form-data"> <label>Выберите файл для импорта:</label><br> <input name="file" type="file" size="50"><br> <input name="Load" type="submit" value="Load"> </form> </body> </html> 2. файл (csv.php) <?php $db = mysql_connect ("localhost","USER","PASS"); mysql_select_db ("DBNAMR",$db); ?> <?php $url = $_FILES["file"]["name"]; echo 'Запись из файла: <b>'.$url.'</b><br>'; // Имя файла $file_exp = explode(".", $_FILES["file"]["name"]); if ($file_exp[1] != "csv") die("Неправильный формат файла."); // Допустимы файлы только с расширением csv $handle = fopen("tmp/".$url, "r"); // Файл csv необходимо положить в папку tmp while ($data = fgetcsv($handle, 10000, ";")) { $sql = mysql_query ("INSERT INTO dle_post (`date`, `autor`, `short_story`, `full_story`, `xfields`, `title`, `keywords`, `category`, `alt_name`, `allow_comm`, `approve`, `allow_main`, `tags`) values ('$thistime', 'reki-ozera', '$data[2]', '$data[3]', '', '$data[5]', '$data[6]', '3', '', '1', '1', '0', 'по, новости')" ); $add_time = time()-5; $thistime = date ("Y-m-d H:i:s", $add_time); } echo "Загрузка прошла успешно!<br>"; // Всё что в запросе, меняем на свои данные fclose ($handle); // Ниже на экран выводятся спарсенные значения // echo '<br><br><b>Все записи:</b><br>'; echo '<div style="font-size:10px">'; $row = 1; $fp = fopen ("tmp/".$url,"r"); while ($data = fgetcsv ($fp, 10000, ";")) { $num = count ($data); print "<p> $num поля в линии $row: <br>"; $row++; for ($c=0; $c < $num; $c++) { print $data[$c] . "<br>"; } } fclose ($fp); echo "</div>"; ?> 3. папка (tmp) в него надо бросить файл csv который надо будет импортировать... Заходим сайт/import.php Выбираем ваш CSV файл... он должен быть и в папке на сайте... Потом импортируем... Иногда правильно собирается иногда вообще не понятно как работает, потом знаю у меня неправильно оформлен доступ к БД надо правильно выправить... ребят - помогите...считай все сделал.... Изменено 10 декабря 2010 пользователем reki-ozera Цитата Ссылка на сообщение Поделиться на других сайтах
zgr 72 Опубликовано: 10 декабря 2010 Рассказать Опубликовано: 10 декабря 2010 Глянул - красивый сайтик, только подвал разъехался (разорван) и шапка некрасиво слева. На демке ограничения - много не сделаешь... Глянул пример: http://php.net/manual/en/function.fgetcsv.php , там пишут "!==FALSE", может, в этом проблема? - "стр_поз", например, не работает без этого Цитата Ссылка на сообщение Поделиться на других сайтах
reki-ozera 0 Опубликовано: 10 декабря 2010 Рассказать Опубликовано: 10 декабря 2010 Автор Глянул - красивый сайтик, только подвал разъехался (разорван) и шапка некрасиво слева. На демке ограничения - много не сделаешь... Глянул пример: http://php.net/manual/en/function.fgetcsv.php , там пишут "!==FALSE", может, в этом проблема? - "стр_поз", например, не работает без этого Да я знаю, там править и править... Не демо он - купленна лицензия... Спасибо за статью.. почитаю Цитата Ссылка на сообщение Поделиться на других сайтах
reki-ozera 0 Опубликовано: 13 декабря 2010 Рассказать Опубликовано: 13 декабря 2010 Автор Я скорее всег не правиль свормулировал суть проблемы, дело в том, что при импорте, пропадают некоторые слова или даже предложения - целиком... (!==FALSE) на это не влиятет Вот сылка на проверочный CSV. К примеру, в тблице есть столбик "Река Часовая - проверка EXCEL" - импортируется только вторая часть т.е. " - проверка EXCEL" Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.