|
|
|
| Читаю построчно файл и каждую строку заношу в базу...Не заносится
header('Content-type: text/html;charset=utf-8');
include("modules/db.php");
$fp = fopen("cat.txt", "r"); // Открываем файл в режиме чтения
if ($fp)
{
while (!feof($fp))
{
$mytext[] = fgets($fp, 999);
}
}
else echo "Ошибка при открытии файла";
fclose($fp);
for ($i=0; $i<count($mytext);$i++){
$menucat=mysql_query("SELECT max(cat) as mx FROM `categories`");
if($menucat==true) {
if (mysql_num_rows($menucat)>0) {
$cats=mysql_fetch_array($menucat);
echo $ct=$cats['mx'];
$menucat2=mysql_query("INSERT INTO categories (cat,title) VALUES('".$ct."','".$mytext[$i]."')");
if ($menucat2!==false) {echo mysql_error();}
}}
$i++;
} | |
|
|
|
|
|
|
|
для: OLi
(26.03.2011 в 16:20)
| | Какие-то ошибки возвращаются? Если да, то помимо mysql_error() выведите еще сам запрос.
PS Скорее всего у вас в какой-то из переменной $ct или $mytext[$i] есть одиночные кавычки. Когда вы перебрасываете данные из файла в базу данных или из базы данных в базу данных - переменные нужно обязательно обрабатывать mysql_escape_string() или addslashes(). | |
|
|
|
|
|
|
|
для: cheops
(26.03.2011 в 16:32)
| |
и даже код
[code]for ($i=0; $i<count($mytext);$i++){
echo $mytext[$i];
$i++;
}
|
Выводит из файла не все строки...
Сделал print_r($mytext)
Вывело:
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 )
Не понятно почему занес в массив не все строки
Вот отредактированный текст:
<?php
header('Content-type: text/html;charset=utf-8');
include("modules/db.php");
$fp = fopen("cat.txt", "r"); // Открываем файл в режиме чтения
if ($fp)
{
while (!feof($fp))
{
$mytext[] = fgets($fp, 999);
}
}
else echo "Ошибка при открытии файла";
fclose($fp);
for ($i=0; $i<count($mytext);$i++){
$menucat=mysql_query("SELECT max(cat) as mx FROM `categories`");
if($menucat==true) {
if (mysql_num_rows($menucat)>0) {
$cats=mysql_fetch_array($menucat);
$ct=$cats['mx'];
$menucat2=mysql_query("INSERT INTO categories (cat,title) VALUES('".++$ct."','".addslashes($mytext[$i])."')");
if ($menucat2!==false) {echo mysql_error();}
}}
$i++;
}
?>
| [/code] | |
|
|
|
|
|
|
|
для: OLi
(26.03.2011 в 16:48)
| | Сделал лучше:
<?php
header('Content-type: text/html;charset=utf-8');
include("modules/db.php");
$mytext = file("cat.txt");
foreach ($mytext as $key){
$menucat=mysql_query("SELECT max(pod_cat) as mx FROM `pod_categories`");
if($menucat==true) {
if (mysql_num_rows($menucat)>0) {
$cats=mysql_fetch_array($menucat);
$ct=++$cats['mx'];
echo $key."<br>";
$menucat2=mysql_query("INSERT INTO `pod_categories` (pod_cat,cat,title) VALUES('".$ct."',6,'".addslashes($key)."')");
}}
}
?>
|
Английский текст заносит в title а русский нет....Подскажите в чем может быть сложность? | |
|
|
|
|
|
|
|
для: OLi
(26.03.2011 в 19:56)
| | Запрос вообще не срабатывает? Проверьте при помощи mysql_error() выводится ли какая-нибудь ошибка? | |
|
|
|
|
|
|
|
для: cheops
(26.03.2011 в 19:58)
| | Срабатывает запрос....и select и insert не вставляет только в поле title | |
|
|
|
|
|
|
|
для: OLi
(26.03.2011 в 16:48)
| | Вероятно дело в UTF-8, дело в том, что addslashes() работает с однобайтовыми кодировками, вероятно нужно искать аналог среди расширения mb_string, которое поддерживает многобайтовые кодировки. | |
|
|
|
|
|
|
|
для: cheops
(26.03.2011 в 20:50)
| | Да дело в кодировке..изменил кодировку на cp1251_bin занесло в базу...но теперь на сайте отображаются вопросы вместо текста...а все переделывать в cp1251_bin уже нет смысла...как быть? | |
|
|
|
|
|
|
|
для: OLi
(26.03.2011 в 21:55)
| | Тут есть два пути:
1) Если у вас в таблицах базы данных, информация в кодировке cp1251 и таблицы помечены этой кодировкой, то вы можете получить из них utf8, если при соединении с базой данных укажите в качестве кодировки соединения UTF8
2) Вы можете получить таблицы и данные в ней в кодировке utf8, если пометите таблицы кодировкой utf8, а заполняя их данными в Win-1251, укажите в качестве соединения кодировку cp1251
В обоих случаях СУБД MySQL должна корректно перекодировать данные при поступлении их из вне, и перед выдачей данных во вне. | |
|
|
|
|
|
|
|
для: cheops
(26.03.2011 в 22:08)
| | в замешательстве....у меня в базе все в utf8_general_ci
SET NAMES utf8 указано
Фишка в том что если в запрос вставить так же текст русский
$menucat2=mysql_query("INSERT INTO `pod_categories` (pod_cat,cat,title) VALUES('".$ct."',6,'шли по городу')");
То в title запишет....почему же тогда $key (строку не записывает) | |
|
|
|
|
|
|
|
для: OLi
(26.03.2011 в 22:29)
| | Файл cat.txt в какой кодировке? | |
|
|
|
|
|
|
|
для: cheops
(26.03.2011 в 23:42)
| | Не знаю...в блокноте написанный | |
|
|
|
|
|
|
|
для: OLi
(27.03.2011 в 04:01)
| | Понятно, в любом случае utf-8 там не пахнет, блокнот поддерживает только win-1251 и UNICODE. Вам нужно перекодировать строки, получаемые из файла, а лучше сам файл перед разбором перекодировать в utf-8. | |
|
|
|