2016-06-06 5 views
0

폴더의 특정 이미지를 내 products에 삽입하려고합니다. 하지만 지금 가지고있는 코드로 모든 제품의 폴더에있는 모든 이미지를 표시합니다. 제품 당 1 개의 특정 이미지 만 표시하려면 어떻게합니까?폴더의 특정 이미지 표시

$dir = "pictures/productimg/"; 
if ($opendir = opendir($dir)) { 
    while (($file = readdir($opendir)) !== false) { 
     if ($file != "." && $file != "..") { 
      echo "<div class='productimg'>"; 
      echo "<img src='$dir/$file'/>"; 
      echo "</div>"; 
     } 
    } 
} 
+0

여기에서하는 일에 대해 명확하지 않습니다. 코드가 특정 제품에 대한 특정 이미지 파일을 선택하는 방법은 무엇입니까? 그냥 디렉토리 내의 모든 파일을 선택하는 것 같습니다! 이미지 파일의 파일 이름에 제품 ID가 있습니까? 당신의 제품은 어디에 저장되어 있습니까? – Ally

+0

당신은'readdir'을 사용하고 있습니다, 그것은 dir의 모든 파일을 반복 할 것입니다. 그래서 실제 문제는 무엇입니까? – weigreen

+0

@Ally 내 문제는 .. 모든 요소를 ​​선택하지 않고 1 요소에 표시 할 이미지가 1 개뿐입니다. 그래서 : 이미지 1 이미지 2 제품이 및하지로 이동 한 제품에 간다 : 이미지 1 + 2 제품 1 개 이미지 1 + 2로 간다 @Ally 그들은 제품 ID가없는 제품이 –

답변

0

를 참조

array_slice(glob('/path/to/dir/*.*'), 0, 1); 

사용할 수 있습니다 각 제품에 대한 이미지 (권장)를 사용하면 새 테이블을 만들 수 있습니다. product_images 필드가 product_id & file_name 인 경우에 외래 키를 생성하여 제품 ID를 가리 킵니다. products.id. 이제 SELECT file_name FROM product_images WHERE product_id = xx을 수행하여 제품 이미지를 가져온 다음 이미지 디렉토리에 파일이 있는지 확인하고 이미지 디렉토리에 파일이 있는지 확인하십시오. 데이터베이스에서 파일을 가져온 덕분에 이름이 알려진 이미지를 가져올 수 있습니다.

EDIT : 파일 이름이 고유해야하며,이를 수행하는 가장 좋은 방법은 제품 ID 또는 적어도 마이크로 시간 스탬프를 포함하는 것입니다.

팁 : 한 엔티티가 다른 엔티티에 속하게 될 경우 예 : 이미지가 제품에 속해 있다면 관계를 저장하는 데 거의 확실히 데이터베이스를 사용해야합니다. 모든 것을 훨씬 더 쉽고, 논리적이며, 유지 보수 할 수있게 해줄 것입니다.