@skyblast

Почему не выводится на экран загруженный файл (картинка)?

Загружаю на локальный сервер файл через обычную форму:
$name = $_POST['name'];
		$raiting = $_POST['raiting'];
		$screenshot = $_FILES['screenshot']['name'];
		require_once ('imagevars.php');
		if (isset($_POST['submit'])) {
						
				if ((!empty($name)) && (empty($raiting))) {
					echo 'Введите Ваш рейтинг!';
				}
				if ((empty($name)) && (!empty($raiting))) {
					echo 'Введите Ваше имя';	
				}
				if ((!empty($name)) && (!empty($raiting))) {
					$target = IMAGEFOLDER . $screenshot;
					if (move_uploaded_file($_FILES['screenshot']['tmp_name'], $target)) {
					
						$dbc = mysqli_connect ('localhost','root','','guitarhero')
							or die('<b>Подключение к базе не установлено!</b>');	
						$query = "INSERT INTO raiting_tab (name, raiting, screenshot) VALUES ('$name','$raiting', '$screenshot')";
						$result = mysqli_query ($dbc, $query)
							or die('Данные не добавлены!');
							echo 'Спасибо  ' . $name . '!<br>';
							echo 'Ваш рейтинг: ' . $raiting . '.<br>';
							echo '<img src="' . IMAGEFOLDER . $screenshot . '" alt="Подтверждение..."><br>';
							$name = NULL;
							$raiting = NULL;
					}
				}
		}
	?>

           <form enctype="multipart/form-data" action="<?php $_SERVER['PHP_SELF']; ?>" method="POST">
                <label for="name">Ваше имя:</label>
                <input class="form" type="text" id="name" name="name" size=30 value="<?php echo $name; ?>"><br>
                <label for="raiting">Ваш рейтинг:</label>
                <input class="form" type="text" id="raiting" name="raiting" value="<?php echo $raiting; ?>"><br>
                <label for="screenshot">Загрузите скриншот для подтверждения</label>
                <input class="form" type="hidden" name="MAX_FILE_SIZE" value="5242880">
                <input class="form" type="file" name="screenshot" id="screenshot"><br>
                <input type="submit" name="submit" value="Отправить">
            </form>

После чего вывожу на экран все записи из БД:
require_once('imagevars.php');
	require_once('connectvars.php');
	$dbc = mysqli_connect (DB_HOST,DB_LOGIN,DB_PASSWORD,DB_NAMEDB)
		or die('<b>Ошибка в подключении к базе!</b>');
		$query = "SELECT * FROM raiting_tab ORDER BY raiting DESC, date ASC";
		$result = mysqli_query($dbc, $query)
			or die('Ошибка в выполнении запроса!');
		
			echo '<table>';
			//$i = 0;
			while ($row = mysqli_fetch_array($result)) {
				
				if ($i == 0) {
					echo '<tr><td colspan="2" class="topscoreheader">Наивысший рэйтинг: ' . $row['raiting'] . '!</td></tr>';
				}
					echo '<tr class="scoreinfo"><td><b>Дата:</b>' . $row['date'] . '<br>';
					echo '<b>Имя: </b>' . $row['name'] . '<br>';
					echo '<b>Рэйтинг: </b>' . $row['raiting'] . '</td></tr>';
					echo '<td><img src="' . IMAGEFOLDER . $row['screenshot'] . '" alt="Подтверждено!"></td>';
					
					if (is_file($row['screenshot']) && filesize($row['screenshot']) > 0) {
						echo '<td><img src="' . IMAGEFOLDER . $row['screenshot'] . '" alt="Подтверждено!"></td>';
					}
					else {
						echo '<td><img src="images/unverified.gif" alt="НЕ подтверждено!"></td>';
					}
				$i++;
			}
			echo '</table>';


Суть заключается в том, что если не использовать условие проверки наличия файла:
if (is_file($row['screenshot']) && filesize($row['screenshot']) > 0) {
						echo '<td><img src="' . IMAGEFOLDER . $row['screenshot'] . '" alt="Подтверждено!"></td>';
					}
					else {
						echo '<td><img src="images/unverified.gif" alt="НЕ подтверждено!"></td>';
					}
, а просто вывести картинку через:
echo '<td><img src="' . IMAGEFOLDER . $row['screenshot'] . '" alt="Подтверждено!"></td>';
, то всё в порядке. Но, почему то, в условии срабатывает постоянно else. Хотя делаю всё в точности, как в учебнике. Уже все глаза проглядел.
  • Вопрос задан
  • 125 просмотров
Решения вопроса 1
Stalker_RED
@Stalker_RED
Видимо у вас в $row['screenshot'] не полный путь к файлу.
Для src вы подставляете IMAGEFOLDER, а is_file() должен по всему диску его искать?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
23 апр. 2024, в 13:02
3000 руб./за проект
23 апр. 2024, в 12:52
15000 руб./за проект