В вашем коде есть два хитрых места для нулевых значений:
Если Forms![Press 2]![Containment - Press 2 subform].Form![Part Number]
равно нулю, DLookUp
будет обрабатываться неправильно, так как вы включаете его как строка.
Исправлено: используйте значение формы в качестве параметра, это также позволяет избежать ошибок внедрения SQL:
other = DLookup("[Model]", "[Part Number & Part Name]", "[Part Number]= Forms![Press 2]![Containment - Press 2 subform].Form![Part Number]")
Вы сохраняете результат DLookUp
в строке. Вы можете использовать Nz
здесь для возврата другой строки или объединить строку нулевой длины с результатом DLookUp
, чтобы обработать значение Null в виде строки нулевой длины:
other = VbNullString & DLookup("[Model]", "[Part Number & Part Name]", "[Part Number]= Forms![Press 2]![Containment - Press 2 subform].Form![Part Number]")
Это должно охватывать все места, где нули могут мешать этой части кода.
Я извлек бы, "изображение" логика в ее собственную функцию, которая делает if
более читаемый и также позволяет Вам централизовать логику.
function is_image($filename) {
$image_extensions = array('png', 'gif', 'jpg');
foreach ($image_extensions as $extension)
if (strrpos($filename, ".$extension") !== FALSE)
return true;
return false;
}
if (is_image($file) && !file_exists("$thumbsdir/$file")) {
createThumb("$gallerydir/$file", "$thumbsdir/$file",$thumbsize);
fwrite($log,date("Y-m-d")." @ ".date("H:i:s")." CREATED: $thumbsdir/$file\n");
}
if ((strpos($file, '.jpg',1) ||
strpos($file, '.gif',1) ||
strpos($file, '.png',1))
&& file_exists("$thumbsdir/$file") == false)
{
createThumb("$gallerydir/$file", "$thumbsdir/$file",$thumbsize);
fwrite($log,date("Y-m-d")." @ ".date("H:i:s")." CREATED: $thumbsdir/$file\n");
}
function check_thumbnail($file)
{
return (strpos($file, '.jpg',1) && file_exists("$thumbsdir/$file") == false ||
strpos($file, '.gif',1) && file_exists("$thumbsdir/$file") == false ||
strpos($file, '.png',1) && file_exists("$thumbsdir/$file") == false);
}
if (check_thumbnail ($file)) {
createThumb("$gallerydir/$file", "$thumbsdir/$file",$thumbsize);
fwrite($log,date("Y-m-d")." @ ".date("H:i:s")." CREATED: $thumbsdir/$file\n");
}
После извлечения логики к отдельной функции можно уменьшить дублирование:
function check_thumbnail($file)
{
return (strpos($file, '.jpg',1) ||
strpos($file, '.gif',1) ||
strpos($file, '.png',1)) &&
(file_exists("$thumbsdir/$file") == false);
}
Я разделил бы IFS, поскольку существует некоторый повторяющийся код там. Также я пытаюсь выйти из стандартной программы как можно раньше:
if (!strpos($file, '.jpg',1) && !strpos($file, '.gif',1) && !strpos($file, '.png',1))
{
return;
}
if(file_exists("$thumbsdir/$file"))
{
return;
}
createThumb("$gallerydir/$file", "$thumbsdir/$file",$thumbsize);
fwrite($log,date("Y-m-d")." @ ".date("H:i:s")." CREATED: $thumbsdir/$file\n");
file_exists
проверка, кажется, является постоянной для каждых из типов файлов, не сравнивайте их если file_exists
проверка была пройдена.
if (file_exists("$thumbsdir/$file") == false)
{
if(strpos($file, '.jpg',1) ||
strpos($file, '.gif',1) ||
strpos($file, '.png',1)
{
createThumb("$gallerydir/$file", "$thumbsdir/$file",$thumbsize);
fwrite($log,date("Y-m-d")." @ ".date("H:i:s")." CREATED: $thumbsdir/$file\n");
}
}
Я разбил бы его как это, отложив проблему дублирования:
if (strpos($file, '.jpg',1) && file_exists("$thumbsdir/$file") == false
|| strpos($file, '.gif',1) && file_exists("$thumbsdir/$file") == false
|| strpos($file, '.png',1) && file_exists("$thumbsdir/$file") == false) {
createThumb("$gallerydir/$file", "$thumbsdir/$file",$thumbsize);
fwrite($log,date("Y-m-d")." @ ".date("H:i:s")." CREATED: $thumbsdir/$file\n");
}
Ответ Улана @Fire обращается к дублированию хорошо.
Я нахожу, что следующее больше читаемого использования getimagesize (). Я пишу это первое, что пришло на ум, таким образом, может требоваться некоторая отладка.
Вертикальный код более читаем, чем горизонтальный, по моему скромному мнению.
// Extract image info if possible
// Note: Error suppression is for missing file or non-image
if (@$imageInfo = getimagesize("{$thumbsdir}/{$file}")) {
// Accept the following image types
$acceptTypes = array(
IMAGETYPE_JPEG,
IMAGETYPE_GIF,
IMAGETYPE_PNG,
);
// Proceed if image format is acceptable
if (in_array($imageInfo[2], $acceptTypes)) {
//createThumb(...);
//fwrite(...);
}
}
Мир + счастливое взламывание.
Мог бы также добавить мои два цента.
if(!file_exists($thumbsdir . '/' . $file) && preg_match('/\.(?:jpe?g|png|gif)$/', $file)) {
createThumb($gallerydir . '/' . $file, $thumbsdir . '/' . $file, $thumbsize);
fwrite($log, date('Y-m-d @ H:i:s') . ' CREATED: ' . $thumbsdir . '/' . $file . "\n");
}