Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 20.04.2015, 21:39   #11
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

давайте для начала это разберем

Нужно:[LIST][*]Создать БД MySQL таблицу с семью полями;
  • ID позиции;
  • название позиции;
  • транслит названия;
  • цена позиции;
  • краткое описание;
  • полное описание;
  • user ID.
[*] PHP-script, который импортирует данные из CSV-файла прямиком в БД. При этом:[LIST][*]если ID позиций совпадают - позиция обновляется;[*]если ID позиций НЕ совпадают - товар вноситя в базу как "новый";[*]в сессии имеется ключ пользователя 'user_id', который совершает импорт. Если ID позиций одного пользователя пересекаются с ID позиций другого пользователя, то позиция одного не должна затронуть позицию другого.

а то какие то дислокации пошли...
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума
Старый 20.04.2015, 21:46   #12
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Я, пожалуй, перенесу эту тему в раздел PHP
Вадим Мошев вне форума
Старый 20.04.2015, 21:47   #13
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
Я, пожалуй, перенесу эту тему в раздел PHP
отличная идея, а то тегов нету. спасибо

Вообщем сильно я стараться не буду. главное чтобы вы поняли суть. время особо нету.

На текущий момент имеем класс который умеет, читать файл CSV складывать результат в массив. Второй метод берет текущие существующие ID из базы и пока складывает их тоже в массив (пока заготовка) и метод - заготовка которая будет писать или обновлять в базе строки спарсенные с файла. Хочу видеть ваши вопросы. и как вы стали бы дописывать метод set_data

Код:
<?php

class Parser {
	
	public $strStart = 2;
	public $mas_content = array();
	public $mas_current = array();
	
	public function __construct ()
	{
		mysql_connect("localhost","****","*****") OR DIE("Не могу создать соединение "); 
		mysql_select_db("test") or die(mysql_error());
		ini_set('error_reporting', E_ERROR);
		ini_set('display_errors', 1);
		ini_set('display_startup_errors', 1);
	}
	
	public function get_file()
	{
	
		$file_content = file ('products.csv');
		
		for ($i = $this->strStart; $i <= count($file_content); $i++) {
			if(isset($file_content[$i]))
			{
				$val = explode(';',$file_content[$i]);
				$mas[$val[0]] = $val;	
			}
		}
		
		if(isset($mas))
		{
			$this->mas_current = $mas;
		}
		
		
	}
	
	public function get_current_data()
	{	
		
		$sql = "select ID from product"; 
		$result = mysql_query($sql) or die('Запрос не удался: ' . mysql_error());
		
		
		while($item = mysql_fetch_assoc($result)) {
			$mas[] = $item["ID"];	
		}
		
		$this->mas_current = $mas;
		
	}
	
	public function set_data()
	{
	
	
	
	}

}

$h = new Parser();
$h->get_file();
$h->get_current_data();

?>
Я часть той силы, что вечно хочет зла, но вечно совершает благо..

Последний раз редактировалось Stilet; 05.05.2015 в 14:17.
Stanislav вне форума
Старый 21.04.2015, 13:33   #14
SaDiSST
Пользователь
 
Регистрация: 14.07.2011
Сообщений: 32
По умолчанию

Снова здравствуйте. Прошу прощения за долгий ответ.
Давайте со всем по-порядку.


Код:
<?php

class Parser { //создаём класс
	
	public $strStart = 2; // а почему 2? Это номер строки, с которой начинается счёт?
	public $mas_content = array();
	public $mas_current = array();
	
	public function __construct () // конструктор нового элемента для класса 'Parser';
	{
		mysql_connect("localhost","****","*****") OR DIE("Не могу создать соединение "); // подключаемся к юзеру БД или прерываем;
		mysql_select_db("test") or die(mysql_error());
              // выбор БД/разрыв соединения. Только неясно, откуда mysql_error() будет браться. Или это интегрированная команда?
		ini_set('error_reporting', E_ERROR);
		ini_set('display_errors', 1);
		ini_set('display_startup_errors', 1); // установка значения конфигурации('название конфигурации', значение конф.)
	}
	
