Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сложности с БД ) / 5 сообщений из 5, страница 1 из 1
09.04.2014, 09:09:06
    #38609302
Елена98
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложности с БД )
Доброе утро постоянные жители и гости форума ) У меня возникли технические сложности с БД, не очень сильна в программировании особенно в mySQL(начала только в марте). Ну так вот имеется скрипт, считывает папки и файлы в папках, занесла все в массивы и тут возникли сложности. Таблица Spektors:

В поле Sektor надо, чтобы к датам 2011 года сектор был DKG1, 2012 ESB2, 2013 PORS3. вот собственно код
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
$mycou = mysql_query("select count(*) from spektors");
if(!empty($mycou)){mysql_close($db);
	}
	else {for($i=0;$i<$c;$i++){
			$sql="insert into `spektors`(`dataSpektr`,`timeSpektr`,`dolgota`,`wirota`,`jivoe`,`realnoe`,`sektor`) values ('$dataSpektr[$i]','$timeSpektr[$i]','$dolgota[$i]','$wirota[$i]','$vrJiv[$i]','$vrReal[$i]','$masiVahta[$i]')";
			mysql_query($sql);
	}
}

Таблица Sektors:
Здесь наоборот должно быть 3 строки с датами $dataSpektr[0] и $dataSpektr[последний]из каждой папки, здесь у меня идей даже нет. Вот код:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
$mycau = mysql_query("select count (*) from sektors");
if(!empty($mycau)){mysql_close($db);
	}
	else {for($i=0;$i<$masiVahta;$i++){
				$sql="insert into `sektors`(`sektor`,`datana4ala`,`datakonca`) values ('$masiVahta[$i]','$dataSpektr[$i]','$timeSpektr[$i]')";
				mysql_query($sql);
	}
}




Весь код кому интересно:
[SRC PHP][/SRC]

Хотела сделать подвижный скрипт. названия папок и файлов,а также их количество может быть разным.. Но получилось как всегда )))
...
Рейтинг: 0 / 0
09.04.2014, 10:19:20
    #38609398
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложности с БД )
Елена98В поле Sektor надо, чтобы к датам 2011 года сектор был DKG1, 2012 ESB2, 2013 PORS3
Код: sql
1.
2.
3.
4.
5.
6.
7.
update spektors
set sektor=case year(dataspektr)
 when 2011 then 'DKG1'
 when 2012 then 'ESB2'
 when 2013 then 'PORS3'
 else null end
 


А вообще вы явно хотите связать эти 2 таблицы, так что вместо сооружения этого велосипеда почитайте лучше про внешние ключи.
Елена98должно быть 3 строки с датами $dataSpektr[0] и $dataSpektr[последний]из каждой папкиА в таблице Spektors где-нибудь указывается, какие записи из какой папки?

PS. Я ещё в предыдущей теме писал: хотите, чтобы вам реально помогли - описывайте исходные данные, описывайте их связи, выкладывайте по несколько строк из каждого из исходных файлов, и желаемый результат. Пока что задача в вашем описании выглядит так: "у меня где-то в разных папках лежат файлы, в них отдельно лежат широта, долгота и всякое такое, а я хочу, чтобы всё это лежало в одной таблице, а во второй таблице чтобы была информация, неким образом зависящая от того, что из какой папки было залито в первую таблицу" . Внимательно прочитайте и попробуйте представить себе, что можно отсюда понять и какие тут можно дать советы. Учитывая, что многие тут пхп не знают вообще, ибо это форум НЕ по пхп.

PPS. И избавляйтесь от транс1337а!
...
Рейтинг: 0 / 0
09.04.2014, 12:21:56
    #38609632
Елена98
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложности с БД )
tanglir, сложно =(

Допустим в папке А есть папки:
Они являются названиями секторов. В каждой из них хранится файлы например в папке DKG1:
ESB2:
PORS3:
CSV и txt файлы связаны по названию, которая содержит дату и время спектра(т.е. 2013-11-15 03:57:32).
В txt файлах содержится информация о долготе и широте, в csv файлах каналы, энергия и импульсы из 1023 строк и 3х столбцов по которым строится график.
на 1024 строке и втором столбце Живое время, на 1025 строке 2 столбце Реальное время.

Надо чтобы скрипт считывал количество папок, файлов, извлекал информацию и вводил их в БД.
Первая таблица " Сектора " в нем хранится: 1)название Секторов(имена папок в папке А),2) Дата начала и 3)Дата конца (т.е. даты из названия файлов, первый и последний в папке сектора).
Вторая таблица " Спектры " в нем хранится информация: 1)Дата,2)Время(из названия файлов), 3)Долгота,4)Широта(данные в txt файлах),5)Реальное время,6)Живое время(Данные на 1024,1025 строках и во втором столбце),7)Сектор(К которому относится спектр). Данные из csv файлов до 1023 строки(т.е. канал энергия импульс) я не стала заносить в БД, думаю сделать линк по которому можно просмотреть эти данные, за одно и сам график.

