2011-10-26 3 views
0

Я написал простую галерею изображений scrip witch проверяет папку и отображает все изображения в папке, у меня есть код для удаления. и .. но его не работает, и я не могу понять, почему любая помощь была бы замечательной, поскольку она была новой для функций dir в PHP. У меня есть LightBox теги, окружающие ссылку, следовательно Лишние эха код ниже:PHP readdir dots продолжают отображаться

<? 
// USER OPTIONS DEDFINED HERE 

$dir = "img/";  //folder with images 
$height ="196px"; //image height on page its displayed in full in lightbox 
$width ="320px"; //image width on page its displayed in full in lightbox 
?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>Gallery</title> 
<link href="css/css.css" rel="stylesheet" type="text/css" /> 
<script type="text/javascript" src="js/prototype.js"></script> 
<script type="text/javascript" src="js/scriptaculous.js?load=effects,builder"></script> 
<script type="text/javascript" src="js/lightbox.js"></script> 
</head> 

<? 

//open directory 
if ($opendir = opendir($dir)); 

{ 

//read dir 
while (FALSE !== ($file = readdir($opendir))) 
{ 
    if ($file!="."&&$file!="..") 
     echo "<div class='imgwraper'>"; 
     echo"<a href='$dir$file' rel='lightbox[gallery]' title='$filename'>"; 
     echo "<img src='$dir$file' alt='' width='$width' height='$height'/>"; 
     echo"</a>"; 
     echo "<div class='name_box'>"; 
     echo current(explode('.', $file)); 
     echo "</div>"; 
     echo "</div>"; 

} 
closedir($opendir); 
} 

?> 

Заранее спасибо

Льюиса

+1

Утверждение IF относится только к вашему первому эхо! – jlb

+1

В дополнение к фигурным скобкам для создания фактического блока, указанного в другом месте, удалите точку с запятой в 'if ($ opendir = opendir ($ dir));' – horatio

+0

Также: '&& $ file' означает' адрес адреса переменная $ file'. Вы должны изменить это на '&& $ file' – horatio

ответ

2

У вас нет брекетов после if ($file!="."&&$file!=".."), инструкция if применима только к первой строке echo "<div class='imgwraper'>";.

Wrap все в фигурных скобках как так:

while (FALSE !== ($file = readdir($opendir))) 
{ 
    if ($file!="."&&$file!="..") { 
     echo "<div class='imgwraper'>"; 
     echo"<a href='$dir$file' rel='lightbox[gallery]' title='$filename'>"; 
     echo "<img src='$dir$file' alt='' width='$width' height='$height'/>"; 
     echo"</a>"; 
     echo "<div class='name_box'>"; 
     echo current(explode('.', $file)); 
     echo "</div>"; 
     echo "</div>"; 
    } 
} 

Кстати, вы могли бы рассмотреть возможность использования glob, чтобы упростить код немного больше.

+0

Спасибо за этот плохой взгляд в глобус, который никогда не слышал об этом –

0

Не забудьте обернуть, если заявление в фигурных скобках.

while (FALSE !== ($file = readdir($opendir))) 
{ 
if ($file!="."&&$file!=".."){ 
    echo "<div class='imgwraper'>"; 
    echo"<a href='$dir$file' rel='lightbox[gallery]' title='$filename'>"; 
    echo "<img src='$dir$file' alt='' width='$width' height='$height'/>"; 
    echo"</a>"; 
    echo "<div class='name_box'>"; 
    echo current(explode('.', $file)); 
    echo "</div>"; 
    echo "</div>"; 
} 
} 

Shai.

+0

Спасибо за вашу помощь, теперь он работает –

Смежные вопросы