Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.03.2019, 01:04
Аспирант
Отправить личное сообщение для garrip91 Посмотреть профиль Найти все сообщения от garrip91
 
Регистрация: 07.10.2018
Сообщений: 75

Ошибка(-и) при попытке добавления в БД ссылки на IMG
Всем здравствуйте, уважаемые форумчане!


Имеется небольшое CRUD-приложение со следующим кодом:

<?php
//	$a = 'привет, я строка';
//	die(var_dump($a));
?>

<!doctype html>
<html lang="ru">
<head>
  <title>Админ-панель</title>
</head>
<body>
	
	<?php
		$host = 'localhost';  // Хост, у нас все локально
		$user = 'root';    // Имя созданного вами пользователя
		$pass = ''; // Установленный вами пароль пользователю
		$db_name = 'new_23';   // Имя базы данных
		$link = mysqli_connect($host, $user, $pass, $db_name); // Соединяемся с базой

		// Ругаемся, если соединение установить не удалось
		if (!$link) {
			echo 'Не могу соединиться с БД. Код ошибки: ' . mysqli_connect_errno() . ', ошибка: ' . mysqli_connect_error();
		exit;
		}
	?>
	
	<?php
		if (!empty($_POST["num"])) {
			//Если это запрос на обновление, то обновляем
			if (!empty($_GET['red_id'])) {
				$sql = mysqli_query($link, "UPDATE `information` SET `num` = '{$_POST['num']}', `surname` = '{$_POST['surname']}', `name` = '{$_POST['called']}', `patronymic` = '{$_POST['patronymic']}', `address` = '{$_POST['address']}', `img` = '{$_POST['img']}' WHERE `ID`={$_GET['red_id']}");
			} else {
			//Иначе вставляем данные, подставляя их в запрос
				$sql = mysqli_query($link, "INSERT INTO `information` (`num`, `surname`, `name`, `patronymic`, `address`, `img`) VALUES ('{$_POST['num']}', '{$_POST['surname']}', '{$_POST['called']}', '{$_POST['patronymic']}', '{$_POST['address']}', '{$_POST['img']}')");
			}

      //Если вставка прошла успешно
      if ($sql) {
        echo '<p>Успешно!</p>';
      } else {
        echo '<p>Произошла ошибка: ' . mysqli_error($link) . '</p>';
      }
    }
		
		if (!empty($_GET['del_id'])) { //проверяем, есть ли переменная
			//удаляем строку из таблицы
			$sql = mysqli_query($link, "DELETE FROM `information` WHERE `id` = {$_GET['del_id']}");
			if ($sql) {
				echo "<p>Запись удалена!</p>";
			} else {
				echo '<p>Произошла ошибка: ' . mysqli_error($link) . '!</p>';
			}
		}
		
		if (!empty($_GET['red_id'])) {
			$sql = mysqli_query($link, "SELECT `id`, `num`, `surname`, `name`, `patronymic`, `address`, `img` FROM `information` WHERE `id`={$_GET['red_id']}");
			$properties = mysqli_fetch_assoc($sql);
		}
	?>
	
	<?php
		$target_dir = "images/";
		$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
		$uploadOk = 1;
		$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
		
		// проверяем, является ли файл изображения настоящим
		if(!empty($_POST["submit"])) {
			$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
		if($check !== false) {
			echo "File is an image - " . $check["mime"] . ".";
			$uploadOk = 1;
		} else {
			echo "File is not an image.";
			$uploadOk = 0;
		}
	}

	// проверяем, не существует ли файл уже
	if (file_exists($target_file)) {
		echo "Sorry, file already exists.";
		$uploadOk = 0;
	}

	// проверяем размер файла
	if ($_FILES["fileToUpload"]["size"] > 500000) {
		echo "Sorry, your file is too large.";
		$uploadOk = 0;
	}

	// разрешаем определённые форматы файлов
	if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" ) {
		echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
		$uploadOk = 0;
	}

	// проверяем не присвоено ли переменной $UPLOADOK значение "0" по ошибке
	if ($uploadOk == 0) {
		echo "Sorry, your file was not uploaded.";
	// если всё в порядке, то пробуем запустить файл
	} else {
		if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
			echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
		} else {
			echo "Sorry, there was an error uploading your file.";
		}	
	}
	
	if(move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
		$tes = "INSERT INTO information('img')  VALUES('".$target_file."')";
//      echo $tes.'<br>';
        $res = mysqli_query($tes);
            if($res) { 
				echo "Файл упешно загружен";
			} else { 
				echo "Путь не добавлен в базу данных, но файл загружен";
			}
        }
        else {
			echo "Файл не загружен!";
		}
   
	?>
	
	<form action="" method="post" enctype="multipart/form-data">
    <table>
      <tr>
        <td>Номер (не "ID"):</td>
        <td><input type="text" name="num" value="<?= !empty($_GET['red_id']) ? $properties['num'] : ''; ?>"></td>
      </tr>
	  <tr>
        <td>Фамилия:</td>
        <td><input type="text" name="surname" value="<?= !empty($_GET['red_id']) ? $properties['surname'] : ''; ?>"></td>
      </tr>
	  <tr>
        <td>Имя:</td>
        <td><input type="text" name="called" value="<?= !empty($_GET['red_id']) ? $properties['name'] : ''; ?>"></td>
      </tr>
	  <tr>
        <td>Отчество:</td>
        <td><input type="text" name="patronymic" value="<?= !empty($_GET['red_id']) ? $properties['patronymic'] : ''; ?>"></td>
      </tr>
	  <tr>
        <td>Адрес:</td>
        <td><input type="text" name="address" value="<?= !empty($_GET['red_id']) ? $properties['address'] : ''; ?>"></td>
      </tr>
	  
	  <tr>
        <td>Загрузка изображения:</td>
        <td><input type="file" name="fileToUpload" id="fileToUpload" value="<?= !empty($_GET['red_id']) ? $properties['img'] : ''; ?>"></td>
		<td><input type="submit" value="Загрузить изображение" name="submit"></td>
      </tr>
	  
	  <tr>
        <td>Ссылка на изображение:</td>
        <td><input type="text" name="img" value="<?= !empty($_GET['red_id']) ? $properties['img'] : ''; ?>"></td>
      </tr>
	  <tr>
        <td>Изображение:</td>
        <td><img width="300" height="300" name="img" src="<?= !empty($_GET['red_id']) ? $properties['img'] : ''; ?>"></td>
      </tr>
      <tr>
        <td colspan="2"><input type="submit" value="OK"></td>
      </tr>
    </table>
  </form>
  <table border='1'>
    <tr>
      <td>Номер (не "ID")</td>
      <td>Фамилия</td>
      <td>Имя</td>
      <td>Отчество</td>
      <td>Адрес</td>
	  <td>Изображение</td>
    </tr>
    <?php
      $sql = mysqli_query($link, 'SELECT `id`, `num`, `surname`, `name`, `patronymic`, `address`, `img` FROM `information`');
      while ($result = mysqli_fetch_assoc($sql)) {
        echo '<tr>'.
             "<td>{$result['num']}</td>".
             "<td>{$result['surname']}</td>".
			 "<td>{$result['name']}</td>".
			 "<td>{$result['patronymic']}</td>".
			 "<td>{$result['address']}</td>".
			 "<td>{$result['img']}</td>".
             "<td><a href='?del_id={$result['id']}'>Удалить</a></td>".
             "<td><a href='?red_id={$result['id']}'>Изменить</a></td>".
             '</tr>';
      }
    ?>
  </table>
  <p><a href="?add=new">Добавить новую запись</a></p>