На данный момент я имею массивы из 1)названия секторов, 2)Даты 3)Времени 4)Долготы 5)Широты 6)Реального времени 7)Живого времени спектров и 1023 строк энергии и импулься. Мне осталось, чтобы дата начала и конца заносились в таблицу "Сектора", чтобы был пользовательский интерфейс с поиском(название,дата,координаты и т.д.) и фильтром по дате(от ххх до ххх), чтобы можно было перейти на подробную информацию о спектре(т.е. канал,энергия, импульс + график). А так же кнопку для обновления информации


Код , закоментировала некоторые части:
Код: 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.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
    $vahta = "C:/Users/Crice123/Documents/new/vahta";   //задаем имя директории
    if(is_dir($vahta)) {   //провер¤ем наличие директории
         echo $vahta.' - директори¤ существует;<br>'; 
         $masiVahta = scandir($vahta);    //сканируем (получаем массив папок)
         array_shift($masiVahta); // удал¤ем из массива '.'
         array_shift($masiVahta); // удал¤ем из массива '..'
		 
         for($i=0; $i<sizeof($masiVahta); $i++) {echo '-файл: '.$masiVahta[$i].';<br>';}  //выводим все файлы
		 
    } 
    else echo $vahta.' -такой директории нет;<br>';
	//!!!!!!!!!!!!!!!1
	for($i=0;$i<sizeof($masiVahta);$i++){
    $sektor[] = "C:/Users/Crice123/Documents/new/vahta/$masiVahta[$i]";   //задаЄм им¤ директории
			if(is_dir($sektor[$i])) {   //провер¤ем наличие директории
						$masivSektor[] = scandir($sektor[$i]);    //сканируем (получаем массив файлов)
						for($k=0;$k<count($masivSektor);$k++){
						unset($masivSektor[$k][0]);//Удаляем пустые ячейки
						unset($masivSektor[$k][1]);
						}
			} 
    else echo $sektor.' -такой директории нет;<br>';
	}

    $a=count($masivSektor);
    $b=sizeof($masivSektor[0])+2;

