@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" />
  • Вопрос задан
  • 86 просмотров
Пригласить эксперта
Ответы на вопрос 2
wagoodoogoo
@wagoodoogoo
prestashop, webix, phalcon, vue, slim, craft cms
$id_us=users::userIdget($id);
А откуда внутри функции add_ban $id берётся? Его нет
Ответ написан
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
1) $id видимо определен выше вызова функции, но как уже вам указали - область видимости внутри функции - локальная, все что не определено внутри тела функции для нее не существует, исключение - глобальные переменные.
2) Научитесь пользоваться дебаггером, например xdebug, или хотя бы используйте var_dump().
3) sql запросы СНАЧАЛА формируете в виде строки, затем передаете в вызов, тогда можно будет их вывести и посмотреть что с ними не так, подозреваю что в варианте который вы "поправили" проблема в отсутствии поля user_id которое скорее всего обязательное. Можно проверить напрямую введя этот запрос в консоль мускуля или через phpmyadmin.
4) Код кошмарный, во-первых зачем-то засунут в функцию, хотя этот код вряд ли будет использоваться дважды, во-вторых функция использует внутри себя глобальные переменные, что плохо. Почитайте про чистые функции. Про метод "проверки" переменных вообще нет слов, сплошь междометия...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы