Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Проблемы с PHP + (цикл массив Mysql) / 7 сообщений из 7, страница 1 из 1
04.04.2014, 09:08
    #38605074
Елена98
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с PHP + (цикл массив Mysql)
Здравствуйте! Я только начала программировать так, что не ругайте) Собственно у меня возникли вопросы и хотелось бы узнать на них ответы от профессионалов. Имеется папка А. С файлами a.csv, a.txt, b.csv, b.txt, c.csv, c.txt. Взяла названия и получила массив:
, потом через цикл разбила названия на две переменные $data и $time и получила такую таблицу:
. Как сделать из них массив?)) Потом в txt файлах хранятся на одной строке данные разделенные ";". и вроде тоже получила таблицу из переменных $llv $oov:
. Такой же вопрос, как сделать массив )
И это всё я хочу чтобы импортировалось в mySQL
моя главная проблема=( у меня всегда получается одна строка, и данные вводятся не все, и проблемы с символами(в долготе и широте только первые цифры отображаются...). Подскажите что делать =))
Вот что я накодировала))

<?php
$dir = "C:/Users/Stella/Documents/new/";
if(is_dir($dir)) {
$files = scandir($dir);
array_shift($files);
array_shift($files);
for($i=0; $i<sizeof($files); $i++) echo '-файл: '.$files[$i].';<br>';
}
else echo $dir.' -такой директории нет;<br>';

$i=0;
while($i<=sizeof($files)){
$ddv = substr($files[$i],0,4).'-'.substr($files[$i],4,2).'-'.substr($files[$i],6,2);
$ttv = substr($files[$i],8,2).':'.substr($files[$i],10,2).':'.substr($files[$i],12,2);
echo $ddv;
echo' ';
echo $ttv;
echo'<br>';
$i=$i+2;
if ($i==sizeof($files))
break;
}


$i=1;
while($i<=sizeof($files)){
$f = file_get_contents("C:/Users/Crice123/Documents/new/Okassov/$files[$i]");
list($llv,$oov) = explode(';', $f);
$i=$i+2;
echo ' ';
echo $llv;
echo ' ';
echo $oov;
echo '<br>';
?>



И немножко mySQL



$db=mysql_connect("localhost","root","1234");
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, vahdat varchar(40), vahtim varchar(40), vahdolg varchar(40), vahwir varchar(40))");
/*mysql_query("SET NAMES 'utf-8'");
mysql_query("SET CHARACTER SET 'utf-8'");
mysql_query("SET SESSION collation_connection = 'utf-8_general_ci'");
mysql_query("INSERT INTO testingv(`vahdat`,`vahtim`) VALUES ('$ddv','$ttv')");
mysql_query("load data local infile 'C:/Users/Stella/Documents/new/$files[$i]' into table testingv(`vahdolg`,`vahwir`) lines terminated ';'");*/
mysql_query("INSERT INTO testingv(`vahdat`) VALUE ('$ddv')");
//,`vahdolg`,`vahwir` ,'$oov','$llv'
mysql_query("INSERT INTO testingv(`vahtim`) VALUE ('$ttv')");
mysql_query("INSERT INTO testingv(`vahdolg`) VALUE ('$oov')");
mysql_query("INSERT INTO testingv(`vahwir`) VALUE ('$llv')");
$result=mysql_query("SELECT * FROM testingv");

echo '<table border =1>';
echo'<tr>';

while($field=mysql_fetch_field($result)){
print"<th>$field->name</th>\n";

}
print"</tr>";



while($row=mysql_fetch_assoc($result)){
print"<tr>\n";
foreach($row as $col=>$val){
print"<td>$val</td>\n";
}
print"</tr>\n\n";

}

print"</table>";
//$i=$i+2;
//}




то, что получается у меня...
...
Рейтинг: 0 / 0
07.04.2014, 12:39
    #38607123
Sanjar88
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с PHP + (цикл массив Mysql)
массив
Код: php
1.
$arr = array($data, $time)

, почему вы каждый раз создаёте и удаляете базу? или так оно и нужно?
нуууу вы и даётееее, майскул вообще жесть давайте так, покажу как надо вносить данные в БД, а с массивом сами разберётесь
подключаемся к БД
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
function db_connect()
    {
        $host = 'localhost';
        $user = 'admin';
        $pswd = 'admin123';
        $db = 'test';
        
        $connection = mysql_connect($host, $user, $pswd);
        mysql_query("SET NAMES utf8");
        if(!$connection || !mysql_select_db($db,$connection))
        {
            return false;
        }
        return $connection;
    }


далее функция для добавление одной записи в БД
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
function add_data() 
    {
        db_connect();

		
        mysql_query(" INSERT INTO test (дата, время, долгота, широта) VALUES ($data, $time, $llv, $oov) ");
		
    }