</body>
</html>




Данное приложение вроде как справляется почти со всеми поставленными перед ней задачами, за исключением одной:

При добавлении изображении на локальный сервер изображение, как это положено, копируется в специально выделенную для всех их папку, но в БД не добавляется ссылка на это изображение.

Как я предполагаю, моя ошибка заключается в участке кода:
if(move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
		$tes = "INSERT INTO information('img')  VALUES('".$target_file."')";
//      echo $tes.'<br>';
        $res = mysqli_query($tes);
            if($res) { 
				echo "Файл упешно загружен";
			} else { 
				echo "Путь не добавлен в базу данных, но файл загружен";
			}
        }
        else {
			echo "Файл не загружен!";
		}


ПОЧЕМУ ТАК ПРОИСХОДИТ?

КАКАЯ(-ИЕ) ОШИБКА(-И) ДОПУЩЕНА(-Ы) МНОЙ ЗДЕСЬ?
Ответить с цитированием
  #2 (permalink)  
Старый 01.03.2019, 12:44
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Вы простых вещей не знаете, а уже уже приложения, ООП...

$tes = "INSERT INTO information('img') VALUES('".$target_file."')"; - ничего тут не смущает?
Ответить с цитированием
  #3 (permalink)  
Старый 01.03.2019, 13:00
Аспирант
Отправить личное сообщение для garrip91 Посмотреть профиль Найти все сообщения от garrip91
 
Регистрация: 07.10.2018
Сообщений: 75

В продолжение диалога......
А что меня должно смущать там?
Может, всё-таки без загадок обойдёмся в этот раз, профессор? :-)
Я уже 2-й день ломаю голову над этим своим говнокодом
Ответить с цитированием
  #4 (permalink)  
