· 8 years ago · Mar 06, 2018, 11:58 AM
1csv.php
2---------------------------------------------------------------------------------
3<?php
4require_once 'inc.class.php';
5
6$config = include 'config.php';
7
8$csv = new Csv($config);
9
10$csv->csvToMySQL();
11
12$csv->get_rnd();
13
14unset($csv);
15
16
17config.php
18---------------------------------------------------------------------------------
19<?php
20return array(
21 'db_conf' => array(
22 'db_host' => 'localhost',
23 'db_user' => 'root',
24 'db_pass' => '',
25 'db_name' => 'csv'
26 ),
27 'csv_filename' => '1.csv'
28);
29
30
31inc.class.php
32---------------------------------------------------------------------------------
33<?php
34class Csv
35{
36 private $_db;
37 private $handle;
38
39 //получаем в конÑтруктор конфиг, подключаемÑÑ Ðº БД, при отÑутÑтвии нужной таблицы Ñоздаем ее,
40 //открываем на чтение csv-файл
41 function __construct($conf) {
42 $this->db_connect($conf['db_conf']);
43 $this->table_create();
44 $this->handle = fopen($conf['csv_filename'], "r");
45 //$this->csvToMySQL();
46 }
47
48 function db_connect($db_conf) {
49 $this->_db = mysql_connect($db_conf['db_host'], $db_conf['db_user'], $db_conf['db_pass']) or die ("Can't connect to db...".mysql_error());
50 mysql_select_db($db_conf['db_name']) or die(mysql_error());
51 mysql_query ("SET NAMES utf8");
52 }
53
54 function table_create() {
55 $sql = <<<DOC
56 CREATE TABLE IF NOT EXISTS `users` (
57 `id` int(11) NOT NULL AUTO_INCREMENT,
58 `name` text NOT NULL,
59 `email` text NOT NULL,
60 `birthday` text NOT NULL,
61 `registration_date` int(11) NOT NULL,
62 `status` tinytext NOT NULL,
63 PRIMARY KEY (`id`)
64 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
65DOC;
66 mysql_query($sql) or die(mysql_error());
67 }
68
69 //поÑтрочно Ñчитываем csv-файл и заноÑим данные в БД
70 function csvToMySQL() {
71 //перемещаем указатель на вторую Ñтроку, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ñ„ÑƒÐ½ÐºÑ†Ð¸ÑŽ поÑтрочного ÑÑ‡Ð¸Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ fgets()
72 $data = fgets($this->handle);
73
74 while (($data = fgetcsv($this->handle, 1000, ";")) == true) {
75 //print_r($data); echo "<br/>";
76 $name = $data[0];
77 $email = $data[1];
78 $birthday = $data[2];
79 $reg_date = strtotime($data[3]);
80 $status = trim($data[4]);
81 $sql = "INSERT INTO users (name, email, birthday,registration_date, status)
82 VALUES(
83 '".$name."',
84 '".$email."',
85 '".$birthday."',
86 '".$reg_date."',
87 '".$status."'
88 );";
89 $query = mysql_query($sql) or die("Invalid query: " . mysql_error());
90 }
91 }
92
93 //в Ñтом методе получаем Ñлучайную запиÑÑŒ из БД, изменÑем в ней значение Ð¿Ð¾Ð»Ñ status
94 //и выводим измененную Ñтроку на Ñкран
95 function get_rnd()
96 {
97 $num = mysql_num_rows(mysql_query("SELECT id FROM users"));
98 $rnd = rand(1,$num);
99 $row = mysql_fetch_row(mysql_query("SELECT * FROM users WHERE id=".$rnd));
100
101 $row[5] = (trim($row[5]) == 'On') ? 'Off' : 'On';
102
103 mysql_query("UPDATE users SET status='".$row[5]."' WHERE id=".$rnd) or die(mysql_error());
104 $row[4] = date("d.m.Y G:i", (int)$row[4]);
105
106 echo "$row[1];$row[2];$row[3]; $row[4]; $row[5]";
107
108 }
109
110 //при уничтожении объекта рветÑÑ Ñоединение Ñ Ð‘Ð” и закрываетÑÑ csv-файл
111 function __destruct() {
112 mysql_close($this->_db) or die(mysql_error());
113 fclose($this->handle);
114 }
115}
116
117
1181.csv (пример входных данных)
119---------------------------------------------------------------------------------
120Ð¤Ð°Ð¼Ð¸Ð»Ð¸Ñ Ð˜Ð¼Ñ; E-mail; Дата рождениÑ; ЗарегиÑтрирован; СтатуÑ
121Иванов Иван; ivan@aaa.ru; 12.01.1974; 12.12.2007 15:41; On
122Петров Петр; petr@mailtest.ru; 01.03.1969; 13.12.2007 20:41; Off
123Сидоров Семен; sidr@test2.ru; 02.03.1989; 14.12.2007 5:21; Off
124Пупкин ВаÑилий; pupkin@testtest.ru; 18.11.1988; 15.12.2007 15:41; On
125Кузнецов ÐлекÑандр; smith@smith.com; 04.03.1999; 16.12.2007 3:28; On
126Пушкин ÐлекÑандр; pas@pas.ru; 06.06.1799; 17.12.2007 15:41; Off
127Лермонтов Михаил; lermontov@yyyy.ru; 03.10.1814; 18.12.2007 15:41; Off
128Гоголь Ðиколай; gogol@gggg.ru; 19.03.1809; 19.12.1999 15:41; Off