Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Массивы и БД / 16 сообщений из 16, страница 1 из 1
06.04.2014, 16:11:44
    #38606504
Елена98
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массивы и БД
Здравствуйте, пыталась значение массива добавить в БД MySQL. Но как бы я не старалась всегда получается одно и тоже.

Разделила массив(insert into), сохраняла в разные файлы, в один файл(load local ..into), использовала кодировку UTF-8 но все равно id массива не 1-3. а 1-12)) Подскажите варианты решения данной проблемы )
...
Рейтинг: 0 / 0
06.04.2014, 18:18:21
    #38606569
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массивы и БД
Вы хоть код покажите... а то ничего непонятно.
...
Рейтинг: 0 / 0
06.04.2014, 18:48:27
    #38606583
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массивы и БД
Не будет лишним показать исходные данные и желаемый результат.
...
Рейтинг: 0 / 0
07.04.2014, 06:23:36
    #38606799
Елена98
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массивы и БД
Простите) Вот мой код

<?php

$dir = "C:/Users/Crice123/Documents/new/Okassov"; //задаём имя директории
if(is_dir($dir)) { //проверяем наличие директории
//echo $dir.' - директория существует;<br>';
$files = scandir($dir); //сканируем (получаем массив файлов)
array_shift($files); // удаляем из массива '.'
array_shift($files); // удаляем из массива '..'
for($i=0; $i<sizeof($files); $i++) echo '-файл: '.$files[$i].';<br>'; //выводим все файлы
}
else echo $dir.' -такой директории нет;<br>';

$dataSpektr=array();
$timeSpektr=array();
$i=0;
while($i<=sizeof($files)){//делим название файла на дату и время
$dataSpektr[] = substr($files[$i],0,4).'-'.substr($files[$i],4,2).'-'.substr($files[$i],6,2);
$timeSpektr[] = substr($files[$i],8,2).':'.substr($files[$i],10,2).':'.substr($files[$i],12,2);
$i=$i+2;
if ($i==sizeof($files))
break;
}
echo'<br>';
print_r($dataSpektr);
echo'<br>';
print_r($timeSpektr);
echo'<br>';
$koorbig=array();
for($i=1; $i<=sizeof($files);$i=$i+2) {//Извлекаем координаты
$f=file_get_contents("C:/Users/Crice123/Documents/new/Okassov/".$files[$i]);
$koorbig[]=explode(";",$f);
for($j=0;$j<$cou=count($koorbig);$j++){
unset($koorbig[$j][2]);
}

}
print_r($koorbig);
echo'<br>';
echo $cou;
echo'<br>';
$ppre=array();
$dolgota=array();
$wirota=array();
for($i=0;$i<$cou;$i++){//Делим на долготу и широту
$ppre[$i]=implode(";",$koorbig[$i]);
list($dolgota[$i],$wirota[$i])=explode(";",$ppre[$i]);
}
echo'<br>';
print_r($ppre);
echo'<br>';
print_r($dolgota);
echo'<br>';
print_r($wirota);
echo'<br>';

$daty=implode("\r\n",$dataSpektr);
$vremy=implode("\r\n",$timeSpektr);
$dolgoty=implode("\r\n",$dolgota);
$wiroty=implode("\r\n",$wirota);



file_put_contents("C:/Users/Crice123/Documents/new/data.txt",iconv("windows-1251", "UTF-8", "$daty"));
file_put_contents("C:/Users/Crice123/Documents/new/vremya.txt",iconv("windows-1251", "UTF-8", "$vremy"));
file_put_contents("C:/Users/Crice123/Documents/new/dolgota.txt",iconv("windows-1251", "UTF-8", "$dolgoty"));
file_put_contents("C:/Users/Crice123/Documents/new/wirota.txt",iconv("windows-1251", "UTF-8", "$wiroty"));

