Задать вопрос
@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. Хотя делаю всё в точности, как в учебнике. Уже все глаза проглядел.
  • Вопрос задан
  • 127 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
Stalker_RED
@Stalker_RED
Видимо у вас в $row['screenshot'] не полный путь к файлу.
Для src вы подставляете IMAGEFOLDER, а is_file() должен по всему диску его искать?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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