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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 21.04.2015, 16:23   #21
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
PHP в некотором времени перестанет поддерживать некоторые из mysql_ функций.
Вообще-то все.
И не "в некотором времени", а с РНР 5.5, вышедшего 3 года назад.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума
Старый 21.04.2015, 16:35   #22
SaDiSST
Пользователь
 
Регистрация: 14.07.2011
Сообщений: 32
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Вообще-то все.
И не "в некотором времени", а с РНР 5.5, вышедшего 3 года назад.
Прошу прощения. Наверняка для вас это такое же оскорбление, практически личное, как для меня слово "ехай"

@Stanislav
А как насчёт такого варианта (общий синтаксис взял отсюда):




Код:
public function set_data() {

	// Подключаемся к БД
	$conn = mysqli_connect('localhost', 'username', 'pass', 'db_test');
	if (!$conn) { // если подключение отсутствует
		die("Подключение не удалось: " . mysqli_connect_error()); прерываем, выдаём ошибку
	}

	for($n = 0; $n <= $file_row; $n++) { // пускаем for-цикл, работающий по кол-ву строк. 

		//теперь апдейтим prop для каждой позиции
		$sql = "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 WHERE id = n"; 

		if ($mysqli->id !== $this->id) { // перечислим все пропы в таблице базы
			$h = new Parser() {
			$h->id = $this->id;
			$h->name = $this->name;
			$h->trans = $this->trans;
			$h->cost = $this->cost;
			$h->small-text = $this->small-text;
			$h->long-text = $this->long-text;
		};
			// тут хочу сделать так, чтобы при несоответствии ID добавлялся новый товар.
		}


		else if (mysqli_query($conn, $sql)) { // если есть контакт, $sql выполнена, выводим сообщение об успешном выполнении обновления.
			echo "Данные обновлены";
		}


	
		else {
			echo "Ошибка обновления данных: " . mysqli_error($conn);
		}

	}


	mysqli_close($conn);

}
Стал ли я ближе к истине?

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

Время нету много.

Код:
<?php

class Parser {
	
	public $strStart = 2;
	public $mas_content = array();
	public $mas_current = array();
	// user id мы разберемся позже пока возьмем его как 0
	public $user_id = 0;
	
	public function __construct ()
	{
		mysql_connect("localhost","**","***") OR DIE("Не могу создать соединение "); 
		mysql_select_db("test") or die(mysql_error());

	}
	
	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]);
				$this->mas_content[$val[0]] = $val;	
			}
		}
		
	}
	
	public function get_current_data()
	{	

		$sql = "select ID from product"; 
		$result = mysql_query($sql) or die('Запрос не удался: ' . mysql_error());
		

		while($item = mysql_fetch_assoc($result)) {
			// Собрали ID которые уже существуют в базе
			$this->mas_current[] = $item["ID"];
		}		
		//echo '<pre>';
		//print_r($this->mas_current);
		
	}
	
	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))
				{
					// В этом случаи мы должны сделать запрос на обновление
					
				}
				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());
					}
	
				}
			
			}
		
		}
	}

}


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

по аналогии сделайте запрос на обновление. еще у вас какая то беда с кодировкой файла 1-2 строка в UTF 3-4 (кажется в кодировке ASCII)

А так же вы не правильно сделали таблицу, зачем всем полям INT присвоили? чутка поправил

Код:
CREATE TABLE IF NOT EXISTS `product` (
  `id_row` int(11) NOT NULL AUTO_INCREMENT,
  `ID` int(11) DEFAULT NULL,
  `name` varchar(120) DEFAULT NULL,
  `name_trans` varchar(120) DEFAULT NULL,
  `cost` float DEFAULT NULL,
  `small_text` text,
  `long_text` text,
  `userID` int(11) DEFAULT NULL,
  PRIMARY KEY (`id_row`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Я часть той силы, что вечно хочет зла, но вечно совершает благо..

Последний раз редактировалось Stilet; 05.05.2015 в 14:16.
Stanislav вне форума
Старый 22.04.2015, 10:23   #24
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,149
По умолчанию

а меня все терзает вопрос - в каком месте тут ДВА да еще и ДЫМЯЩИХСЯ MySQL ???
ADSoft вне форума
Старый 22.04.2015, 10:54   #25
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
а меня все терзает вопрос - в каком месте тут ДВА да еще и ДЫМЯЩИХСЯ MySQL ???
просто аллюзия на http://www.kinopoisk.ru/film/522/
Serge_Bliznykov вне форума
Старый 22.04.2015, 13:27   #26
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
а меня все терзает вопрос - в каком месте тут ДВА да еще и ДЫМЯЩИХСЯ MySQL ???
один мускуль на порту 3307 он будет запросы на INSERT делать, второй мускуль на порту 3306 будет запросы на UPDATE делать. все просто.
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума
Старый 22.04.2015, 17:20   #27
SaDiSST
Пользователь
 
Регистрация: 14.07.2011
Сообщений: 32
По умолчанию

Раз по аналогии, то, видимо, как-то так...

Код:
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))
				{
					// В этом случае мы должны сделать запрос на обновление
					$ask = 'UPDATE product (ID,name,name_trans,cost,small_text,long_text,userID) VALUES
// не трогаем ID, name, name_trans (не нужно, наверное, переназывать единицу массива)
							("'.$value[3].'",
							 "'.trim($value[4]).'", 
// не совсем понятно значение ' .trim '. w3school говорит, что он обрезает значение по обоим краям. В таком случае, мне не ясна его роль в коде. Объясните?
							 "'.trim($value[5]).'",
							 "'.$this->user_id.'");';
					$result = mysqli_query($ask) 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());
					}
	
				}
			
			}
		
		}
	}
SaDiSST вне форума
Старый 22.04.2015, 19:03   #28
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

почитайте как делать запрос на UPDATE
http://www.w3schools.com/php/php_mysql_update.asp

подсказка нет условия WHERE ID = ......

код проверяли? запускали?
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума
Старый 22.04.2015, 19:07   #29
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Там не только нет WHERE, а и вообще формат INSERT-а использован
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума
Старый 22.04.2015, 19:12   #30
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Там не только нет WHERE, а и вообще формат INSERT-а использован
ссылку на доку я дал, видимо автор буквально принимает мои слова по поводу "сделай по аналогии"
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
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