Просмотр полной версии : Нуже скриптик PhP+MySql
Вообщем задача.....
Есть фаил с содержанием типа
- New -
- ляляляляля...
- ляляляляля...
- ляляляляля...
- ляляляляля...
- ляляляляля...ляляляляля...ля ляляляля...
ляляляляля...ляляляляля...ля ляляляля...
- ляляляляля...
- New -
ляляляляля...ляляляляля....
- ляляляляля...ляляляляля...ля ляляляля..ляляляляля...
ляляляляля...ляляляляля...ля ляляляля.....
- ляляляляля...ляляляляля...ля ляляляля...ляляляляля...
ляляляляля...ляляляляля...
Требуется этот фаил загнать в таблицу где имеется 1 столбец...и каждая строка должна содержать ТОЛЬКО 1 "блок"( от -new- до -new-)....и еще важное замечение, надо чтоб сохранилось форматирование...
<?
//Base
$sql_host = 'localhost';
$user_login = 'omg';
$password = 'omg';
$db_name = 'omg';
$db=mysql_connect($sql_host,$user_login,$password) ;
mysql_select_db($db_name, $db);
if(!$db) echo 'db error';
//
if(isset($_GET['install']))
{
mysql_query("
CREATE TABLE `data` (
`id` INT NOT NULL AUTO_INCREMENT ,
`text` TEXT NOT NULL ,
PRIMARY KEY ( `id` )
);
",$db);
}
if(isset($_GET['start']))
{
$data = file('file.txt');
foreach($data as $line)
{
if(!preg_match('/- New -/',$line)) $string .= $line;
else if (strlen($string) != 0){mysql_query("INSERT INTO `data` (`text`) VALUES ('$string')",$db); $string ='';}
}
}
?>
?install - создание таблицы
?start - начало обработки файла file.txt
Кхм...почему-то не "пишет" в таблицу....((
А ты настройки своей бд вписал?
Кстати, скопируй скрипт ещё раз, там небольшая ошибка была.
Конечно вписал :D
Скопировал, тож самое....работает ток install... :)
зы. А то что фаил под 8 метроф это не че?)))
Попробывал маленький фаил тож самое...
Насчет размера файла set_time_limit(0);
У меня работает нормально, хотя можешь попробовать написать $result = mysql_query.....
А потом if (!$result) {die(mysql_error());}
Вообщем не пашет.... =(
Вот кусок кода..
if(isset($_GET['start']))
{
$data = file('anekdot.txt');
foreach($data as $line)
{
if(!preg_match('/- New -/',$line)) $string .= $line;
else if (strlen($string) != 0)
{
$result = mysql_query("INSERT INTO `anekdot` (`text`) VALUES ('$string')",$db);
$string ='';
}
}
Имена таблицы(и при установке) и фаила изменены....и одинаковые...
Сделай так и скажи не выдает ли ошибок
if(isset($_GET['start']))
{
$data = file('anekdot.txt');
foreach($data as $line)
{
if(!preg_match('/- New -/',$line)) $string .= $line;
else if (strlen($string) != 0)
{
$result = mysql_query("INSERT INTO `anekdot` (`text`) VALUES ('$string')",$db);
$string ='';
if (!$result) {die(mysql_error());}
}
}
Пустой экран, и в базе пустота..
Надеюсь ты пишешь script.php?start
Если да, то хз где проблема
Помогите плииз кто нить... =)
Buffalon
06.04.2008, 12:19
Зато работает))))
<?
//Buffalon
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'EUR';
$conn=mysql_connect($host,$user,$pass) ;
mysql_select_db($db);
$bla="CREATE TABLE `bla`
(
`id` int(3) NOT NULL auto_increment primary key,
`text` text NOT NULL
)";
mysql_query($bla);
$file='file.txt';
$open=fopen($file,r);
while($fp=fgets($open,'511'))
{
if(strpos($fp,'/- New -/') !==false)
{
while(true)
{
$fp=fgets($open,'511');
if(strpos($fp,'/- New -/') !==false)break;
$fp .="<br>\n";
$string .= $fp;
}
}
}
echo $string;//Показывает состояние
if(strlen($string)!=0)mysql_query("INSERT INTO `bla` (`text`) VALUES ('$string')");
?>
Ну что за *ля...ток таблица создается...и все....пусто :(
Глянул ща в логи упал :)
[client **.***.***.123] PHP Warning: set_time_limit(): Cannot set time limit in safe mode in /var/www/vhosts/***.ru/subdomains/**/httpdocs/test.php on line 3
[client **.***.***.123] PHP Notice: Use of undefined constant r - assumed 'r' in /var/www/vhosts/***.ru/subdomains/***/httpdocs/test.php on line 22
[client **.***.***.123] PHP Notice: Undefined variable: string in /var/www/vhosts/***.ru/subdomains/***/httpdocs/test.php on line 36
[client **.***.***.123] PHP Notice: Undefined variable: string in /var/www/vhosts/***.ru/subdomains/***/httpdocs/test.php on line 37
А вот содержимое фаила самого...мб кто подскажет чо править тут...=\
<?
set_time_limit(0);
//Base
$host = 'localhost';
$user = '***';
$pass = '***';
$db = '***';
$conn=mysql_connect($host,$user,$pass) ;
mysql_select_db($db);
//
$bla="CREATE TABLE `bla`
(
`id` int(3) NOT NULL auto_increment primary key,
`text` text NOT NULL
)";
mysql_query($bla);
$file='anekdot.txt';
$open=fopen($file,r);
while($fp=fgets($open,'511'))
{
if(strpos($fp,'/- New -/') !==false)
{
while(true)
{
$fp=fgets($open,'511');
if(strpos($fp,'/- New -/') !==false)break;
$fp .="<br>\n";
$string .= $fp;
}
}
}
echo $string;//Показывает состояние
if(strlen($string)!=0)mysql_query("INSERT INTO `bla` (`text`) VALUES ('$string')");
?>
Все строки соблюдены:)
Глянул ща в логи упал :)
А вот содержимое фаила самого...мб кто подскажет чо править тут...=\
<?
set_time_limit(0);
//Base
$host = 'localhost';
$user = '***';
$pass = '***';
$db = '***';
$conn=mysql_connect($host,$user,$pass) ;
mysql_select_db($db);
//
$bla="CREATE TABLE `bla`
(
`id` int(3) NOT NULL auto_increment primary key,
`text` text NOT NULL
)";
mysql_query($bla);
$file='anekdot.txt';
$open=fopen($file,r);
while($fp=fgets($open,'511'))
{
if(strpos($fp,'/- New -/') !==false)
{
while(true)
{
$fp=fgets($open,'511');
if(strpos($fp,'/- New -/') !==false)break;
$fp .="<br>\n";
$string .= $fp;
}
}
}
echo $string;//Показывает состояние
if(strlen($string)!=0)mysql_query("INSERT INTO `bla` (`text`) VALUES ('$string')");
?>
Все строки соблюдены:)
В 22-ой строчке $open=fopen($file,r); r - в ковычки поставь $open=fopen($file,"r");
[client **.***.***.123] PHP Notice: Undefined variable: string in /var/www/vhosts/***.ru/subdomains/***/httpdocs/test.php on line 36
[client **.***.***.123] PHP Notice: Undefined variable: string in /var/www/vhosts/***.ru/subdomains/***/httpdocs/test.php on line 37
Осталось 2 ошибки...
если в этих строках меняю string на fp то ошибок нет, но в базе все-равно пусто...=\
Buffalon
07.04.2008, 09:54
Мля(.. .А у тибя присутствубт строчки "/- New -/" В начле и в конце?НА самом деле хватит прикалываться... .Может быть у тибя прав нету на запись ... .Хотя бы id у тибя прибавляется?
http://narod.ru/disk/60058000/anekdot.txt - вот фаил который надо "забить" в БД...=)
зы. мб кто сделает сразу sql?
ТС, ты гений, выложить пример с - New -, а потом выложить базу где - NEW -...
А потом вопросы почему скрипт не работает...
Лови свою базу...
http://rapidshare.com/files/105840087/anekdots.sql.gz
Спасибо огромное!!!!
зы. ну я же не на стока тупой чтоб поменять New на NEW...я это сделал первым делом....
Т.к тема скрипта не раскрыта сделаю это я .... =)
<?php
set_time_limit(0);
//Base
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'test';
$conn = mysql_connect($host, $user, $pass);
mysql_select_db($db);
//
$bla = "CREATE TABLE `bla`
(
`id` int(3) NOT NULL auto_increment primary key,
`text` text NOT NULL
)";
mysql_query($bla);
$test = file_get_contents('a.txt');
$tes = explode('- NEW -', $test);
for ($i = 1; $i < count($tes); $i++)
{
mysql_query("INSERT INTO `bla` (`text`) VALUES ('$tes[$i]')");
}
echo '<h1>Готово</h1>';
?>
Видимо не судьба......:(
Вообщем sql не заливается, ругается на "пакет сайз" чет такое...
А скриптом вроде льет, но в базе все в ???????
Это надо выполнить после коннекта с базой.
@mysql_query('SET NAMES cp1251');
ВСЕЕ.....всем спасибо....проблема решена :) скрипт в итоге вышел такой :)
<?php
set_time_limit(0);
//Base
$host = 'localhost';
$user = '****';
$pass = '****';
$db = '****';
$conn = mysql_connect($host, $user, $pass);
mysql_select_db($db);
@mysql_query('SET NAMES cp1251');
//
$bla = "CREATE TABLE `bla`
(
`id` int(3) NOT NULL auto_increment primary key,
`text` text NOT NULL
)";
mysql_query($bla);
$test = file_get_contents('anekdot.txt');
$tes = explode('- NEW -', $test);
for ($i = 1; $i < count($tes); $i++)
{
mysql_query("INSERT INTO `bla` (`text`) VALUES ('$tes[$i]')");
}
echo '<h1>Готово</h1>';
?>
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot