Mol4ok
Новичок
Забить в базу данные из файла
Здравствуйте, уважаемые участники форума!
у меня такой вот вопрос имеется, необходимо забить данные из файла в базу mysql, Вот содержание файла:
253810
A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D
A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D
A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D
258968
A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D
A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D
A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D
253811
A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D
A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D
A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D
Как видите, сначала идет идентификационный код, сначала я считываю его, затем в базе нахожу юзера с таким кодом, - беру его айдишник, затем в цикле добавляю варианты его ответов, то есть записываю в базу каждое значение(A,B,C...)
Вот он код:
То есть здесь я в цикле помещаю еще один цикл, так теоретически все должно работать на мой взгляд, а там! Я считываю по строчке в большом цикле, если эта строка кратна 4, то я при этом выбираю айдишник по считанному коду из файла, ведь этот код расположен на позициях строк кратных 4, если номер позиции строки не кратен 4, то значит мы считываем варианты ответов, здесь открывается так сказать подцикл, в нем считанная строка помещается в массив, и в маленьком цикле элементы массива заносятся в базу....уф... примерно так я думал будет работать, но, мешает одно но... Проверял выводить все в браузер с помощью print, все выводится, а в базу записываются только 2 значения, ито записываются не варианты ответов, а айдишник и код, вообще как-то странно, может с массивом неправильно работаю? Помогите плиз, заранее спасибо!
-~{}~ 31.12.09 17:13:
Окончательный код, все работает, тему можно закрыть.
только файл здесь такой вот(который считываем)
253810
A B C E F
A B C E F
258968
A B C E F
A B C E F
253811
A B C E F
A B C E F
Объем файла здесь меньше чем в начале топика, его можно также безразмерно увеличивать, на сколько конечно база позволяет, просто в коде надо будет поменять $i%3 на $i%(число1), где число1 - это номер позиции строки в файле который подлежит проверке на кратность.
<META http-equiv="content-type" content="text/html; charset=windows-1251">
<link href="style.css" rel="stylesheet" title="Compact" />
<table border=1 >
<?
$link = mysql_connect("localhost", "root", "") or die("Could not connect : " . mysql_error());
mysql_select_db("test") or die("Could not select database");
if ($_POST['submit']=='submit') {
$fp = fopen("$file", "r") ;
if (!$fp)
{echo "<p><strong>Файл не найден.</strong></p>";
exit;
}
$i=0;
while (!feof($fp)){
$file1 = fgets($fp);
$file2=trim($file1);
if (($i==0) || (($i%3)==0)) {
if ($file2){
$query="select t1.id from users t1 where t1.idcode=$file2";
$result=mysql_query($query);
$row = mysql_fetch_row($result);
$w=$row[0];
}
}
if (($i<>0) && (($i%3)<>0)) {
$Array = explode (" ",$file2);
$dl=strlen($file2);
for($k=0; $k<=$dl; $k++)
{
IF($Array[$k]){
if(strlen($Array[$k])==1){
print"$Array[$k]";
$query="insert into usanswers(usid,answer) values($w,'$Array[$k]')";
$result=mysql_query($query); }}
}
}
$i++;
}
fclose($fp);
}
print"<form action='fromfile.php' method=Post>";
print "<input type=submit name=submit value=submit>";
print"<input type=file name=file value=file>";
?>
Здравствуйте, уважаемые участники форума!
у меня такой вот вопрос имеется, необходимо забить данные из файла в базу mysql, Вот содержание файла:
253810
A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D
A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D
A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D
258968
A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D
A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D
A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D
253811
A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D
A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D
A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F A B C D
Как видите, сначала идет идентификационный код, сначала я считываю его, затем в базе нахожу юзера с таким кодом, - беру его айдишник, затем в цикле добавляю варианты его ответов, то есть записываю в базу каждое значение(A,B,C...)
Вот он код:
Код:
$fp = fopen("$file", "r") ;
if (!$fp)
{echo "<p><strong>Файл не найден.</strong></p>";
exit;
}
$i=0;
while (!feof($fp)){
$file1 = fgets($fp);
$file2=trim($file1);
if (($i==0) || (($i%4)==0)) {
$query="select t1.id from users t1 where t1.idcode=$file2";
$result=mysql_query($query);
$row = mysql_fetch_row($result);
$w=$row[0];
}
if (($i<>0) || (($i%4)<>0)) {
$Array = explode (" ",$file2);
for($k=0; $k<=95; $k++)
{
$query="insert into usanswers(usid,answer) values($w,$Array[$k])";
$result=mysql_query($query);
}
}
$i++;
}
То есть здесь я в цикле помещаю еще один цикл, так теоретически все должно работать на мой взгляд, а там! Я считываю по строчке в большом цикле, если эта строка кратна 4, то я при этом выбираю айдишник по считанному коду из файла, ведь этот код расположен на позициях строк кратных 4, если номер позиции строки не кратен 4, то значит мы считываем варианты ответов, здесь открывается так сказать подцикл, в нем считанная строка помещается в массив, и в маленьком цикле элементы массива заносятся в базу....уф... примерно так я думал будет работать, но, мешает одно но... Проверял выводить все в браузер с помощью print, все выводится, а в базу записываются только 2 значения, ито записываются не варианты ответов, а айдишник и код, вообще как-то странно, может с массивом неправильно работаю? Помогите плиз, заранее спасибо!
-~{}~ 31.12.09 17:13:
Окончательный код, все работает, тему можно закрыть.
только файл здесь такой вот(который считываем)
253810
A B C E F
A B C E F
258968
A B C E F
A B C E F
253811
A B C E F
A B C E F
Объем файла здесь меньше чем в начале топика, его можно также безразмерно увеличивать, на сколько конечно база позволяет, просто в коде надо будет поменять $i%3 на $i%(число1), где число1 - это номер позиции строки в файле который подлежит проверке на кратность.
<META http-equiv="content-type" content="text/html; charset=windows-1251">
<link href="style.css" rel="stylesheet" title="Compact" />
<table border=1 >
<?
$link = mysql_connect("localhost", "root", "") or die("Could not connect : " . mysql_error());
mysql_select_db("test") or die("Could not select database");
if ($_POST['submit']=='submit') {
$fp = fopen("$file", "r") ;
if (!$fp)
{echo "<p><strong>Файл не найден.</strong></p>";
exit;
}
$i=0;
while (!feof($fp)){
$file1 = fgets($fp);
$file2=trim($file1);
if (($i==0) || (($i%3)==0)) {
if ($file2){
$query="select t1.id from users t1 where t1.idcode=$file2";
$result=mysql_query($query);
$row = mysql_fetch_row($result);
$w=$row[0];
}
}
if (($i<>0) && (($i%3)<>0)) {
$Array = explode (" ",$file2);
$dl=strlen($file2);
for($k=0; $k<=$dl; $k++)
{
IF($Array[$k]){
if(strlen($Array[$k])==1){
print"$Array[$k]";
$query="insert into usanswers(usid,answer) values($w,'$Array[$k]')";
$result=mysql_query($query); }}
}
}
$i++;
}
fclose($fp);
}
print"<form action='fromfile.php' method=Post>";
print "<input type=submit name=submit value=submit>";
print"<input type=file name=file value=file>";
?>