갤러리 view에서 첨부파일 부분에 공백이 생기는 문제 채택완료
제목.. 보다는 아래 내용을 봐주세요.
<div id="bo_v_img">
<ul class="owl-carousel">
<?php
// 파일 출력
$v_img_count = count($view['file']);
if($v_img_count) {
for ($i=0; $i<=count($view['file']); $i++) {
echo "<li>".get_file_thumbnail($view['file'][$i])."<span class=\"bf\">".$view['file'][$i]['bf_content']."</span></li>";
}
}
?>
</ul>
</div>
갤러리 게시판의 view 페이지에서
첨부 이미지가 출력되는 부분을 이렇게 고쳤습니다.
첨부된 이미지 아래에 해당 파일의 설명이 출력되는 식인데요,
이렇게 했더니 아래와 같이 마지막 파일과 첫번째 파일 사이에 정확히 이미지 2개 분량의 여백이 생기고, 소스를 확인해보니 <li><span class="bf"></span></li> 이게 나오더라고요.

for ($i=0; $i<=count($view['file']); $i++)
이 부분을
for ($i=0; $i<=count($view['file'])-2; $i++)
이렇게 고치면 그런 현상이 사라지긴 하지만 근본적인 해결은 아니지 않을까, 란 생각이 들었습니다.
혹시 저와 같은 상황을 겪은 분이 계신지, 혹은 코드에 무슨 문제가 있는지 알려주실 수 있을까요?
답변 4개
</p>
<p>사용하는 방법이 틀렸습니다</p>
<p><span class="token variable">$v_img_count</span> <span class="token operator">=</span> <span class="token function">count</span><span class="token punctuation">(</span><span class="token variable">$view</span><span class="token punctuation">[</span><span class="token single-quoted-string string">'file'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">; <---첨부 이미지가 2개라면 이 값은 3입니다</span></p>
<p><span class="token punctuation">$view['file'][0], </span>$view['file'][1] 외에 <span class="token punctuation">$view['file']['count'] 라는 배열이 하나 더 있기 때문입니다</span></p>
<p>첨부화일이 없어도 <span class="token variable">$v_img_count 값은 1 입니다( </span><span class="token punctuation">$view['file']['count'] </span>=0 이라는 배열이 항상 존재)</p>
<p> </p>
<p>그누보드 원본에서 <span class="token punctuation">$view['file']['count']라는 것을 만들어 놓고 사용하지는 않고 </span></p>
<p><span class="token punctuation">다시 </span>$view['file']을 <span class="token punctuation">count하는 코드를 </span>넣었습니다</p>
<p> </p>
<p>따라서 에러는 안나지만 첨부가 없어도 get_file_thumbnail함수를 한번 호출하니</p>
<p> if($v_img_count) { <-- 이 코드는 옳은 코드라고 할 수 없습니다</p>
<p> if($v_img_count >1) { 또는 if(<span class="token punctuation">$view['file']['count'] </span>>1) { </p>
<p>이렇게 되어야 합니다</p>
<p> </p>
<p>따라서</p>
<p><span class="token keyword keyword-for">for</span> <span class="token punctuation">(</span><span class="token variable">$i</span><span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">;</span> <span class="token variable">$i</span><span class="token operator"><=</span><span class="token function">count</span><span class="token punctuation">(</span><span class="token variable">$view</span><span class="token punctuation">[</span><span class="token single-quoted-string string">'file'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token variable">$i</span><span class="token operator">++</span><span class="token punctuation">) <---이렇게 하면 첨부보다 2개 많은 loop가 됩니다</span></p>
<p><span class="token keyword keyword-for">for</span> <span class="token punctuation">(</span><span class="token variable">$i</span><span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">;</span> <span class="token variable">$i</span><span class="token operator">< </span><span class="token function">count</span><span class="token punctuation">(</span><span class="token variable">$view</span><span class="token punctuation">[</span><span class="token single-quoted-string string">'file'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token operator">-1</span><span class="token punctuation">;</span> <span class="token variable">$i</span><span class="token operator">++</span><span class="token punctuation">) </span>또는 <span class="token keyword keyword-for">for</span> <span class="token punctuation">(</span><span class="token variable">$i</span><span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">;</span> <span class="token variable">$i</span><span class="token operator"><=</span><span class="token function">count</span><span class="token punctuation">(</span><span class="token variable">$view</span><span class="token punctuation">[</span><span class="token single-quoted-string string">'file'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token number">2</span><span class="token punctuation">;</span> <span class="token variable">$i</span><span class="token operator">++</span><span class="token punctuation">) </span></p>
<p>이게 맞습니다</p>
<p> </p>
<p>원본 코드에서는 foreach를 사용 하니 count와 상관없이 돌아가지만....</p>
<p> </p>
<p>
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
count($view['file']); 이 어떠한 연유로 2가 아닌 4라서 생긴 문제인 듯 합니다. (첨부된 파일 개수가 2가 아닌 4)
count($view['file']); 이 4로 확인되는 이유를 찾아야 될 듯 싶습니다.
print_r2($view['file']); 코드를 추가하여 검토해 볼 수 있습니다.
답변에 대한 댓글 1개
으음... 아래 균이님의 답변도 그렇고... 아무튼 제가 보지 못한 그런 쪽(?!)의 문제가 숨어있나봐요.
다시 한번 찬찬히 살펴보겠습니다.
댓글을 작성하려면 로그인이 필요합니다.
답변에 대한 댓글 1개
제가 개발자가 아닌 관계로... 좀더 삽질을 해봐야할 것 같네요^^;
댓글을 작성하려면 로그인이 필요합니다.
<div id="bo_v_img">
<ul class="owl-carousel">
<?php
// 파일 출력
$v_img_count = count($view['file']);
if($v_img_count) {
for ($i=0; $i<=count($view['file']); $i++) {
echo "<li>".get_file_thumbnail($view['file'][$i]).($view['file'][$i]['bf_content'] ? "<span class=\"bf\">".$view['file'][$i]['bf_content']."</span>" : "")."</li>";
}
}
?>
</ul>
</div></code></pre>
<p><font face="monospace"><span style="font-size: 11.7px;">
요게 오타가 없나 모르겠네요
bf_content가 있을때만 bf_content가 나오게하면 되는데
지금은 있든 없든 <span class="bf"></span>부분이 무조건 찍히게 되어있어서
bf_content가 있을때만 출력 되도록 변경해주시면 될것 같습니다
답변에 대한 댓글 1개
오타는 없는 듯 한데요, 적용해보니 현상이 사라지진 않네요.
첨부된 모든 파일에 등록된 설명이 있는데도 말이죠.. 에고 ㅠ
아무튼 알려주신 쪽으로도 검토해보겠습니다!
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
답변 감사합니다. 아래 다른 분들께도 정말 감사하고요.
올려주신 코드 참조해서 열심히 애써보겠습니다!