2013-02-15 22 views
0

我目前正在做一個下拉列表,但在下拉列表讓我們說我只想包括只有.txt擴展名文件,所以任何其他擴展名如.php .jpg或任何其他擴展名將不會在在下拉列表中。我該如何儘可能簡單地做到這一點?droplist只與特定的文件與php

另一個問題是,如果文件夾沒有任何.txt擴展名文件,我想發出警告,錯誤信息會顯示。因此,即使文件夾中沒有.txt文件,只要其他文件夾內有其他.jpg文件或任何其他文件,警告也會顯示。

任何人都可以幫我一把嗎?

這是我所做的,但它只顯示一個沒有.txt的下拉列表,但它仍然會在下拉列表中顯示其他隨機文件。

if(!(is_dir("./aaa"))) 
{ 
    die("Must create a folder first, sorry"); 
} 

    $lists = scandir("./aaa"); 

    echo "<form action=\"./page2.php\" method=\"get\">"; 
    echo "<select>"; 

    foreach($lists as $list) 
    { 
    if(($list == ".") || ($list == "..")) 
     { 
     continue; 
     } 
    echo "<option value=\""; 
    echo basename($list,".txt"); 
    echo "\">"; 
    echo basename($list,".txt"); 
    echo "</option>"; 
    } 
    echo "</select>"; 
    echo "</form>"; 

editted加入SUBSTR與$ hasTxt

<?php 
if(!(is_dir("./aaa"))) 
{ 
    die("Must create a <strong>aaa</strong> folder first, sorry"); 
} 
echo "<form action=\"./page2.php\" method=\"get\">"; 
echo "<select name=\"aaa\">"; 
    $aaa_files = scandir("./aaa"); 
$hastxt = false; 
foreach($aaa_files as $file_list) 
{ 
    if(($file_list == ".") || ($file_list == "..")) 
    { 
    continue; 
    } 
    if(strlen($file_list)>4 && strtolower(substr($file_list, -4))!='.txt') 
    { 
    continue; 
    } 
    else 
    { 
    $hastxt = true; 
    echo "<option value=\""; 
    echo basename($file_list,".txt"); 
    echo "\">"; 
    echo basename($file_list,".txt"); 
    echo "</option>"; 
    } 
} 
echo "</select>"; 
echo "<br/><input type=\"submit\">"; 
echo "</form>"; 

if($hastxt == false) 
{ 
    echo "Must create text files first, sorry"; 
    die(); 
} 
?> 

這是我現在如果文件夾沒有任何txt文件腳本會發生什麼。

enter image description here


這是我真正想要的,如果沒有txt文件,當然,但沒有箭頭

enter image description here

回答

1

對於第一部分,就像你繼續目錄。和..,你就可以繼續非文本文件:

if(strlen($list)>4 && strtolower(substr($list, -4))!='.txt') continue; 

對於警報部分,把標誌的foreach

$hasTxt = false; 

之前它設置爲true,每當你輸入你不」牛逼忽略(即後如果(不需要)繼續。)

$hasTxt = true; 

最後,在foreach後檢查$ hasTxt的價值,並把它作爲你喜歡。

+0

啊....右....我明白這些,但我不知道是否有人該文件名爲TXT或TXT,因爲我曾經用strtolower你說和我改變了文件之一.TXT該文件不會顯示,但。有沒有辦法讓它工作? – Dora 2013-02-15 06:26:43

+0

另外$ hasTxt工作正常謝謝謝謝,但我意識到,如果我這樣做,讓我們說呃....我的保管箱將只是空的,然後用它的假會顯示讓我們說一個消息「沒有TXT」有沒有辦法在同一頁面中,如果文件夾中沒有.txt文件,整個頁面將只會顯示「no txt」,而不是顯示保存框? – Dora 2013-02-15 06:28:15

+0

@ user1850712,你是對的'沒有TXT',我編輯了相應的答案 – 2013-02-15 11:44:23

1

試試這個,希望它一定會給你

<?php 
    if(!(is_dir("./aaa"))) 
    { 
     die("Must create a folder first, sorry"); 
    } 

    $lists = scandir("./aaa"); 
    $i =0; 
    foreach($lists as $list) 
    { 
     if (strstr($list, '.txt')) { 
     $i++; 
     } 
    } 
    if($i == 0){ 
     die("the folder does not have any .txt extension files"); 
    } 

    echo "<form action=\"./page2.php\" method=\"get\">"; 
    echo "<select>"; 

    foreach($lists as $list) 
    { 
     if (strstr($list, '.txt')) { 
      echo "<option value=\"".substr($list,0, -4)."\">".substr($list, 0,-4)." </option>"; 
     } 
    } 
    echo "</select>"; 
    echo "</form>"; 
?>