$db=mysql_connect("localhost","root","");
//mysql_query("drop database if exists rootify",$db);
mysql_query("create database if not exists rootify",$db);
mysql_select_db("rootify",$db);
// ne polzuisya kirillicei, plohoi podhod
mysql_query("drop table if exists testingv",$db);
mysql_query("create table if not exists testingv(id int not null auto_increment primary key, dataSpektr varchar(40), timeSpektr varchar(40), dolgota varchar(40), wirota varchar(40))");
mysql_query("load data infile 'C:/Users/Crice123/Documents/new/data.txt' into table testingv(`dataSpektr`)");//,`timeSpektr`,`dolgota`,`wirota`)");
mysql_query("load data infile 'C:/Users/Crice123/Documents/new/vremya.txt' into table testingv(`timeSpektr`)");
mysql_query("load data infile 'C:/Users/Crice123/Documents/new/dolgota.txt' into table testingv(`dolgota`)");
mysql_query("load data infile 'C:/Users/Crice123/Documents/new/wirota.txt' into table testingv(`wirota`)");


Вот собственно код. Пробовала через переменные передать, все равно все по диагонали... А хотлось бы, что бы получилась вот такая таблица
.

Есть еще один вопрос про csv файлы
Допустим имеется 3 csv файла, на 23 строке и 2ом столбце(1 ячейка) хранится информация которую надо извлечь и добавить в БД. Мне надо, чтобы я из него сделала один большой массив и обратилась к ячейке как $files[1][22]?
...
Рейтинг: 0 / 0
07.04.2014, 06:49:54
    #38606808
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массивы и БД
1)делайте отступы - читать совершенно невозможно!
2)для кода надо использовать тег src
3)давате поставим вопрос так:
3.1)что за информация хранится в файлах - по 2-3 строчки из каждого покажите, тег fixed в помощь, а спойлером уже умеете пользоваться :) и объясните, как оно в разных файлах между собой связано. Или изначально у вас не файлы, а массив (а файлы - уже ваши попытки что-то сделать) - тогда покажите исходный массив...
3.2)что с ней надо сделать? загрузить куда-то? тогда показывайте структуру таблиц, в которые она будет загружаться...
3.3)что за результат хочется получить? табличку вы показали, но вот откуда она собирается - непонятно...

PS.
Елена98C:/Users/Crice123/Documents/new/wirota.txtтогда уж wipoma :)
Елена98// ne polzuisya kirillicei, plohoi podhodтак а чего ж у автора кода не спросите? или это, так сказать, переходящий код? ну как переходящий кубок
...
Рейтинг: 0 / 0
07.04.2014, 08:07:48
    #38606831
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массивы и БД
Елена98 Вот мой код Похоже, проблема с алгоритмом. В загружаемом файле следует формировать всю строку данных, а не отдельные поля.
С другой стороны, не вижу препятствий обойтись без создания промежуточных файлов. Конечно, если они не нужны для каких-то других целей.
...
Рейтинг: 0 / 0
07.04.2014, 08:12:17
    #38606833
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массивы и БД
Елена98Допустим имеется 3 csv файла, на 23 строке и 2ом столбце(1 ячейка) хранится информация которую надо извлечь и добавить в БД. Мне надо, чтобы я из него сделала один большой массив и обратилась к ячейке как $files[1][22]?MySQL не решает эту задачу.
...
Рейтинг: 0 / 0
07.04.2014, 08:16:27
    #38606836
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массивы и БД
В смысле, MySQL не работает с массивами. Массив создаете в используемом языке программирования (в данном случае в PHP), извлекаете из него нужный элемент, и только потом обращаетесь с СУБД с запросом INSERT или UPDATE для записи данных, передавая эти данные в запросе.
...
Рейтинг: 0 / 0
07.04.2014, 09:17:36
    #38606871
Елена98
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массивы и БД
tanglir, каждый день постигаю что то новенькое=)) а что делает тег фикс? Просто не хотела излишней информацией обременять )
В общем, есть папка там 6 файлов, 3 csv 3 txt. Имя файлов хранит в себе дату и время
, ну то есть {20131115}{025758}.txt В csv файлах доп информация
Энергия, Импульс. еще на 1025 строке информация которую надо извлечь в БД
, по которым строится график, а в txt файле долгота и широта