	public function get_file() 
// обращаемся к файлу 'products.csv', циклом for(задаем значение переменной $i = $this->2; цикл завершается по 
завершении контента в .csv-файле; переходим по строкам). Так?
	{
	
		$file_content = file ('products.csv');
		
		for ($i = $this->strStart; $i <= count($file_content); $i++) {
			if(isset($file_content[$i]))
			{
				$val = explode(';',$file_content[$i]); // прерываем строку символом " ; ", идём по содержимому файла[$i] 
				$mas[$val[0]] = $val;	//значение этой переменной мне не совсем понятно...
			}
		}
		
		if(isset($mas)) // если проверка " $mas " на булево значение true успешна, 
		{
			$this->mas_current = $mas; // устанавливаем значение $mas в property ' $this.mass_current ' array
		}
		
		
	}
	
	public function get_current_data()
	{	
		
		$sql = "select ID from product";  // берем ID продукта
		$result = mysql_query($sql) or die('Запрос не удался: ' . mysql_error());
                   // либо берем $sql и обрабатываем его в БД, либо разрыв действия;
		
		
		while($item = mysql_fetch_assoc($result)) { // до тех пор, пока $item может быть найден в ассоциативном массиве БД
			$mas[] = $item["ID"];	 // array ' $mas ' заполняется данными $item['ID']
		}
		
		$this->mas_current = $mas; // добавляем новый property $this.mas_current
		
	}
	
	public function set_data()
	{
	
	
	
	}

}

$h = new Parser(); // конструктор для Parser
$h->get_file(); // prop $h.get_file();
$h->get_current_data(); // prop $h.get_current_data();

?>
Много ошибок?

Идём дальше.

Код:
public function set_data()
	{
	
	$sql_id = 'select ID from product';
	$sql_name = 'select name from product';
	$sql_trans = 'select trans from product';
	$sql_cost = 'select price from product';
	$sql_smallText = 'select small-text from product';
	$sql_longText = 'select long-text from product';

	$getInfoFromDB = function($getInfo) {
		$getInfo = mysql_query($this.sql_id * $this.sql_name * $this.sql_trans * $this.sql_cost * $sql_smallText * $sql_longText); 
         //считываем информацию из БД.

		if ($sql_id == $csvFile->id) {
			$update = mysql_query(UPDATE 'products' SET 'id' = 'this->id', 'name' = 'this->name',
                              'trans' = 'this->trans', 'price' = 'this->price', 'small-text' = 'this->small-text', 'long-text' = 'this->long-text');
                       // обновляем значения. Не уверен, нужно ли обновлять ID, name, trans и остальное, кроме цены.
		}
		
		else if ($sql_id !== $csvFile->id) {
			$infile = mysql_querry(LOAD DATA INFILE ('products.csv') INTO TABLE 'products'); 
                       // вот тут точно нужно добавление ID и всех остальных параметров.
		}
	});
	
}
Наверняка, правок великое множество. Но в целом в правильном ли направлении идёт мой мысленный поток?

Последний раз редактировалось Stilet; 05.05.2015 в 14:18.
SaDiSST вне форума
Старый 21.04.2015, 13:37   #15
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

нет, я вижу база маленькая. я прокомментирую код по возможности, сейчас пока нет времени со всем по порядку разберемся, может еще кто присоединится
Я часть той силы, что вечно хочет зла, но вечно совершает благо..

Последний раз редактировалось Stanislav; 21.04.2015 в 13:40.
Stanislav вне форума
Старый 21.04.2015, 13:41   #16
SaDiSST
Пользователь
 
Регистрация: 14.07.2011
Сообщений: 32
По умолчанию

Вернусь к вопросам:

