За последние 24 часа нас посетили 50936 программистов и 1741 робот. Сейчас ищет 941 программист ...

Обрезается строка при импорте csv в html таблицу

Тема в разделе "PHP для новичков", создана пользователем Axios, 30 сен 2013.

  1. Axios

    Axios Активный пользователь

    С нами с:
    13 янв 2013
    Сообщения:
    52
    Симпатии:
    1
    Всем привет, помогите с такой проблемой:
    Обрезается строка при импорте csv в html таблицу.

    Использую вот такой код:

    Код (Text):
    1. @$file = fopen($school_file, 'r') or die('Ошибочка');
    2.             flock($file, 1);
    3.             echo '<table cellspacing="0" cellpadding="5" border="1" width="100%" id="MyTable">';
    4.             echo "\n";
    5.             while(!feof($file)) {
    6.             $Mass = fgetcsv($file, 1024, ';');
    7.             $j = count($Mass);
    8.             if ($j != 1) {
    9.             echo '<tr align="center">' . "\n";
    10.             for ($k=0; $k<$j; $k++) {
    11.             echo '<td class="td_'.$k.'">'. $Mass[$k] ."</td>\n";
    12.             }
    13.             echo "</tr>\n";
    14.             }
    15.             }
    16.             echo '</table>';
    17.             flock($file, 3); // 3 == LOCK_UN
    18.             fclose($file);
    В названии строки стоит текст "Общий курс (20 уроков)", а в html таблице выводится только (20 уроков), как поправить импорт?
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    После этой строки:
    Код (Text):
    1. $Mass = fgetcsv($file, 1024, ';');
    вставьте
    Код (Text):
    1. die(var_export($Mass, true));
    и покажите вывод.
     
  3. Axios

    Axios Активный пользователь

    С нами с:
    13 янв 2013
    Сообщения:
    52
    Симпатии:
    1
    Вывелся вот такой массив

    Код (Text):
    1. array (
    2.   0 => ':',
    3.   1 => 'min',
    4.   2 => 'max',
    5.   3 => '1',
    6.   4 => '2',
    7.   5 => '3',
    8.   6 => '4',
    9.   7 => '5',
    10.   8 => '6',
    11.   9 => '7',
    12.   10 => '8',
    13.   11 => '9',
    14.   12 => '10',
    15.   13 => '11',
    16.   14 => '12',
    17.   15 => '13',
    18.   16 => '14',
    19.   17 => '15',
    20.   18 => '16',
    21.   19 => '17',
    22.   20 => '18',
    23.   21 => '19',
    24.   22 => '20',
    25.   23 => '21',
    26.   24 => '22',
    27.   25 => '23',
    28.   26 => '24',
    29.   27 => '25',
    30.   28 => '26',
    31.   29 => '27',
    32.   30 => '28',
    33.   31 => '29',
    34.   32 => '30',
    35.   33 => '31',
    36.   34 => '32',
    37.   35 => '33',
    38.   36 => '34',
    39.   37 => '35',
    40.   38 => '36',
    41. )
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Хм... Дайте первые несколько строк CSV-файла. Я просто думал, там в первой будет заголовок таблицы
     
  5. Axios

    Axios Активный пользователь

    С нами с:
    13 янв 2013
    Сообщения:
    52
    Симпатии:
    1
    Ну да это и есть это заголовки столбцов, просто там цифрами недели написаны
    eng.batester.ru/userfiles/sprachcaffe_brayton.csv
     
  6. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Любопытно. Прогнал ваш код у себя на компе, результат получился нормальный... Я поэтому и начал спрашивать, что код и выглядит нормально.
    https://www.dropbox.com/s/3g6ehciktygfboc/CSV_Table.png

    Могу только посоветовать попробовать заменить
    Код (Text):
    1.  
    2. $Mass = fgetcsv($file, 1024, ';');
    на

    Код (PHP):
    1. $str = fgets($file);
    2. $Mass = explode(";", $str);
    3.  
    Это одно и тоже