Старый 01.03.2019, 13:16
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,795

$query="INSERT INTO information(`img`)  VALUES('$target_file')";


ps. почитайте про MVC
Ответить с цитированием
  #5 (permalink)  
Старый 01.03.2019, 13:17
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от garrip91
Может, всё-таки без загадок обойдёмся в этот раз
А я не загадываю загадок, я же вам давал ссылку и на руководство MySQL, но по вашим же словам ничего нужного и полезного, что дало бы в нем ответы на ваши вопросы нет.

Сообщение от garrip91
2-й день ломаю голову над этим своим говнокодом
Так надо не через задницу языки изучать, а от простого к сложному. Не копировать чей-то говнокод, а писать используя полученные знания. А если бы не лень матушка, то в руководстве, которое для вас нахрен не нужно, как оказывается, как раз есть ответ на то, над чем вы ломаете голову столь продолжительное время.

Последний раз редактировалось laimas, 01.03.2019 в 13:38.
Ответить с цитированием
  #6 (permalink)  
Старый 01.03.2019, 13:40
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Nexus, зря, то зачем и почему эти косые кавычки он так и не будет знать. Это не тот случай, когда подсказка есть помощь.
Ответить с цитированием
  #7 (permalink)  
Старый 01.03.2019, 13:44
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,795

laimas, Не стоит терять веру в людей)
Может быть автор после вашего комментария таки ознакомиться с документацией. Ну или хотя бы начнет при ошибках к ней обращаться в первую очередь.
Ответить с цитированием
  #8 (permalink)  
Старый 01.03.2019, 13:59
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Nexus
Не стоит терять веру в людей
А причем тут вера? Ну какой нафик может быть совет читать об MVC, если он простых вещей не знает? Ну ладно бы искал, находил и изучал, так нет, он же уже над проектами думает. Ити его мать, тут рядом темы его, в которой он так и понял, как сам же пишет, даже о циклах. Ну нашелся жалеющий, подсказал, он и использует, а почему так, вопросом то не задается.

Да у всех посетителей форума даже при желании не хватит ни времени, ни терпения рассказывать и подсказывать о простых вещах. Тем более что подсказки, которые просто будут использоваться без желания разобраться "почему", это есть худшее зло из всей такой методы обучения.

Я знаю что говорю, ибо я имею образование, которое связано с педагогикой, и хоть я в школе не работал, но практику какую никакую проходить пришлось. И не надо говорить, что то школа, а тут программирование. Это без разницы - не научите ребенка понимать зачем нужно снимать штанишки перед горшком, так и будет всю жизнь ходить в штаны.
Ответить с цитированием
  #9 (permalink)  
Старый 01.03.2019, 14:19
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,795

Сообщение от laimas
А причем тут вера?
Вы не думаете/не верите, что автор ознакомится с документацией и поймет, почему нужно делать так, а не иначе.
Я думаю вера тут имеет место быть, поэтому так выразился.

Сообщение от laimas
ладно бы искал, находил и изучал, так нет, он же уже над проектами думает
Можно изучать тот же пых в процессе реализации какого-то своего проекта, почему нет?
Ну, это, разумеется, при условии, что ты пытаешься научиться кодить, а не просто слепить проект.
Ответить с цитированием
  #10 (permalink)  
Старый 01.03.2019, 14:28
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Nexus
Вы не думаете/не верите, что автор ознакомится с документацией и поймет
Беда этого ученика как раз в том, что видимо для него "не царское дело в .... ковыряться"

Сообщение от Nexus
Можно изучать тот же пых в процессе реализации какого-то своего проекта, почему нет?
Вы посмотрите на код "этого проекта", автору его уже есть за что руки отрубать, а он то его просто повторяет со всей шнягой которая только там есть. А если ему еще и подсказать о некой мелочи, ну так ввинтит ее в него на этом и закончится. Это следствие пагубного обучения - "делай как я" без всяких обязательств думать.

А ему уже не раз давались ссылки на то, что нужно прочесть и изучить.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка, при попытке повесить обработчик Tipylja Общие вопросы Javascript 4 26.11.2018 14:57
Ошибка при установке babel DVV Элементы интерфейса 0 01.09.2018 14:07
При клике ссылки, открыть DIV блок, и при клике ещё раз, закрыть его Simon Общие вопросы Javascript 59 28.05.2017 17:31
Удалить некоторые ссылки со страницы при помощи js goga5 Общие вопросы Javascript 7 12.07.2016 14:41
Поменять картинку у одной из img, а потом при нажатии на другой img, вернуть обратно. megasan84 Events/DOM/Window 16 26.10.2014 13:22