Перейти к содержимому


Проблема в вычислении

web-версия файлы

Сообщений в теме: 9

#1 aleks.goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 198 сообщений
  • Пол:Мужчина
  • Город:Йошкар-ола

Отправлено 12 Август 2014 - 08:52

Добрый день. Есть код который стоит на доп. действие. В нем я передаю сообщение через send_template.
Проблема с записью файла - если я записываю в $line то файл открывается но если я пытаюсь передать значение в массив то ничего тне получается и пишет что файл отсутствует. Подскажите пожалуйста чем может быть вызвана эта проблема?
Вот код:

if (isset($_REQUEST["comment"]) || $_FILES["files"]["name"] != 0)
   {	  
	  if(is_array($_FILES['files']['tmp_name']))
	   {
		 $count = count($_FILES['files']['tmp_name']);
		 for($i = 0; $i < $count; $i++)
		 {
			   if( $_FILES['files']['error'][$i] == 0 )
			  {
				$tmpname = $_FILES['files']['tmp_name'][$i];
				$named = $_FILES['files']['name'][$i];
			  
				$dat = file_get_contents($tmpname);
				save_data_file(9760, $line['id'], $named, $dat);  
				$line['Файлы'] = $line['Файлы'] ? ($line['Файлы']."\\r\\n".$named) : $named;
				$mas['Файлы'] = $mas['Файлы'] ? ($mas['Файлы']."\\r\\n".$named) : $named;
			  
			  }
		 }
		
	   }
		
	
	 $mas['Кому'] = $line['От кого'];
	 $mas['Имя отправителя'] = $user['fio'];
	 $mas['Сообщение']=$_REQUEST["comment"];
	 $mas['От кого'] = $user['e_mail'];
	 $mas['Тема'] = "Ответ на обращение от клиента ".$line['Имя отправителя'];
	 $mas['Дата'] = date("Y-m-d H:i:s");
	 $mas['Поставщики'] = $line['Поставщики']['ID'];
	 $mas['Контрагент'] = $line['Контрагент']['ID'];
	 $new_id = insert_query($mas, "Почта");
	 send_template(440, "id=$new_id");	
		
	 echo "<script>";
	 echo "window.opener.location.reload(1);"; // Перезагружаем родительское окно
	 echo "window.close()"; // Закрываем текущее
	 echo "</script>";

Сообщение отредактировал aleks.goodcolor: 12 Август 2014 - 08:53


#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 12 Август 2014 - 09:12

Ну так вы и сохраняете файл (через save_data_file) только в одну из таблиц, а во-вторую - только имя файла в поле. Естественно что файл будет не найден во второй таблице.

#3 aleks.goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 198 сообщений
  • Пол:Мужчина
  • Город:Йошкар-ола

Отправлено 12 Август 2014 - 09:16

все происходит в одной таблице - аналогичный пример в другой таблице работает.

#4 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 12 Август 2014 - 09:44

Просмотр сообщенияaleks.goodcolor (12 Август 2014 - 09:16) писал:

все происходит в одной таблице

Как это "в одной таблице", если в коде вы сами пишете имя файла в 2 записи - в текущую (в переменной $line) и в массив $mas, который затем как раз добавляете в другую таблицу ("Почта")? При этом, повторюсь, сам файл сохраняете только в текущей записи, а в другой таблице - нет!

#5 aleks.goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 198 сообщений
  • Пол:Мужчина
  • Город:Йошкар-ола

Отправлено 12 Август 2014 - 10:07

Текущая таблица и есть таблица почта.

#6 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 12 Август 2014 - 10:27

Я вам про Фому, а вы мне про Ерему. Да какая разница, какая у вас текущая таблица, если вы все равно пишете имя файла в 2 РАЗНЫХ записи - в текущую (через $line) и в другую (через $mas), при этом сохраняя реальный файл только в ТЕКУЩЕЙ записи! Я вам уже 3 раза это повторил, а вы все на абсолютно не то что нужно свое внимание обращаете.

#7 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 12 Август 2014 - 10:32

Вот иллюстрация к тому, что я пишу:

// пишете имя файла в поле ТЕКУЩЕЙ записи:
$line['Файлы'] = $line['Файлы'] ? ($line['Файлы']."\\r\\n".$named) : $named;
// сохраняете САМ файл в ту же ТЕКУЩУЮ запись
save_data_file(9760, $line['id'], $named, $dat);

Второго пункта для $mas у вас коде нет!

#8 aleks.goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 198 сообщений
  • Пол:Мужчина
  • Город:Йошкар-ола

Отправлено 12 Август 2014 - 10:41

Извините меня конечно, но может тогда объясните мне почему такая же реализация работала в другой таблице и если я делаю запись в текущую строку, то как мне сделать запись в строку которую я только еще формирую? Все дело в id?

Сообщение отредактировал aleks.goodcolor: 12 Август 2014 - 10:41


#9 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 12 Август 2014 - 10:57

Цитата

Извините меня конечно, но может тогда объясните мне почему такая же реализация работала в другой таблице

Это в принципе невозможно, и от таблицы не зависит. Если в коде нет сохранения файла - он там не появится волшебным образом сам по себе. Очевидно, вы просто путаете что-то.

Цитата

и если я делаю запись в текущую строку, то как мне сделать запись в строку которую я только еще формирую? Все дело в id?

Разумеется, в id, т.к. у вас в коде сохранение только для $line['id']. Что касается формируемой строки, то там id еще не известно и заранее вы само собой файл не сохраните, но что мешает вам его сохранить после добавления новой записи? Вот так к примеру:

$new_id = insert_query($mas, "Почта"); // в $new_id как раз и лежит id добавленной записи
save_data_file(9760, $new_id, $named, $dat); // используем $new_id

Но т.к. у вас файлов может быть несколько и они обрабатываются по циклу, то правильнее просто заранее вначале добавить новую запись, а потом уже добавлять файлы, т.е. поменять местами в коде цикл по файлам и добавление записи.

#10 aleks.goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 198 сообщений
  • Пол:Мужчина
  • Город:Йошкар-ола

Отправлено 12 Август 2014 - 12:07

Цитата

Но т.к. у вас файлов может быть несколько и они обрабатываются по циклу, то правильнее просто заранее вначале добавить новую запись, а потом уже добавлять файлы, т.е. поменять местами в коде цикл по файлам и добавление записи.
Если я сначала буду записывать в строку, то потом видимо мне будет необходимо сделать update_query чтобы добавить файлы?

UPD: Спасибо большое за помощь. поменял местами цикл и добавление, добавил update_query и все заработало. Видимо в другой таблице показывает только имя файлов.

Сообщение отредактировал aleks.goodcolor: 12 Август 2014 - 12:13






Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных