Guest User

Untitled

a guest
Mar 5th, 2018
301
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.69 KB | None | 0 0
  1. <?php
  2.  
  3. /*
  4. Создайте класс для работы с csv в классе должны быть функции :
  5. разбор данных из csv в массив
  6. превращение данных из массива в csv
  7. запись данных в базу данных
  8. выгрузка данных из бд в csv файл
  9. */
  10. class File {
  11.  
  12. public $fopen;
  13. public $fileName;
  14. public $host = 'localhost';
  15. public $dbname = 'abdulov';
  16. public $db_user = 'root';
  17. public $db_password = '';
  18.  
  19. // конструктор для открытия доступа к файлу
  20. function __construct($fileName, $mode) {
  21. return $this->fopen = fopen($fileName, $mode);
  22. }
  23.  
  24. // метод для получения массива из CSV
  25. function fromCSVtoArr($delim) {
  26. $array = [];
  27. while ($data = fgetcsv($this->fopen, filesize($this->fileName), $delim)) {
  28. array_push($array, $data);
  29. }
  30. var_dump($array);
  31. fclose($this->fopen);
  32. }
  33.  
  34. // метод для передачи массива в файл
  35. function arrayToCSV($array, $delim) {
  36. $fp = fopen('file.csv', 'w');
  37. foreach ($array as $fields) {
  38. fputcsv($fp, $fields, $delim);
  39. }
  40. fclose($fp);
  41. }
  42.  
  43. // метод для подключения к базе
  44. function connection() {
  45. $dsn = "mysql:host=".$this->host.";dbname=".$this->dbname.";charset=utf8";
  46. $opt = array (
  47. PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
  48. PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
  49. );
  50. return $pdo = new PDO($dsn, $this->db_user, $this->db_password, $opt);
  51. }
  52.  
  53. /*просто рабочий метод для добавления в базу данных для меня
  54. function insertToDB() {
  55. $stmt = $this->connection()->prepare('INSERT INTO users SET login = ?, password = ?, surname = ?, name = ?, email = ?, address = ?');
  56. $stmt->execute(array('alex', 'Alex', 'Alex', 'Alexov', 'alex@gmail.com', 'Alex'));
  57. }*/
  58.  
  59. // метод для переноса массива в базу, переношу просто массив, а не файл CSV, можно и для файла сделать
  60. function insertToDB($array) {
  61. $stmt = $this->connection()->prepare('INSERT INTO users1 SET login = ?, name = ?, surname = ?, email = ?');
  62. for ($i=0; $i < count($array); $i++) {
  63. $stmt->execute($array[$i]);
  64. }
  65. }
  66.  
  67. // метод для выборки данных из базы в файл. в качестве аргумента передаем название таблицы
  68. function selectFromDBToFile() {
  69. $fp = fopen('dataDB.csv', 'w+');
  70. $stmt = $this->connection()->query('SELECT * FROM users1');
  71. $data = $stmt->fetchAll();
  72. foreach ($data as $value) {
  73. fputcsv($fp, $value, ';');
  74. }
  75. fclose($fp);
  76. }
  77. }
  78. ?>
Add Comment
Please, Sign In to add comment