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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 24.04.2015, 15:46   #31
SaDiSST
Пользователь
 
Регистрация: 14.07.2011
Сообщений: 32
По умолчанию

Здравствуйте, Станислав. Снова.
Прошу прощения за длительный ответ. Думаю, Вы были свидетелем того, что творилось последние 2 дня с форумом.
Спасибо за материал, сейчас попробую заново. Стыдно, что вроде бы сам ссылку давал такую, а как возникла потребность - так сам же ею и не воспользовался. Обещаю исправиться.
SaDiSST вне форума
Старый 24.04.2015, 16:02   #32
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Цитата:
Сообщение от SaDiSST Посмотреть сообщение
Здравствуйте, Станислав. Снова.
Прошу прощения за длительный ответ. Думаю, Вы были свидетелем того, что творилось последние 2 дня с форумом.
Спасибо за материал, сейчас попробую заново. Стыдно, что вроде бы сам ссылку давал такую, а как возникла потребность - так сам же ею и не воспользовался. Обещаю исправиться.
Дерзайте пишите, ждем!=)
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума
Старый 24.04.2015, 16:22   #33
SaDiSST
Пользователь
 
Регистрация: 14.07.2011
Сообщений: 32
По умолчанию

set_data v0.2

Код:
public function set_data()
	{
		// Если размер массива больше 0
		if(count($this->mas_content)>0)
		{
			foreach($this->mas_content as $key => $value)
			{
				if (in_array($key, $this->mas_current)) 
				// если in_array(ключ, значения текущей позиции)
				{
					// В этом случае мы должны сделать запрос на обновление
					$sql = 'UPDATE product SET (cost, userID) WHERE cost='this->cost', userID='this->userID';
// затрагиваем только cost и userID. Кстати, а кавычки нужны?
							
					$result = mysqli_query($sql) or DIE('Update was unsuccessful: ' . mysqli_error());
				
				}
				else
				{
					// ID с такими записями не существуют делаем запрос на добавление
					$sql = 'INSERT INTO product (ID,name,name_trans,cost,small_text,long_text,userID) VALUES 
							("'.$value[0].'",
							 "'.$value[1].'",
							 "'.$value[2].'",
							 "'.$value[3].'",
							 "'.trim($value[4]).'",
							 "'.trim($value[5]).'",
							 "'.$this->user_id.'");';
					
					$result = mysql_query($sql) or die('Запрос не удался: ' . mysql_error());
					
					if (!$result) {
						// Например можно послать email об ошибке
						die('Неверный запрос: ' . mysql_error());
					}
	
				}
			
			}
		
		}
	}
Теперь вопросы:
1. .trim -> что это? Объясните, пожалуйста, ибо я нипанимат значения его
2. Нужны ли в IF-statement кавычки и скобки?
3. Правильно ли обновлять userID при обновлении товара? Если нет, то почему в else оно имеет место быть? Как идентификатор пользователя, добавившего товар, или оно будет играть ключевую функцию при "покупке" одного товара разными пользователями?
SaDiSST вне форума
Старый 24.04.2015, 16:42   #34
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Цитата:
1. .trim -> что это? Объясните, пожалуйста, ибо я нипанимат значения его
А говорите гуглить умеете ... https://php.net/manual/ru/function.trim.php

Код:
$sql = 'UPDATE product SET (cost, userID) WHERE cost='this->cost', userID='this->userID';
cost у вас 3 элемент массива после того как мы применили функцию explode а значит

Код:
$sql = 'UPDATE product SET cost="'.$value[3].'" WHERE ID="'.$value[0].'" AND userID='.this->userID;
если поле INT то кавычки можно не ставить.

Вы по моему не понимаете как происходит UPDATE. Но ведь с примером дал http://www.w3schools.com/pHP/php_mysql_update.asp


Код:
UPDATE table_name
SET column1=value, column2=value2,...
WHERE some_column=some_value

Цитата:
3. Правильно ли обновлять userID при обновлении товара? Если нет, то почему в else оно имеет место быть? Как идентификатор пользователя, добавившего товар, или оно будет играть ключевую функцию при "покупке" одного товара разными пользователями?
нет не правильно зачем? в else оно имеет место быть потому что мы должны добавить эту инфу в базу чтобы понять к какому пользователю относится этот товар. У Пети и Саши может быть один и тот товар с одной и той же ценой, у Пети в последствии цена изменится а у Саши нет. Если не будет UserID то вы обновите цену и Саши и Пети, Саша набьет вам глаз за такое, верно?

но по факту если у вас будет разные ID в екселе (а так должно быть потому что это ID, но я простите не знаю что у вас в голове=) ) то вместо вот этого

Код:
$sql = 'UPDATE product SET cost="'.$value[3].'" WHERE ID="'.$value[0].'" AND userID='.this->userID;
нужно написать вот это

Код:
$sql = 'UPDATE product SET cost="'.$value[3].'" WHERE ID="'.$value[0];
ID - это идентификатор и он уникальный и не может повториться поэтому мы сможем идентифицировать строчку для обновления именно по нему.
Я часть той силы, что вечно хочет зла, но вечно совершает благо..

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

Цитата:
Сообщение от Stanislav Посмотреть сообщение
А говорите гуглить умеете ... https://php.net/manual/ru/function.trim.php
Умею Вот что я нагуглил в прошлый раз:
Код:
// не совсем понятно значение ' .trim '. w3schools говорит, что он обрезает значение по обоим краям. В таком случае, мне не ясна его роль в коде. Объясните?
Просто не совсем правильно, видимо, понял, её роль.

