if(is_file("$MyDir/$file") && stristr($file,".dat") ) {
will found also files as "123.date", "123.dat.txt", etc.
this one correct this little mistake:
if(is_file("$MyDir/$file") && (strcasecmp(substr($file,-4),".dat")==0) ) {
If you using PHP 4.3 or above you can use glob() function:
foreach (glob("*.dat") as $filename) {
echo $filename."<br>\n";
}