2012-01-06 5 views
2

MySQL 데이터베이스를 사용하는 갤러리를 만들고 있습니다. (예, 좋지는 않지만 지금은 요구 사항입니다.) 여러 이미지를 업로드 할 수는 있지만 데이터베이스에 저장된 모든 이미지를 표시하는 데 문제가 있습니다. FORM을 사용하면 다섯 개의 이미지를 업로드 할 수 있습니다. 그런 다음 사용자는 데이터베이스의 모든 이미지 (최근 업로드 된 이미지 포함)가 이미지의 설명과 함께 표시되는 다른 페이지로 진행해야합니다. 이미 코드가 있지만 디스플레이에서 작동하는 코드가 작동하지 않거나 잘못되었다고 생각합니다. 표시해야데이터베이스 내부에 저장된 모든 이미지를 표시하는 방법

<?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(); 


?> 

당신의 도움이 여기에

<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> 

업로드 할 스크립트입니다 : 여기

양식 코드 매우 감사. 나는 계속 전진해야한다.

+0

잘, 적어도 당신의 printf에서 따옴표 전에 탈출을 누락 .. . 다음에 $ datum [ 'image']를 호출해야합니다 ... – Elen

+0

무엇을 의미합니까? : D – SimonCode

답변

5

귀하의 게시물에서 알 수있는 점은 업로드 및 저장에 문제가 없지만 이미지를 보여주는 것입니다. 아마도 설정되지 않은 변수를 사용하고 있기 때문에 결과가 데이터베이스에 없습니다. 내가 오해 한 경우 알려줘.

<?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"].'">'; 
} 
?> 

당신이 이미지/JPEG 페이지 내에서 여러 개의 이미지를 표시 할 수 없습니다

<?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']; 
?> 
+0

그 힌트를 가져 주셔서 감사합니다. : D 내가 성공했음을 알려 드리겠습니다., 다시 한번 감사드립니다 .. : D – SimonCode

+0

다른 오류가 있습니다 .. 경고 : 헤더 정보를 수정할 수 없습니다 - 이미 보낸 헤더 (C : \ XAMP \ xampp \ htdocs \ gallery \ fUpload.php : 21)을 C : \ XAMP \ xampp \ htdocs \ gallery \ fUpload.php에서 7035 라인에 입력하십시오. 아무런 표시가 나오지 않습니다. 무엇이 잘못 되었습니까? – SimonCode

+0

PHP 코드 위에 HTML 및 BODY 태그를 제거해야합니다. – mat

0

확인 페이지 이름 img.php 만들기 ...

브라우저가 페이지에 이미지/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; 
+0

와아! 감사! 나는 결코 깨닫지 못했다 .. 정보를 주셔서 감사합니다. 정확히 어디 foreach와 PHP 코드를 배치해야합니까? : 디스플레이 페이지 안에 D – SimonCode

+0

, 모든 이미지를 표시하는 페이지 ... PS. 이것이 도움이 되었다면 올바른 대답으로 표시하십시오 : D – Prof83

+0

foreach 문을 이해하는 데 도움이되는 답변을 수정했습니다 – Prof83

관련 문제