for($i=0;$i<count($masivSektor);$i++){//дата и время из файлов заносятся в массивы
			for($j=2;$j<$b;$j=$j+2){
					$dataSpektr[] = substr($masivSektor[$i][$j],0,4).'-'.substr($masivSektor[$i][$j],4,2).'-'.substr($masivSektor[$i][$j],6,2);
					$timeSpektr[] = substr($masivSektor[$i][$j],8,2).':'.substr($masivSektor[$i][$j],10,2).':'.substr($masivSektor[$i][$j],12,2);


for($i=0; $i<count($masivSektor);$i++) {//»звлекаем координаты
		for($j=3;$j<$b;$j=$j+2){
				$f=file_get_contents("C:/Users/Crice123/Documents/new/vahta/$masiVahta[$i]/".$masivSektor[$i][$j]);
				$koorBig[]=explode(";",$f);
		}
		 
}
$c=count($koorBig);

or($i=0;$i<$c;$i++){//удаляем пустую ячейку
		unset($koorBig[$i][2]);
}

for($i=0;$i<$c;$i++){//&#402;елим на долготу и широту
		  $koorString[$i]=implode(";",$koorBig[$i]);
		  list($dolgota1[$i],$wirota1[$i])=explode(";",$koorString[$i]);
		  $dolgota[] = iconv("windows-1251", "UTF-8", "$dolgota1[$i]");
		  $wirota[] = iconv("windows-1251", "UTF-8", "$wirota1[$i]");  

		   }

for($i=0; $i<count($masivSektor);$i++) {//извлекаем данные из csv в один массив
		for($j=2;$j<$b;$j=$j+2){
				$fpon=fopen("C:/Users/Crice123/Documents/new/vahta/$masiVahta[$i]/".$masivSektor[$i][$j],"r");
				while(!feof($fpon)){
						$spekCsv[]=fgetcsv($fpon,1024,";");
				}		
				
		}
}
for($k=0;$k<($c)*1028;$k=$k+1028){//получаем данные время живое и реальное
		$vrJiv[] = $spekCsv[1024+$k][1];
		$vrReal[] = $spekCsv[1025+$k][1];
		unset($spekCsv[1028+$k]);//удаление не нужных ячеек
		unset($spekCsv[1027+$k]);
		unset($spekCsv[1026+$k]);
		unset($spekCsv[1025+$k]);
		unset($spekCsv[1024+$k]);
		for($i=0;$i<=($c)*1028;$i++){
				unset($spekCsv[$i][3]);
				unset($spekCsv[$i][4]);
				unset($spekCsv[$i][5]);
				unset($spekCsv[$i][6]);
				unset($spekCsv[$i][7]);
				unset($spekCsv[$i][8]);
				unset($spekCsv[$i][9]);
				unset($spekCsv[$i][10]);
		}
}


$db=mysql_connect("localhost","root",""); //
mysql_query("create database if not exists rootify",$db);
mysql_select_db("rootify",$db);
//mysql_query("drop table if exists testingv",$db);
$mycou = mysql_query("select count(*) from spektors");
mysql_query("create table if not exists sektors(idsek int not null auto_increment primary key, sektor varchar(20), datana4ala varchar(40), datakonca varchar(40))");
$mycau = mysql_query("select count (*) from sektors");
mysql_query("create table if not exists spektors(idspek int not null auto_increment primary key, dataSpektr varchar(40), timeSpektr varchar(40), dolgota varchar(40), wirota varchar(40),jivoe varchar(40),realnoe varchar(40),sektor varchar(20),idsek int not null,foreign key(idsek) references sektors(idsek) on delete cascade on update restrict)");

if(!empty($mycau)){mysql_close($db);//цикл для добавления данных из массивов в таблицу сектора
	}
	else {for($i=0;$i<$a;$i++){
				$sqli="insert into `sektors`(`sektor`,`datana4ala`,`datakonca`) values ('$masiVahta[$i]','$dataSpektr[$i]','$timeSpektr[$i]')";
				mysql_query($sqli);
	}
}

if(!empty($mycou)){mysql_close($db);//цикл для добавления данных из массивов в таблицу спекторы
	}
	else {for($i=0;$i<$c;$i++){
			$sql="insert into `spektors`(`dataSpektr`,`timeSpektr`,`dolgota`,`wirota`,`jivoe`,`realnoe`,`sektor`,`idsek`) values ('$dataSpektr[$i]','$timeSpektr[$i]','$dolgota[$i]','$wirota[$i]','$vrJiv[$i]','$vrReal[$i]','$masiVahta[$i]','$i')";
			mysql_query($sql);
	}
}

?>

...
Рейтинг: 0 / 0
09.04.2014, 12:32:51
    #38609670
Елена98
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложности с БД )
Вот бета бета версия интерфейса )
...
Рейтинг: 0 / 0
10.04.2014, 05:07:03
    #38610635
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложности с БД )
Елена98CSV и txt файлы связаны по названию, которая содержит дату и время спектра(т.е. 2013-11-15 03:57:32).
В txt файлах содержится информация о долготе и широте, в csv файлах каналы, энергия и импульсы из 1023 строк и 3х столбцов по которым строится график.
на 1024 строке и втором столбце Живое время, на 1025 строке 2 столбце Реальное время.
Елена98Первая таблица " Сектора " в нем хранится: 1)название Секторов(имена папок в папке А),2) Дата начала и 3)Дата конца (т.е. даты из названия файлов, первый и последний в папке сектора).sectors:
id int
name varchar(100)
dbeg date
dend date
Елена98Вторая таблица " Спектры " в нем хранится информация: 1)Дата,2)Время(из названия файлов), 3)Долгота,4)Широта(данные в txt файлах),5)Реальное время,6)Живое время(Данные на 1024,1025 строках и во втором столбце),7)Сектор(К которому относится спектр).spectrum:
id
idsector -- см.предыдущий пост про внешние ключи
dt datetime -- незачем разбивать на 2 поля
longitude
latitude
timereal
timelive
автор Данные из csv файлов до 1023 строки(т.е. канал энергия импульс) я не стала заносить в БД, думаю сделать линк по которому можно просмотреть эти данные, за одно и сам график.Ну и правильно.
spectrumdata:
idspectrum
-- тут все остальные дынные по спектру

Если не понимаете, как из такой структуры выбрать показанную табличку (с названиями, а не ид секторов) - читать про join до просветления.

PS. И вообще-то поля "начальное/конечное время" в первой таблице тоже не нужны, они элементарно высчитываются из 1+2 таблиц при необходимости...
PPS. Вам действительно стоит почитать теорию. Хотя бы про нормализацию.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сложности с БД ) / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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