2

私は職場用のイントラネットを作成しており、オンラインで見つけた少しの php を使用して、そのフォルダーの内容をスキャンし、それらをリンクとして表示しました。これは問題ありませんが、空のフォルダー内にある場合は、「これらの条件に一致するレコードはありません。」などのメッセージを表示したいと考えています。

これを印刷するフォルダーがリストされていない場合に指定するために、phpに何かを追加する方法はありますか?

私はphpの知識がほとんどありませんが、htmlとcssは問題ありません。

ページで使用しているphpは次のとおりです。

<?php
$dir=opendir(".");
$files=array();
while (($file=readdir($dir)) !== false)
{
    if ($file != "." and $file != ".." and $file != "A.php")
    {
        array_push($files, $file);
    }
}
closedir($dir);
sort($files);
foreach ($files as $file)
print "<div class='fileicon'>
           <a href='$file'>
               <img src='../../../images/TR-Icon.png'>
               <p class='filetext'>$file</p>
           </a>
      </div>";
?>

フルページの html や css などのコードが必要な場合は、お知らせください。

助けてくれてありがとう。

編集:

Joshのソリューションを試した後、それはかなりうまくいきましたが、「ファイルが見つかりません」というメッセージが3回表示されます。これが私が今使っているコードです:

<?php
$dir=opendir(".");
$files=array();
while (($file=readdir($dir)) !== false)
{   
if( count($files) == 0 )
{
echo '<p>No files found</p>';
}
else
{
if ($file != "." and $file != ".." and $file != "A.php")
{
array_push($files, $file);
}
}
}
closedir($dir);
sort($files);
foreach ($files as $file)
print " <div class='fileicon'>
<a href='$file'>
<img src='../../../images/TR-Icon.png'>
<p class='filetext'>$file</p>
</a>
</div>";
?>
4

5 に答える 5

6

ただ行う:

if( count($files) == 0 )
{
  echo '<p>No files found</p>';
}
else
{
  // you have files
}
于 2012-10-03T14:04:59.477 に答える
2

これを試して:

<?php
$dir=opendir(".");
$files=array();
while (($file=readdir($dir)) !== false)
{
    if ($file != "." and $file != ".." and $file != "A.php")
    {
        array_push($files, $file);
    }
}

closedir($dir);

if(count($files) == 0){
    die("There are no records matching those criteria.");
}else{
    sort($files);
    foreach ($files as $file)
        print " <div class='fileicon'>
                   <a href='$file'>
                       <img src='../../../images/TR-Icon.png'>
                       <p class='filetext'>$file</p>
                   </a>
                </div>";
}

?>
于 2012-10-03T14:07:04.777 に答える
2

count関数を使用して、次のように files 配列にファイルがあるかどうかを確認できます。

if(count($files) > 0) // check if there are any files in the files array
    foreach ($files as $file) // print the files if condition is true
        print " <a href='$file'>$file</a> <br />";
else 
    echo "ERROR!";

編集:

scandir関数を使用することもできます。ただし、この関数は、現在のディレクトリ1 レベル上のディレクトリの 2 つの追加エントリを返します。これらのエントリをファイル配列から削除する必要があります。コードは次のようになります。

<?php
$dir   = "."; // the directory you want to check
$exclude = array(".", ".."); // you don't want these entries in your files array
$files = scandir($dir);
$files = array_diff($files, $exclude); // delete the entries in exclude array from your files array
if(!empty($files)) // check if the files array is not empty
{
    foreach ($files as $file) // print every file in the files array
        print " <div class='fileicon'>
<a href='$file'>
<img src='../../../images/TR-Icon.png'>
<p class='filetext'>$file</p>
</a>
</div>";
}
else 
{
    echo "There are no files in directory"; // print error message if there are noe files
}
?>
于 2012-10-03T14:13:59.253 に答える
0

countファイル配列で単純な条件付き使用を使用できます。

// ...
closedir($dir);
if (count($files) > 0) {
    // sort files and iterate through file array, printing html
} else {
    echo "There are no records matching those criteria.";
}
// ...
于 2012-10-03T14:07:04.943 に答える
0

if($files.length == 0)他のものを印刷させて、通常の印刷だけにすることもできると思いますif($files.length > 0)

私はphpの知識はありませんが、java、html、css、およびjavascriptは知っています。array.lengthPHPには(または配列の長さを取得するための何か)のようなものがあると確信しています

これがお役に立てば幸いです。

編集:他の人が私のものより10倍優れているものにすでに答えているのを見てきました。また、phpはかなりクールなようです、私はそれを学ぶかもしれません

于 2012-10-03T14:10:20.620 に答える