Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вывод из CSV файла

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: проблема чтения в разных версиях php
Mister
Отправлено: 20 Апреля, 2010 - 21:51:21
Post Id



Посетитель


Покинул форум
Сообщений всего: 282
Дата рег-ции: Янв. 2007  
Откуда: Сухиничи Калуж.обл.


Помог: 0 раз(а)

[+]


В общем проблема следующая: скрипт содержит код:
PHP:
скопировать код в буфер обмена
  1.  
  2. <table border="1" width="750" cellpadding="2" cellspacing="2" color="gray" align="center" frame="above" rules="rows" bgcolor="#FCF5E2">
  3.         <tr>
  4.                 <td align="center" width="80"><b>№п/п</b></td>
  5.                 <td width="140"><b>Место</b></td>
  6.                 <td width="360"><b>Профессия</b></td>
  7.                 <td width="90"><b>Зарплата</b></td>
  8.                 <td width="80"><b>Дата публикации</b></td>
  9.         </tr>
  10. <?PHP
  11. $f = fopen ("vakant.csv","r") or die ("Невозможно открыть файл");
  12. for ($i=1; $data=fgetcsv($f,1000,";"); $i++) {
  13. $num = count($data);
  14. echo "<tr><td align=\"center\">$i</td>";
  15. for ($c=0; $c<$num; $c++)
  16. print "<td>$data[$c]</td>";
  17. echo "</tr>";
  18. }
  19. ?>
  20. </table>
  21.  

Соответственно выводит из файла данные вида:

г. Сухиничи;ОХРАННИК;5000;29.03.2010
г. Сухиничи;ВРАЧ;5500;29.03.2010
г. Сухиничи;ПОЧТАЛЬОН;5000;29.03.2010
г. Сухиничи;ВРАЧ;5500;29.03.2010
г. Сухиничи;ВРАЧ;5500;29.03.2010
г. Сухиничи;ВРАЧ;5500;29.03.2010
г. Сухиничи;ВРАЧ;5175;29.03.2010
г. Сухиничи;ВРАЧ;5176;29.03.2010
г. Сухиничи;ВРАЧ;5626;29.03.2010
г. Сухиничи;МЕДИЦИНСКАЯ СЕСТРА;4966;29.03.2010
г. Сухиничи;НАЛАДЧИК ТЕХНОЛОГИЧЕСКОГО ОБОРУДОВАНИЯ;8500;29.03.2010

Так вот проблема в следующем, локально всё работает без проблем и на одном хостинге тоже работает без проблем, но при переезде на другой хостинг возникают проблемы с выводом.

А должно быть так(как на локальном компе и на другом хостинге):

Подскажите, в чём проблема?

(Отредактировано автором: 21 Апреля, 2010 - 07:33:12)



-----
..я не специалист, а только учусь
 
 Top
altermann
Отправлено: 21 Апреля, 2010 - 00:02:34
Post Id



Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Март 2010  
Откуда: Днепропетровск


Помог: 6 раз(а)




лишний тег в echo "</td></tr>"

(Отредактировано автором: 21 Апреля, 2010 - 00:07:19)



-----
Я прирожденный кузнец, я не могу не куя!
 
 Top
Mister
Отправлено: 21 Апреля, 2010 - 07:26:45
Post Id



Посетитель


Покинул форум
Сообщений всего: 282
Дата рег-ции: Янв. 2007  
Откуда: Сухиничи Калуж.обл.


Помог: 0 раз(а)

[+]


Тэг убрал, но проблема не в нём. Почему-то сама функция как-то обрезает и неправильно выводит данные по разделителю. Я просто не знаю как по-другому может буть.


-----
..я не специалист, а только учусь
 
 Top
Мелкий Супермодератор
Отправлено: 21 Апреля, 2010 - 09:55:33
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Смотрите HTML-код на выходе и ищите ошибку там для начала.


-----
PostgreSQL DBA
 
 Top
Mister
Отправлено: 21 Апреля, 2010 - 10:16:55
Post Id



Посетитель


Покинул форум
Сообщений всего: 282
Дата рег-ции: Янв. 2007  
Откуда: Сухиничи Калуж.обл.


Помог: 0 раз(а)

[+]


C html кодом всё в порядке. У меня как-то некорректно работает функция fgetcsv


-----
..я не специалист, а только учусь
 
 Top
Makkin
Отправлено: 21 Апреля, 2010 - 10:18:46
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Апр. 2010  


