Свернутый текст
#Импорт E-mail из txt файла в базу данных
function ImportEmail($path = null){
$this->import_err = null;
$ImportText = function($path, $table, &$err){ // <<<<==== ТУТ!!!!!!!!!!
if(($db_email = file($path, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES)) !== null){
$mysql_db_email = array();
$query = "SELECT `email` FROM `".$table."`";
$sql = mysql_query($query) or die('Error!');
if(mysql_num_rows($sql) > 0){
while($sqlrow = mysql_fetch_array($sql)){
$mysql_db_email[] = $sqlrow['email'];
}
}
foreach($db_email as $key => $val){
if(filter_var(trim($val), FILTER_VALIDATE_EMAIL) && !in_array(trim($val), $mysql_db_email)){
$mysql_db_email[] = trim($val);
$query = "INSERT INTO `".$table."` SET `email`='".mysql_real_escape_string(trim($val))."'";
mysql_query($query) or die('Error!');
}else{
$err .= 'Bad E-mail: '.trim($val).'<br />';
}
}
$key = !empty($key) ? $key : '0';
$err .= '<span style="display:block;font-weight:bold;color:#FF5555;">Обработано '.$key.' строк. Файл '.$path.'</span>';
}else{
$err .= '<span style="display:block;font-weight:bold;color:#FF5555;">Функция file() возвращает FALSE при попытке чтения файла. Файл: '.$path.'</span>';
}
};
$path = $path ? $path : $this->import_path;
if(file_exists($path) && is_file($path)){
$this->import_err .= '<span style="display:block;font-weight:bold;color:#FF3333;">Импорт E-mail в БД из файла '.$path.'</span>';
$ImportText($path, $this->db_table, $this->import_err); // <<<<==== ТУТ!!!!!!!!
}elseif(file_exists($path) && is_dir($path)){
$arr_path = glob($path.'/*.txt');
$this->import_err .= '<span style="display:block;font-weight:bold;color:#FF3333;">Импорт E-mail в БД из каталога '.$path.'</span>';
$this->import_err .= '<span style="display:block;font-weight:bold;color:#FF5555;">Найдено файлов "*.txt" для экспорта ['.count($arr_path).']</span>';
foreach($arr_path as $path){
$ImportText($path, $this->db_table, $this->import_err);
}
}else{
$this->import_err .= '<span style="display:block;font-weight:bold;color:#000;">Файл или каталог по указанному пути не найден. Путь: '.$path.'</span>';
}
}
Спустя 12 минут, 17 секунд (30.01.2012 - 22:25) Winston написал(а):
Через указатель $this не пробовал?
Спустя 1 минута, 36 секунд (30.01.2012 - 22:26) Игорь_Vasinsky написал(а):
и то что присутствуют и запросы SQL и вёрстка - ни есть гуд.
Спустя 12 часов, 43 минуты (31.01.2012 - 11:09) Xes написал(а):
Цитата (Winston @ 30.01.2012 - 19:25) |
Через указатель $this не пробовал? |
В первую очередь так и пробовал но не работает. Говрит чтото типа не знает что такое $this, видемо он не видет это указатель, поэтому и переделал через ссылку.
$this->import_err .= 'Bad E-mail: '.trim($val).'<br />';
Цитата (Игорь_Vasinsky @ 30.01.2012 - 19:26) |
и то что присутствуют и запросы SQL и вёрстка - ни есть гуд. |
А как иначе мне же надо выводить какйто лог работы функции ,чтобы потом вывести, что хоть происходит. Или ты предлагаешь скажем некие флаги устанавливать в определенные значения а потом кейсом аналезировать эти флаги и выводить текст - как то длинно и сложно. Пробывал так сделать ... потом задалбался искать по всему тексту коды ашибок и их текстовые значения.
Спустя 3 минуты, 51 секунда (31.01.2012 - 11:13) Winston написал(а):
А так попробовать?
Вызов
$ImportText = function($path, $table, &$this){
$this->свойство;
....
}
Вызов
$ImportText($path, $this->db_table, $this);
Спустя 5 минут, 19 секунд (31.01.2012 - 11:19) Xes написал(а):
Ну да впринцыпе должно работать, почти тоже самое, просто не само свойстов, а весь объет по ссылки передадим.
Видимо так оно и должно быть... по ссылке...
Я думал может есть еще чтото, что я езще не успел прочитать что можно напрямую в свойство передать значение из безыменной функции.
Видимо так оно и должно быть... по ссылке...
Я думал может есть еще чтото, что я езще не успел прочитать что можно напрямую в свойство передать значение из безыменной функции.
Спустя 14 минут, 46 секунд (31.01.2012 - 11:33) Winston написал(а):
Не. Так пахать не будет. Только что проверил.
Спустя 4 минуты, 53 секунды (31.01.2012 - 11:38) Winston написал(а):
Можно просто делать в анонимной ф-и return $err;
А при вызове писать
$ImportText = function($path, $table){
А при вызове писать
$this->import_err .= $ImportText($path, $this->db_table);
Спустя 1 день, 7 часов, 48 минут, 59 секунд (2.02.2012 - 19:27) Xes написал(а):
На серваке пхп 5.2, анонимные функции не работают, чем заменит?
Я анонимную функию вынес из метода, и преврантил ее в отдельный метод класса, что то лучше есть, или это оптимальный выход в этом случае.
Я анонимную функию вынес из метода, и преврантил ее в отдельный метод класса, что то лучше есть, или это оптимальный выход в этом случае.
Спустя 2 часа, 51 минута, 8 секунд (2.02.2012 - 22:18) Winston написал(а):
Цитата (Xes @ 2.02.2012 - 18:27) |
На серваке пхп 5.2, анонимные функции не работают, чем заменит? |
Напиши приватный (private) метод для выполнения однотипного действия.
Спустя 5 минут, 35 секунд (2.02.2012 - 22:24) neadekvat написал(а):
Цитата (Winston @ 2.02.2012 - 23:18) |
приватный |
По-русски это звучит как "частный" или "закрытый".