Я хотела бы чтобы все это поместить в один БД (id, дата, время, долгота, широта, коэффициен
[хранится на 1025 строке 2ом столбце .csv файла]
) Потом интерфейс с поиском и фильтром, но думаю с этим не возникнут проблемы.
Вот весь код через скрин:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
<?php
    $dir = "C:/Users/Crice123/Documents/new/Okassov";   //задаём имя директории
    if(is_dir($dir)) {   //проверяем наличие директории
         //echo $dir.' - директория существует;<br>'; 
         $files = scandir($dir);    //сканируем (получаем массив файлов)
         array_shift($files); // удаляем из массива '.'
         array_shift($files); // удаляем из массива '..'
		 
         for($i=0; $i<sizeof($files); $i++) {echo '-файл: '.$files[$i].';<br>';}  //выводим все файлы
		 
    } 
    else echo $dir.' -такой директории нет;<br>';
	$dataSpektr=array();
	$timeSpektr=array();
	$i=0;
	while($i<=sizeof($files)){//делим название файла на дату и время
	$dataSpektr[] = substr($files[$i],0,4).'-'.substr($files[$i],4,2).'-'.substr($files[$i],6,2);
	$timeSpektr[] = substr($files[$i],8,2).':'.substr($files[$i],10,2).':'.substr($files[$i],12,2);
	$i=$i+2;
	           if ($i==sizeof($files))
		break;
	}
	echo'<br>';
	print_r($dataSpektr);
	echo'<br>';
	print_r($timeSpektr);
	echo'<br>';

$koorbig=array();	

for($i=1; $i<=sizeof($files);$i=$i+2) {//Извлекаем координаты
		 $f=file_get_contents("C:/Users/Crice123/Documents/new/Okassov/".$files[$i]);
		 $koorbig[]=explode(";",$f);
		             for($j=0;$j<$cou=count($koorbig);$j++){
				             unset($koorbig[$j][2]);
		             }
		 
		}
		  print_r($koorbig);
		  echo'<br>';
		  echo $cou;
		  echo'<br>';
$ppre=array();
$dolgota=array();
$wirota=array();
for($i=0;$i<$cou;$i++){//Делим на долготу и широту
		  $ppre[$i]=implode(";",$koorbig[$i]);
		  list($dolgota[$i],$wirota[$i])=explode(";",$ppre[$i]);
		   }
		   echo'<br>';
		   print_r($ppre);
		   echo'<br>';
		   print_r($dolgota);
		   echo'<br>';
		   print_r($wirota);
		   echo'<br>';

//file_put_contents("C:/Users/Crice123/Documents/new/new.txt",$stroka);
$daty=implode("\r\n",$dataSpektr);
$vremy=implode("\r\n",$timeSpektr);
$dolgoty=implode("\r\n",$dolgota);
$wiroty=implode("\r\n",$wirota);



file_put_contents("C:/Users/Crice123/Documents/new/data.txt",iconv("windows-1251", "UTF-8", "$daty"));
file_put_contents("C:/Users/Crice123/Documents/new/vremya.txt",iconv("windows-1251", "UTF-8", "$vremy"));
file_put_contents("C:/Users/Crice123/Documents/new/dolgota.txt",iconv("windows-1251", "UTF-8", "$dolgoty"));
file_put_contents("C:/Users/Crice123/Documents/new/wirota.txt",iconv("windows-1251", "UTF-8", "$wiroty"));

$db=mysql_connect("localhost","root","");
//mysql_query("drop database if exists rootify",$db);
mysql_query("create database if not exists rootify",$db);
mysql_select_db("rootify",$db);
mysql_query("drop table if exists testingv",$db);
mysql_query("create table if not exists testingv(id int not null auto_increment primary key, dataSpektr varchar(40), timeSpektr varchar(40), dolgota varchar(40), wirota varchar(40))");
mysql_query("load data infile 'C:/Users/Crice123/Documents/new/data.txt' into table testingv(`dataSpektr`)");//,`timeSpektr`,`dolgota`,`wirota`)");
mysql_query("load data infile 'C:/Users/Crice123/Documents/new/vremya.txt' into table testingv(`timeSpektr`)");
mysql_query("load data infile 'C:/Users/Crice123/Documents/new/dolgota.txt' into table testingv(`dolgota`)");
mysql_query("load data infile 'C:/Users/Crice123/Documents/new/wirota.txt' into table testingv(`wirota`)");


?>