1. Подскажите, как добавить и что делать с ключом user_id, чтобы товары двух пользователей при пересечении не трогали друг друга;
2. Вывод на экран всего списка продуктов осуществляется for-циклом?
3. Вышеописанный мною ответ о составлении метода " set_data() " слишком убог?

Спасибо. Вы правы, базы во мне маловато. Codecademy даёт лишь самые азы, но их не слишком много. Может, посоветуете какую литературу?

Последний раз редактировалось Stilet; 05.05.2015 в 14:19.
SaDiSST вне форума
Старый 21.04.2015, 13:43   #17
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Цитата:
Сообщение от SaDiSST Посмотреть сообщение
Вернусь к вопросам:

1. Подскажите, как добавить и что делать с ключом user_id, чтобы товары двух пользователей при пересечении не трогали друг друга;
2. Вывод на экран всего списка продуктов осуществляется for-циклом?
3. Вышеописанный мною ответ о составлении метода " set_data() " слишком убог?
Сейчас мы занимаемся первым вопросом, вывод всего - дело 3 минут.
Не хочу вас обижать но да ваш код никуда не годится


Код:
Может, посоветуете какую литературу?
пишите больше кода, экспериментируйте, смотрите как пишут код другие, попытайтесь разобраться как работает и как работать на каком нибудь фреймворке например codeigniter, и пользуйтесь гуглом

вот например вы пишите
Код:
$val = explode(';',$file_content[$i]); // прерываем строку символом " ; ", идём по содержимому файла[$i]
загуглите функцию explode и потом напишите заново что она делает и для чего я ее там написал, если не разберетесь все равно напишите разберем вместе
Я часть той силы, что вечно хочет зла, но вечно совершает благо..

Последний раз редактировалось Stanislav; 21.04.2015 в 13:47.
Stanislav вне форума
Старый 21.04.2015, 13:48   #18
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Код:
($this.sql_id * $this.sql_name * $this.sql_trans * $this.sql_cost * $sql_smallText * $sql_longText);
Вы на каком языке пишете? Как вы так строки перемножить хотите?

И пока вы не начали конкатенировать строки для SQL запросов

посмотрите на prepared statement http://php.net/manual/en/mysqli.quic...statements.php

И mysql_ функции замените лучше на mysqli_ или PDO.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума
Старый 21.04.2015, 13:51   #19
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

я вообще забыл когда пользовался нативными подключениями, но для автора лучше пока оставить как есть, ибо я смотрю познаний не так много, базу потом отрефакторить можно
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума
Старый 21.04.2015, 13:53   #20
SaDiSST
Пользователь
 
Регистрация: 14.07.2011
Сообщений: 32
По умолчанию

Я умею пользоваться Гуглом
explode - разбивает string на array values, используя заданный символ, в нашем случае - ' ; ' выполняет функцию разделителя, разбивает файл, путь которого задан переменной $file_content[$i], где $i циклирует данные в файле от начала и до конца. Так?

Цитата:
Вы на каком языке пишете? Как вы так строки перемножить хотите?
Это я так JS и PHP путаю, и, лишь вчера взявшись за изучение БД, стараюсь вывести значения переменных каждой строки

Цитата:
И mysql_ функции замените лучше на mysqli_ или PDO.
Спасибо, Вы правы. Я уже прочёл о том, что PHP в некотором времени перестанет поддерживать некоторые из mysql_ функций.

Последний раз редактировалось Stilet; 05.05.2015 в 14:15.
SaDiSST вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
csv 2 MySQL utf8 avduevsky PHP 2 30.04.2012 02:24
Конвертация CSV в MySQL -MagicAlex- SQL, базы данных 4 08.03.2011 20:54
Робота CSV с PHP Angel-ll PHP 0 10.09.2010 16:58
импорт csv в базу mysql andrey_94 PHP 3 26.08.2009 14:14
импорт csv в базу mysql andrey_94 Помощь студентам 3 26.08.2009 13:25