Помог: 0 раз(а)




Если на разных хостингах ведет себя по разному, то может дело в открытии файла vakant.csv. попробовать другие ключи открытия ... вместо r указать rt или rb.
 
 Top
Mister
Отправлено: 21 Апреля, 2010 - 11:31:11
Post Id



Посетитель


Покинул форум
Сообщений всего: 282
Дата рег-ции: Янв. 2007  
Откуда: Сухиничи Калуж.обл.


Помог: 0 раз(а)

[+]


Открывает он нормально, дело в том что неправильно считывает.


-----
..я не специалист, а только учусь
 
 Top
Makkin
Отправлено: 21 Апреля, 2010 - 12:45:28
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Апр. 2010  


Помог: 0 раз(а)




Я про считывание и говорю:

"Разные семейства операционных систем имеют разные соглашения относительно окончанийя строк. ...
Если вы используете неверный символ конца строки при редактировании файлов, вы можете обнаружить, что при открытии эти файлы "смешно выглядят"."

http://www.php.su/functions/?fopen
 
 Top
Mister
Отправлено: 21 Апреля, 2010 - 13:39:13
Post Id



Посетитель


Покинул форум
Сообщений всего: 282
Дата рег-ции: Янв. 2007  
Откуда: Сухиничи Калуж.обл.


Помог: 0 раз(а)

[+]


Попросил на хостинге сменить версию php с 5.2.3 на 4.4.9 , чтение из файла заработало. Но теперь на сайте масса других проблем, так что придётся переписывать скрипт заново.


-----
..я не специалист, а только учусь
 
 Top
JustUserR
Отправлено: 21 Апреля, 2010 - 13:54:38
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Mister пишет:
Сменить версию php с 5.2.3 на 4.4.9 , чтение из файла заработало
Скорее всего дело не в версии PHP а в настройках базовых путей и safe_mode если он имеется


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
altermann
Отправлено: 21 Апреля, 2010 - 13:56:46
Post Id



Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Март 2010  
Откуда: Днепропетровск


Помог: 6 раз(а)




А вы не пробовали просто считать строку из файла функцией fgets и вручную разбить строку функцией explode(";", $data).

Поставьте уровень ошибок E_ALL, может он какое-нибудь предупреждение выкидывает.


-----
Я прирожденный кузнец, я не могу не куя!
 
 Top
JustUserR
Отправлено: 21 Апреля, 2010 - 14:11:22
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




altermann Лучше всего проверить доступ к файлу или папке это попробовать получить dir с помощью system и посмотреть если ли реальный доступ и в какой папке вы находитесь


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Mister
Отправлено: 21 Апреля, 2010 - 15:02:19
Post Id



Посетитель


Покинул форум
Сообщений всего: 282
Дата рег-ции: Янв. 2007  
Откуда: Сухиничи Калуж.обл.


Помог: 0 раз(а)

[+]


Доступ к файлу есть, только он разбивает строку не так как должен, а почему-то спотыкается на точках и некоторые элементы вообще теряет.

altermann пишет:
А вы не пробовали просто считать строку из файла функцией fgets и вручную разбить строку функцией explode(";", $data).

Видимо придётся делать так, но ведь в php 5.2.3 есть функция fgetcsv, её использовать проще.


-----
..я не специалист, а только учусь
 
 Top
JustUserR
Отправлено: 21 Апреля, 2010 - 17:11:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Mister пишет:
А почему-то спотыкается на точках и некоторые элементы вообще теряет
Конечно могут сказываться особенности функции под разные версии PHP и платформы - однако нельзя исключать что данное явление происходит из-за несовместимости с кодирокой или например символа перевода строки (Как например Perl под windows игнорирует символ \r - а под *nix программы с таким символом между инструкциями кода работать не будут)


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Makkin
Отправлено: 21 Апреля, 2010 - 19:08:42
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Апр. 2010  


Помог: 0 раз(а)




Mister пишет:
Видимо придётся делать так, но ведь в php 5.2.3 есть функция fgetcsv, её использовать проще.

Mister, так ключ то поменять не пробовал? или думаешь в этом не может скрываться косяк?
JustUserR тоже пишет про то что в разных системах может по разному обрабатывать конец строки.
"Так как установка флага трансляции по умолчанию зависит от SAPI и версии PHP, которую вы используете, рекоммендуем явно задавать указанный флаг из соображений портируемости."

(Отредактировано автором: 21 Апреля, 2010 - 19:09:40)

 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB