[SQL] 데이터베이스 내부에 저장된 모든 이미지를 표시하는 방법
SQL데이터베이스 내부에 저장된 모든 이미지를 표시하는 방법
나는 (그래 나는. 그것이 나쁜 습관이다하지만이 순간에 대한 요구 알고있다) 나는 여러 이미지를 업로드 할 수있는 MySQL 데이터베이스를 사용하는 갤러리를 만드는 중이라서하지만 데이터베이스 내부에 저장된 모든 이미지를 표시하는 데 문제가 있습니다. 형태는 다섯 개 이미지를 업로드 할 수 있습니다. 그런 다음 사용자는 (최근에 업로드 한 사람 포함) 데이터베이스의 모든 이미지는 이미지의 설명과 함께 표시됩니다 다른 페이지로 이동해야합니다. 이미 코드를 가지고 있지만 디스플레이에서 작동 하나가 작동하지 않거나 내가 잘못 생각합니다.
여기에 양식 코드는 다음과 같습니다
<html>
<head>
<title> Upload image</title>
</head>
<body>
<div align="center">
<form action="fUpload.php" method="POST" enctype="multipart/form-data">
All forms must be filled. <br />
File: <br />
<input type="file" name="image[]"/> <input type="text" name="imageDescription[]" size="30" /> <br />
<input type="file" name="image[]"/> <input type="text" name="imageDescription[]" size="30" /> <br />
<input type="file" name="image[]"/> <input type="text" name="imageDescription[]" size="30" /> <br />
<input type="file" name="image[]"/> <input type="text" name="imageDescription[]" size="30" /> <br />
<input type="file" name="image[]"/> <input type="text" name="imageDescription[]" size="30" /> <br />
<input type="submit" value="Upload image" />
</form>
</div>
</body>
</html>
여기에 업로드 할 스크립트입니다 :
<?php
//connect to the database//
$con = mysql_connect("localhost","root", "");
if(!$con)
{
die('Could not connect to the database:' . mysql_error());
echo "ERROR IN CONNECTION";
}
$sel = mysql_select_db("imagedatabase");
if(!$sel)
{
die('Could not connect to the database:' . mysql_error());
echo "ERROR IN CONNECTION";
}
//file properties//
$file = $_FILES['image']['tmp_name'];
echo '<br />';
/*if(!isset($file))
echo "Please select your images";
else
{
*/for($count = 0; $count < count($_FILES['image']); $count++)
{
//$image = file_get_contents($_FILES['image']['tmp_name']);
$image_desc[$count] = addslashes($_POST['imageDescription'][$count]);
$image_name[$count] = addslashes($_FILES['image]']['name'][$count]); echo '<br \>';
$image_size[$count] = @getimagesize($_FILES['image']['tmp_name'][$count]);
$error[$count] = $_FILES['image']['error'][$count];
if($image_size[$count] === FALSE || ($image_size[$count]) == 0)
echo "That's not an image";
else
{
// Temporary file name stored on the server
$tmpName[$count] = $_FILES['image']['tmp_name'][$count];
// Read the file
$fp[$count] = fopen($tmpName[$count], 'r');
$data[$count] = fread($fp[$count], filesize($tmpName[$count]));
$data[$count] = addslashes($data[$count]);
fclose($fp[$count]);
// Create the query and insert
// into our database.
$results = mysql_query("INSERT INTO images( description, image) VALUES ('$image_desc[$count]','$data[$count]')", $con);
if(!$results)
echo "Problem uploding the image. Please check your database";
//else
//{
echo "";
//$last_id = mysql_insert_id();
//echo "Image Uploaded. <p /> <p /><img src=display.php? id=$last_id>";
//header('Lcation: display2.php?id=$last_id');
}
//}
}
mysql_close($con);
header('Location: fGallery.php');
?>
그리고 마지막으로 하나가 표시되어야한다 :
<html>
<body>
</body>
<?php
//connect to the database//
mysql_connect("localhost","root", "") or die(mysql_error());
mysql_select_db("imagedatabase") or die(mysql_error());
//requesting image id
$id = addslashes($_REQUEST['id']);
$image = mysql_query("SELECT * FROM images WHERE id = $id");
while($datum = mysql_fetch_array($image, MYSQL_ASSOC))
{
printf("Description %s $image = $image['image'];
header("Content-type: image/jpeg");
}
mysql_close();
?>
여러분의 도움이 많이 감사합니다. 나는에 이동 심하게 필요합니다.
해결법
-
==============================
1.난 당신의 게시물에서 이해하는 바로는 그 업로드하고 저장 문제가되지 않습니다 만, 이미지를 보여주는 것은. 어떤 결과가 데이터베이스에서 발견되지 않는 칸 있도록, 설정되지 않은 바르를 사용하고 있기 때문 아마. 내가 알려 오해합니다.
난 당신의 게시물에서 이해하는 바로는 그 업로드하고 저장 문제가되지 않습니다 만, 이미지를 보여주는 것은. 어떤 결과가 데이터베이스에서 발견되지 않는 칸 있도록, 설정되지 않은 바르를 사용하고 있기 때문 아마. 내가 알려 오해합니다.
<?php // No ID $image = mysql_query("SELECT * FROM images ORDER BY id DESC"); ?>
또한 Prof83의 말씀 봐. 스크립트가 하나 개의 이미지로 작동하는 경우 내 게시물을 무시합니다.
서로 다른 파일 형식을 사용하는 경우 마지막으로, 또한 헤더에서 올바른 MIME 형식을 에코.
최신 정보 나는 모두 답변을 결합했다.
루프 편집 :
<?php while($row = mysql_fetch_assoc($image)) { echo '<img src="img.php?id='.$row["id"].'">'; } ?>
페이지 이름 img.php 만들기
<?php $query = mysql_query("SELECT image FROM images WHERE id = ".$_GET['id']); $row = mysql_fetch_assoc($query); header("Content-type: image/jpeg"); echo $row['image']; ?>
-
==============================
2.좋아, 당신은 이미지 / JPEG 페이지 내에서 여러 개의 이미지를 표시 할 수 없습니다 ...
좋아, 당신은 이미지 / JPEG 페이지 내에서 여러 개의 이미지를 표시 할 수 없습니다 ...
당신은 페이지 이미지 / JPEG하는 브라우저 말하는 것 (즉이 페이지는 이미지입니다)하지만 당신은 여러 이미지 데이터를 울리는 것
당신은 오히려이 같은 모든 이미지를 표시하는 갤러리 페이지를 사용한다 :
<?php // $images = result from database of all image rows foreach ($images as $img) echo '<img src="img.php?id='.$img["id"].'">'; ?>
및 img.php에서 :
// Load the image data for id in $_GET['id']; header("Content-type: image/jpeg"); echo $data;
from https://stackoverflow.com/questions/8758548/how-to-display-all-the-images-stored-inside-a-database by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 오라클의 외래 키 생성 문제 (0) | 2020.06.19 |
---|---|
[SQL] 왜 다음은 크게 쿼리 시간을 증가에 가입합니까? (0) | 2020.06.19 |
[SQL] 왜 PostgreSQL는 작은 테이블에 내 인덱스를 사용하지 않는? (0) | 2020.06.19 |
[SQL] 어떻게 웹 브라우저에서 오디오 및 비디오 파일을 재생하려면? (0) | 2020.06.18 |
[SQL] JPA 기본 쿼리는 반환 개체하지만 역 참조 클래스 캐스트 예외가 발생 가입 (0) | 2020.06.18 |