...
Рейтинг: 0 / 0
07.04.2014, 09:21:00
    #38606876
Елена98
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массивы и БД
vkle, Ну то есть вся информация с csv файла извлекается в PHP массив там хранится, а нужную ячейку я извлекаю с помощью обращения к ней, $files[1][1025]? что то вроде insert into table(`koefficient`) values(`$files[1][1025] ?
...
Рейтинг: 0 / 0
07.04.2014, 09:55:08
    #38606902
Елена98
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массивы и БД
Уфф всем спасибо, не знаю как но заработало. Вот ж я косячница ))))) Изменила пару строк, вроде все ок.

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
[FIXED]
for($i=0;$i<$cou;$i++){//Делим на долготу и широту
$ppre[$i]=implode(";",$koorbig[$i]);
list($dolgota[$i],$wirota[$i])=explode(";",$ppre[$i]);
$dolgota1[] = iconv("windows-1251", "UTF-8", "$dolgota[$i]");//содержит закорючки, изменила формат 
$wirota1[] = iconv("windows-1251", "UTF-8", "$wirota[$i]"); 
 }
[/FIXED]

[FIXED]
$db=mysql_connect("localhost","root","");
//mysql_query("drop database if exists rootify",$db);
mysql_query("create database if not exists rootify",$db);
mysql_select_db("rootify",$db);
mysql_query("drop table if exists testingv",$db);
mysql_query("create table if not exists testingv(id int not null auto_increment primary key, dataSpektr varchar(40), timeSpektr varchar(40), dolgota varchar(40), wirota varchar(40))");

for($i=0;$i<$cou;$i++){
	$sql="insert into `testingv`(`id`,`dataSpektr`,`timeSpektr`,`dolgota`,`wirota`) values (null,'$dataSpektr[$i]','$timeSpektr[$i]','$dolgota1[$i]','$wirota1[$i]')";
	mysql_query($sql);
	}
[/FIXED]




Теперь осталось добавить информацию с n-ой строки и n-ного столбца csv файла...
...
Рейтинг: 0 / 0
07.04.2014, 12:17:38
    #38607087
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массивы и БД
Елена98Теперь осталось добавить информацию с n-ой строки и n-ного столбца csv файла...ну так а в чём затружнения? растащите ксв на нужные массивы так же, как и текстовые файлы, и добавьте сюда
Елена98
Код: php
1.
2.
3.
4.
for($i=0;$i<$cou;$i++){
	$sql="insert into `testingv`(`id`,`dataSpektr`,`timeSpektr`,`dolgota`,`wirota`) values (null,'$dataSpektr[$i]','$timeSpektr[$i]','$dolgota1[$i]','$wirota1[$i]')";
	mysql_query($sql);
	}

полей и значений.
Или это доп. инфорация должна попасть в другие таблицы?
...
Рейтинг: 0 / 0
07.04.2014, 14:22:39
    #38607283
Елена98
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массивы и БД
tanglir, в эту) Кстати если не удалять БД она увеличивается на столько же строк=(( т.е. id вначале 3, потом 6,9 т.д =))
...
Рейтинг: 0 / 0
08.04.2014, 05:03:40
    #38607824
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массивы и БД
Елена98, увеличивается не БД, а счётчик автоинкремента. И на то есть очень весомые причины.
Елена98в этуНу так я тогда не пойму, в чём дело. Текстовики вы же смогли разбить "как надо", а ксв - тот же текстовик...
...
Рейтинг: 0 / 0
08.04.2014, 06:11:29
    #38607845
Елена98
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массивы и БД
tanglir, что бы я без вас делала )) теперь вроде с частью csv и txt все. по поводу счетчика, можно ли добавить if(!empty table_name){mysql_close();} else {for($i=...???
...
Рейтинг: 0 / 0
08.04.2014, 06:41:38
    #38607851
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Массивы и БД
Елена98, автоинкремент НЕ предназначен для "пользовательской" (непрерывной, с единицы,...) нумерации. Его задача в 99,9% случаев - быть первичным ключом. И всё . Он не обязан начинаться с 1, он запросто может иметь разрывы. Если хотите иметь свой нумератор, создавайте под него отдельное "обычное" поле.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Массивы и БД / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]