Задать вопрос
@viktorross

Как загрузить файл и записать его имя в бд?

здравствуйте, подскажите пожалуйста, я пытаюсь из шаблона передать и записать значения input, но мне нужно дополнительно загрузить фото и подставить id, подскажите как загрузить фото и добавить его в бд? и не пойму почему вместо $id в user_id ничего не записывает, либо 0

function add_ban() {

$id_us=users::userIdget($id);


		global $db;
		$this->clean=array();
		$this->clean['title'] = escape($_POST['title']);
		$this->clean['location'] = escape($_POST['location']);
		$this->clean['max_clicks'] = escape($_POST['max_clicks']);
		$this->clean['max_impressions'] = escape($_POST['max_impressions']);
		$this->clean['link'] = escape($_POST['link']);

	$path = 'images/baners/';

		if (!@copy($_FILES['image']['tmp_name'], $path . $_FILES['image']['name']))

		$this->clean['position'] = escape($_POST['position']);
		$db->query('insert into `class_banners` set `title` = "'.$this->clean['title'].'",

		`location` = "'.$this->clean['location'].'", `max_clicks` = "'.$this->clean['max_clicks'].'",

		 `max_impressions` = "'.$this->clean['max_impressions'].'", `link` = "'.$this->clean['link'].'",

		 `position` = "'.$this->clean['position'].'", `user_id` = "'.$id_us.'",  `position` = "'.$this->clean['position'].'", `filename` = "'.$this->clean['image'].'";');
		return 1;

	}


саму фотку добавляю обычно в форме

<input type="file" style="width: 350px;" name="image" id="image" />
  • Вопрос задан
  • 88 просмотров
Подписаться 1 Простой 1 комментарий
Ответ пользователя ThunderCat К ответам на вопрос (2)
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
1) $id видимо определен выше вызова функции, но как уже вам указали - область видимости внутри функции - локальная, все что не определено внутри тела функции для нее не существует, исключение - глобальные переменные.
2) Научитесь пользоваться дебаггером, например xdebug, или хотя бы используйте var_dump().
3) sql запросы СНАЧАЛА формируете в виде строки, затем передаете в вызов, тогда можно будет их вывести и посмотреть что с ними не так, подозреваю что в варианте который вы "поправили" проблема в отсутствии поля user_id которое скорее всего обязательное. Можно проверить напрямую введя этот запрос в консоль мускуля или через phpmyadmin.
4) Код кошмарный, во-первых зачем-то засунут в функцию, хотя этот код вряд ли будет использоваться дважды, во-вторых функция использует внутри себя глобальные переменные, что плохо. Почитайте про чистые функции. Про метод "проверки" переменных вообще нет слов, сплошь междометия...
Ответ написан