0

私はまだPHPを初めて使用し、フォルダー内のファイルをテーブル行にエコーしようとしています。サーバー上のファイルを正常にエコーできますが、ファイルタイプに対して試行したすべてが機能していません。これまでのところ、私のコードは次のようになっています。

<?PHP 

$folder = "uploads/"; 
$handle = opendir($folder); 


# Making an array containing the files in the current directory: 
while ($file = readdir($handle)) 
{ 
    $files[] = $file; 
} 
closedir($handle); 

#echo the files 
$path_parts = pathinfo($file);
foreach ($files as $file) { 
    echo "

    <tr><td><a href=$folder$file>$file</a></td><td>$path_parts['extension']</td><td>date</td>   </tr>"
    ; 
} 
?>

このように設定すると、サーバーエラーが発生します。パスパーツ/パス情報コードを取り出すと正常に動作しますが、もちろんファイルタイプはエコーされません。これに関する助けをいただければ幸いです。ファイルのアップロード日を実装するための最良の方法を誰かが知っているなら、それは素晴らしいことです。ちなみに、それが何か違いがある場合は、uploadifiveをアップローダーとして使用します。

4

2 に答える 2

1

すでに述べたように、$path_parts変数の割り当てはforeachループ内にある必要があります。コードの数行を保存するには、フォルダー内のファイルを読み取るwhileループの代わりとしてscandirを確認する必要があります。

これらの変更後のコードの外観は次のとおりです。

<?PHP 

$folder = "uploads/"; 

# Making an array containing the files in the current directory: 
$files = scandir($folder); 

#echo the files 
foreach ($files as $file) { 
    $path_parts = pathinfo($folder.$file);
    echo "<tr><td><a href={$folder}{$file}>{$file}</a></td><td>{$path_parts['extension']}</td><td>date</td></tr>"; 
}
于 2012-11-18T23:52:02.353 に答える
0

私はあなたのコードにいくつかのわずかな変更を加えました:

<?php
$folder = "uploads/"; 
$handle = opendir($folder); 

# Making an array containing the files in the current directory: 
while ($file = readdir($handle)) 
{ 
    $files[] = $file; 
} 
closedir($handle); 

foreach ($files as $file) 
{
    #echo the files 
    $path_parts = pathinfo($file);
    echo "<tr><td><a href='" . $folder . $file . "'>" . 
         $file . "</a></td><td>" . $path_parts['extension'] . 
         "</td><td>date</td></tr>";
} 

ほとんどの場合、$path_parts = pathinfo($file);はループ自体に含まれている必要があります。$fileそれ以外の場合は、ループの最後でのみpathinfoを実行します。

于 2012-11-18T23:45:14.320 に答える