Цитата:
Сообщение от Stanislav Посмотреть сообщение
cost у вас 3 элемент массива после того как мы применили функцию explode а значит

Код:
$sql = 'UPDATE product SET cost="'.$value[3].'" WHERE ID="'.$value[0].'" AND userID="'.this->userID;
Значит, explode разбило строки по точкам-с-запятой. Я думал, она будет разбивать отдельные элементы на позиции, прошедшие через таблицу (то бишь, "полный набор атрибутов - 1"; "полный набор атрибутов - 2").
Я сейчас домой поехал, чуть позже допишу мысль.

UPD:
Цитата:
Вы по моему не понимаете как происходит UPDATE.
Прошу прощения. Не обратил внимания на пример, сразу в код полез смотреть, как происходит. Это тоже исправлю
SaDiSST вне форума
Старый 24.04.2015, 21:40   #36
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

читайте официальную доку php.net тем более она на русский переведена большая часть.

trim - чистит удаляет пробелы (которые могу закрасться случайно)

по explode вот у вас строка например

Код:
$str = "1 ; 2; 3; 4; 5; 6";
если сделать так:

Код:
$res = explode(";",$str);
на выходе получится вот это:

Код:
array (
  0 => 1,
  1 => 2,
  2 => 3,
  3 => 4,
  4 => 5,
  5 => 6
)
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума
Старый 24.04.2015, 23:12   #37
SaDiSST
Пользователь
 
Регистрация: 14.07.2011
Сообщений: 32
По умолчанию

@Stanislav, спасибо. Как минимум, за терпеливость и содействие.
Давайте я еще раз попробую.

set_data() 0.3

Код:
public function set_data()
	{
		// Если размер массива больше 0
		if(count($this->mas_content)>0)
		{
			foreach($this->mas_content as $key => $value)
			{
				if (in_array($key, $this->mas_current)) 
				// если in_array(ключ, значения текущей позиции)
				{
					// В этом случае мы должны сделать запрос на обновление
					$sql = "UPDATE product SET cost=" '.$value[3].' " WHERE id=" '.$value[0].' ";
					// выводим результат.
					$result = mysqli_query($sql) or DIE('Update was unsuccessful: ' . mysqli_error());
				
				}
				else
				{
					// ID с такими записями не существуют делаем запрос на добавление
					$sql = 'INSERT INTO product (ID,name,name_trans,cost,small_text,long_text,userID) VALUES 
							("'.$value[0].'",
							 "'.$value[1].'",
							 "'.$value[2].'",
							 "'.$value[3].'",
							 "'.trim($value[4]).'",
							 "'.trim($value[5]).'",
							 "'.$this->user_id.'");';
					
					$result = mysql_query($sql) or die('Запрос не удался: ' . mysql_error());
					
					if (!$result) {
						// Например можно послать email об ошибке
						die('Неверный запрос: ' . mysql_error());
					}
	
				}
			
			}
		
		}
	}
Дальше... Дальше, я так понимаю, нам нужно вывести список текущих позиций, затем приварить к нему кнопку добавления/удаления в/из корзины, плюс кнопку загрузки файла. В необходимости последнего действия не уверен, но попробую взять эту крепость
Попробую завтра уже это всё написать. Надеюсь, вы поможете с корректировкой

Цитата:
читайте официальную доку php.net тем более она на русский переведена большая часть.
Курю мануалы. Вчера скачал. Вникаю.

Цитата:
trim - чистит удаляет пробелы (которые могу закрасться случайно)
Спасибо. Наконец до меня дошло.

Цитата:
explode
Вот за это особая благодарность.

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

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

Здравствуйте, Станислав.
Прошу прощение за долгое ожидание ответа. Курил мануалы, помногу.
Почему-то наш с Вами код (вернее, чисто Ваш), не желает принимать .csv-файл.

Пораскинул мозгами, решил добавить в скрипт функцию создания новой БД и таблицы в автоматическом режиме, при запуске скрипта:

Код:
<?php

	//Скрипт создания новой БД "Product" и таблицы "Product"

	$host = 'localhost';
	$user = 'root';
	$pass = '';
	
	//теперь создаём БД с вышеуказанными параметрами
	$mysqli = @new mysqli($host, $user, $pass);
	
	if ($mysqli->connect_errno) {
		exit($mysqli->connect_error);
	}
	
	$sql = 'CREATE DATABASE Product';
	
	if ($mysqli->query($sql) === TRUE) {
		echo 'База данных \'Product\' была успешно создана; ';
	} else {
		exit($mysqli->error);
	}
	
	$sql = 'USE Product';
	
	if ($mysqli->query($sql) === TRUE) {
		echo 'Таблица \'Product\' для БД \'Product\' была успешно создана; ';
	} else {
		exit($mysqli->error);
	}
	
	$sql  = 'CREATE TABLE Product (
		ID INT UNSIGNED,
		name VARCHAR(150),
		name_trans VARCHAR(150),
		price INT UNSIGNED,
		small_text VARCHAR(30),
		big_text TEXT,
		user_id VARCHAR(255)
	) DEFAULT CHARSET=utf8;';
	
	if ($mysqli->query($sql) === TRUE) {
		echo 'Таблица \'Product\' успешно размечена; ';
	} else {
		exit($mysqli->error);
	}
	$mysqli->close();
?>
Так, постараюсь сейчас продолжить мысль.
SaDiSST вне форума
Старый 26.04.2015, 21:46   #40
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

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


Купить рекламу на форуме - 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