ну это для одной записи, а вам нужно в цикле массив добавить, с этим я помочь не могу
...
Рейтинг: 0 / 0
07.04.2014, 14:19
    #38607277
Елена98
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с PHP + (цикл массив Mysql)
Sanjar88, Спасибо сейчас попробую вставить ) а то когда страницу загружала на столько же элементов увеличивалось БД, решила удалить потом создать :D
...
Рейтинг: 0 / 0
07.04.2014, 14:37
    #38607302
Елена98
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с PHP + (цикл массив Mysql)
Sanjar88, что я не так сделала?))

Код: 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.
function db_connect()
    {
        $host = 'localhost';
        $user = 'root';
        $pswd = '';
        $db = 'rootify';
        
        $connection = mysql_connect($host, $user, $pswd);
        mysql_query("SET NAMES utf8");
		
        if(!$connection || !mysql_select_db($db,$connection))
        {
            return false;
        }
        return $connection;
    }
	

//далее функция для добавление одной записи в БД
function add_data(){
    db_connect();
			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);
			}
       
		
}
add_data();
...
Рейтинг: 0 / 0
07.04.2014, 15:40
    #38607380
Sanjar88
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с PHP + (цикл массив Mysql)
id не обязательно вставлять, он по идеи auto_incriment т.е. сам формирует число

а переменная $cou изначально чему равна ?
и покажите как вы в массив засунули все это
...
Рейтинг: 0 / 0
07.04.2014, 22:52
    #38607747
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с PHP + (цикл массив Mysql)
Елена98,

тааак... Ладно :) Скидка на "Я только начала программировать...", иначе бы закритиковал по полной.

С самого начала... Работа с mysql базами происходит по принципу:
1. Соединение (mysql_connect)
2. Установка разного рода параметров (обычно ограничивается "SET NAMES `utf8`")
3. Запрос (mysql_query("сам запрос"))
4. получение ответа
5. разбор результата (mysql_fetch_row например)... (если была выборка, а не вставка/правка)
6. закрытие соединения (mysql_close())

пункты 3,4 и 5 повторяются сколько угодно раз... пункты же 1,2 и 6 выполняются один раз для каждого соединения (соединений может быть много, потому для начала можно считать для простоты, что один раз в течении выполнения скрипта)

php общается с mysql посредством очень простого протокола с принципом "запрос-ответ". то есть mysql_query, mysql_fetch_row (или mysql_fetch_[тут целый список функций]).


По указанным выше функциям документацию найти очень просто :) Тут если что, пишите...



Теперь по поводу php части :). Первым делом что вижу плохого в представленном коде (где со словами "что я сделала не так"), так это $dataSpektr[$i] и подобного рода вставки прямо в строке. Не знаю будет ли так работать (насколько знаю не должно, и результирующая строка будет сильно отличаться от ожидаемой), но правильно обрамлять такие массивы в фигурные скобки {$dataSpektr[$i]}

Второе - про те же массивы в строке.... Что в них записано? то есть они как либо инициализируются в самой функции? Дело в том, что есть такое понятие как область видимости переменных.... Так вот, глобальные переменные внутри функции не видны, если это не прописать явно (чего делать не советуют). Потому скорее всего, что в данном случае происходят манипуляции над неинициализированными переменнами (по факту они считаются пустыми).


Ну вроде всё... пока больше ничего "не так" вроде не вижу :)
...
Рейтинг: 0 / 0
08.04.2014, 06:33
    #38607848
Елена98
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с PHP + (цикл массив Mysql)
Програмёр, не поняла как делать с функциями и сделала вот так )
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
$db=mysql_connect("localhost","root","");
mysql_query("create database if not exists rootify",$db);
mysql_select_db("rootify",$db);

$mycou = mysql_query("select count(*) from testingv");

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),jivoe varchar(40),realnoe varchar(40))");

if(!empty($mycou)){mysql_close($db);
	}
	else {for($i=0;$i<$cou;$i++){
	$sql="insert into `testingv`(`id`,`dataSpektr`,`timeSpektr`,`dolgota`,`wirota`,`jivoe`,`realnoe`) values (null,'$dataSpektr[$i]','$timeSpektr[$i]','$dolgota1[$i]','$wirota1[$i]','$b1[$i]','$c1[$i]')";
	mysql_query($sql);
	}
}


Вроде теперь и дропать не надо, и количество не увеличивается каждый раз ) когда переменную поместила в {} у меня вышло рандомное число 1987 ))

Массивы склеивались с разных файлов, даже названия участвовали ) Вот небольшие скрины

...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Проблемы с PHP + (цикл массив Mysql) / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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