Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Цикл заканчивается, а переход по header не делается? Почему?
 
 автор: elenaki   (17.12.2015 в 11:23)   письмо автору
 
 

Есть такой код, в начале - всякие подключения, потом разбор файла и занесение в базу. По окончании должен быть переход на файл с формой загрузки другого отчета, а он не делается! Просто останавливается и все. Может, break убрать? Но без него вообще не останавливается. Да еще и забивает базу строками с нулевыми значениями.



... 

$filename = $_FILES["uploaded_file"]["tmp_name"];

$fp         = fopen($filename,"r"); //открываем нужный нам файл на чтение в бинарном режиме
$fsize     = filesize($filename); //Узнаём размер исходного файла   
$cicl     = ceil($fsize/256) + 1; //узнаём кол-во циклов 

$grammes=0;
for($i = 0; $i < $cicl; $i ++) {  //запускаем цикл   

    if ($i == 0) {   
        fseek ( $fp, 0 ); //ну на первом цикле переходим в начало файла   
    } else {   
        fseek ( $fp, ftell ( $fp ) ); //бегаем по файлу   
    }  
     
    $text = fread ( $fp, 512000 ); //читаем файл по 512кб   

$file_array = explode("<br />",nl2br($text));

$i=2;
foreach ($file_array as $line_num => $line) {

$line_exp = explode(";", str_replace("\"", "", $line));

    $line_exp[0] = addslashes(trim($line_exp[0]));    //// Phone
        $line_exp[1] = addslashes(trim($line_exp[1]));    //// Status Call 
        $line_exp[2] = addslashes(trim($line_exp[2]));    //// Agente
    $line_exp[3] = addslashes(trim($line_exp[3]));    //// Date & Time
    $line_exp[4] = addslashes(trim($line_exp[4]));    //// Duration(Seg)
    $line_exp[5] = addslashes(trim($line_exp[5]));    //// Uniqueid
    $line_exp[6] = addslashes(trim($line_exp[6]));    //// Failure Cod
    $line_exp[7] = addslashes(trim($line_exp[7]));    //// Failure Cause - 2 fields
        $line_exp[8] = addslashes(trim($line_exp[8]));    //// Failure Cause - 2 fields

    
        $datetime_call = substr($line_exp[5], 0, 10);
 
$grammes++;

////1. проверка на наличие записи в базе
         $check_sql = "SELECT * FROM ".$db_prefix."cc_report WHERE 
                            uniq_code LIKE '".$line_exp[5]."' AND 
                            phone LIKE '".$line_exp[0]."'";   
         $result = mysql_query($check_sql) or die($check_sql." ".mysql_error());  
        
        /// 2.  если нет такой - вставляем
      
   if (mysql_num_rows($result) <=0) {              

    $update_query = "INSERT INTO ".$db_prefix."cc_report (id, campania,  phone, status_call, agent, datetime_call, duration, fail_code, fail_cause, uniq_code) VALUES (NULL,                        
                        '".str_replace(".csv", "", $_FILES["uploaded_file"]["name"])."',    
                        '".$line_exp[0]."', 
                        '".$line_exp[1]."',
                        '".$line_exp[2]."',
                        '".$datetime_call."',
                        '".$line_exp[4]."',
                        '".$line_exp[6]."',
                        '".$line_exp[7]."',
                        '".$line_exp[5]."')
                        ";
       
$result = mysql_query($update_query) or die(" $update_query <b>failed!</b><br>".mysql_error());
            }
}
   
  
    flush ();   
    if (feof ( $fp ) == true) {  //когда достигаем конца файла прекращаем выполнение цикла   
        break;  
        
    }   
  
}   
fclose ($fp); //закрываем файлы   
        
header("Location: upload_csv.php?msg=111&file=".$csvFile); 
exit;      

  Ответить  
 
 автор: S_7   (17.12.2015 в 21:13)   письмо автору
 
   для: elenaki   (17.12.2015 в 11:23)
 

fclose ($fp); //закрываем файлы  

отрабатывает?
странно что в теле цикла идёт работа с БД..и выборка и инсерт..может цикл должен сформировать массив ..а потом делать выборку одним запросом данными из этого сформированного массива...

  Ответить  
 
 автор: elenaki   (18.12.2015 в 10:14)   письмо автору
 
   для: S_7   (17.12.2015 в 21:13)
 

Почему странно? Выбрали стрoку из файла, разбили ее на поля, спросили базу - есть такая? Если нет - занесли, пошли дальше. Как узнать, отрабатывает fclose или нет? Закомментировать?
Сейчас проверю. Главное, что я этот скрипт во многих проектах использую и везде работает. А этот не хочет.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования