Новичок в PHP
Ниже приведен мой код для извлечения файлов из папки, но он показывает мне ошибку
Undefined variable: files
Почему я получаю эту ошибку.
Это галерея изображений. В папке «Галерея» до сих пор нет изображения.
<?php
if($theRugz<>''){
/* settings */
$image_dir = 'gallery/'.$theRugz.'/';
$per_column = 5;
$count = 0;
if($theRugz=='11'){$rugType='Tufted';}else
if($theRugz=='12'){$rugType='Loom Knotted';}else
if($theRugz=='13'){$rugType='Indo Nepali';}else
if($theRugz=='14'){$rugType='Shaggy Carpets';}else
if($theRugz=='15'){$rugType='Cotton Kellims';}else
if($theRugz=='16'){$rugType='Hemp and Soumak';}else
if($theRugz=='17'){$rugType='Kellims Dhurries';}else
if($theRugz=='18'){$rugType='Cotton Rugs';}else
if($theRugz=='19'){$rugType='Bathmats';}else
if($theRugz=='21'){$rugType='Chindi Rugs';}else
if($theRugz=='22'){$rugType='Hand Knotted';}
if($_SESSION['SESS_CLIENT']==1){
/* Files for all */
/* step one: read directory, make array of files */
if ($handle = opendir($image_dir)) {
while (false !== ($file = readdir($handle)))
{
if ($file != '.' && $file != '..')
{
if(strstr($file,'-thumb') or strstr($file,'-tuhmb'))
{
$files[] = $file;
}
}
}
closedir($handle);
}
/* Step One End */
/* step two: loop through, format gallery */
if(count($files))
{
echo '<p class="head1">Range of '.$rugType.' (click on thumbnail to enlarge)</p>';
foreach($files as $file)
{
$count++;
if(strstr($file,'-tuhmb')){
echo '<a class="photo-link" rel="one-big-group" href="',$image_dir,str_replace('-tuhmb','',$file),'"><img src="',$image_dir,$file,'" width="183" height="130" alt="'.str_replace('-tuhmb.jpg','',$file).'" title="'.str_replace('-tuhmb.jpg','',$file).'" class="img-thumb" /></a>'.PHP_EOL;
}else{
echo '<a class="photo-link" rel="one-big-group" href="',$image_dir,str_replace('-thumb','',$file),'"><img src="',$image_dir,$file,'" width="183" height="130" alt="'.str_replace('-thumb.jpg','',$file).'" title="'.str_replace('-thumb.jpg','',$file).'" class="img-thumb" /></a>'.PHP_EOL;
}
if($count % $per_column == 0) { echo '<div class="clear"></div>'; }
}
}
else
{
echo '<p>There are no images in this gallery.</p>';
}
/* Step two End */
}else{
/* Files for all */
/* step one: read directory, make array of files */
if ($handle = opendir($image_dir)) {
while (false !== ($file = readdir($handle)))
{
if ($file != '.' && $file != '..')
{
if(strstr($file,'-thumb'))
{
$files[] = $file;
}
}
}
closedir($handle);
}
/* Step One End */
/* step two: loop through, format gallery */
if(count($files))
{
echo '<p class="head1">Range of '.$rugType.' (click on thumbnail to enlarge)</p>';
foreach($files as $file)
{
$count++;
echo '<a class="photo-link" rel="one-big-group" href="',$image_dir,str_replace('-thumb','',$file),'"><img src="',$image_dir,$file,'" width="183" height="130" alt="'.str_replace('-thumb.jpg','',$file).'" title="'.str_replace('-thumb.jpg','',$file).'" class="img-thumb" /></a>'.PHP_EOL;
if($count % $per_column == 0) { echo '<div class="clear"></div>'; }
}
}
else
{
echo '<p>There are no images in this gallery.</p>';
}
/* Step two End */
}
}
?>
$files is undefined
означает, что вы используете переменную, которую вы не определили (очевидно).
Кратко глядя на ваш код, я вижу, что переменная files
используется внутри цикла $files[] = $file;
, Вы должны спросить себя, почему эта переменная не определена?
Ответ довольно прост — цикл или условие никогда не выполняется.
Для выполнения указанной строки ваш код должен соответствовать 4 условиям (3 if
и while
петля).
if ($handle = opendir($image_dir)) {
while (false !== ($file = readdir($handle)))
{
if ($file != '.' && $file != '..')
{
if(strstr($file,'-thumb') or strstr($file,'-tuhmb'))
{
Отслеживайте свой код и найдите условие, которое возвращает false и не позволяет вашему коду попасть в $files[] = ...
линия.
В любом случае, объявление этой переменной в начале кода предотвратит появление этой ошибки. Поскольку вы используете его как массив:
$files = array();
Это не решит проблему, но облегчит поддержку вашего кода.
Создать массив для этих типов rugtypes
$rugtType = '';
$rugTypes = array(
'11' => 'Tufted',
'12' => 'Loom Knotted',
'13' => 'Indo Nepali',
'14' => 'Shaggy Carpets',
'15' => 'Cotton Kellims',
'16' => 'Hemp and Soumak',
'17' => 'Kellims Dhurries',
'18' => 'Cotton Rugs',
'19' => 'Bathmats',
'21' => 'Chindi Rugs',
'22' => 'Hand Knotted');
$rugType = $rugTypes[$theRugz];