![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| клоп |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 28.2.2006 Где: г. Череповец Репутация: нет Всего: нет |
Доброго дня!!
Решил написать скрипт, помогающий юзерам не знающим HTML формировать простенькие таблицы собственного дизайна. Суть скрипта в следующем: Юзер загружает Exel файл, сохраненный в формате CSV на сервак в папку =download=, где скрипт определяет сколько колонок будет у данной таблицы. Дальше юзер выбирает дизайн и кликает на просмотр. В итоге если его все утроило получает код HTML. На данном этапе разработки скрипта не могу добиться чтобы скрипту передавался параметр имени загруженного файла строка 300 кода Вот код скрипта:
Посмотрите в чем косяк? При загрузке файла прога определяет что за файл и сколько столбцов, а вот ниже уже не передает эти параметры для формирования непосредственно таблицы --------------------
Всякая чепуха посещает голову, когда она пуста .... |
|||
|
||||
| Pitc |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 9.5.2005 Где: Минск Репутация: 2 Всего: 2 |
Наверное у тебя файл "download/".$_FILES["filename"]["name"] не существует , тк вроде
функция file_exists() возвращает false. Сейчас PHP не установлен , так что проверить не могу.
А вообще если файл большой то подобные конструкции давольно медлительны. Лучше читать файл целиком при помощи File() ,если нужен доступ к каждой строке файла то fread() |
||||
|
|||||
| клоп |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 28.2.2006 Где: г. Череповец Репутация: нет Всего: нет |
Я читаю только первую строку файла .csv, чтобы получить количество столбцов+1 для формирования таблицы, так что объемы тут невелики. Так что в !feof() я не увидел необходимости. --------------------
Всякая чепуха посещает голову, когда она пуста .... |
||||||
|
|||||||
| клоп |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 28.2.2006 Где: г. Череповец Репутация: нет Всего: нет |
Чтоб было более менее понятно что я делаю, выложил работающий код. Косяк в том что в строке 289 я указал явную ссылку на файл .csv, а хотелось бы чтобы скрипт брал её сам из суперглобального массива $_POST или из $_FILES, как делается в строках 105 - 116. Млина савсем запутался. выручайте плизз. Благое дело делаю, для людей так сказать.
Это сообщение отредактировал(а) клоп - 2.5.2006, 18:15 --------------------
Всякая чепуха посещает голову, когда она пуста .... |
|||
|
||||
| Pitc |
|
||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 9.5.2005 Где: Минск Репутация: 2 Всего: 2 |
Во первых у тебя получается пишет что файл успешно загружен даже если он расширения .exe - нужна проверка
Во вторых в теге <form> строчка 145 у тебя путь указан явно , лучше писать так :<form actions=<? echo $SCRIPT_NAME;?> и т.д. >, а в строчке 94 В третьих если ты напишешь после
то увидишь что то типа этого
это значит что в $_POST нет filename и name и следовательно в переменную
запишется только download Удачи! |
||||||||
|
|||||||||
| клоп |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 28.2.2006 Где: г. Череповец Репутация: нет Всего: нет |
До проверок пока не дошел. Они по любому будут и на расширение и на размер загружаемого файла. А над остальным да, работы много , и судя по всему придеться париться самому без подсказок. Спасибо за удачу!! --------------------
Всякая чепуха посещает голову, когда она пуста .... |
|||
|
||||
| Pitc |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 9.5.2005 Где: Минск Репутация: 2 Всего: 2 |
Если правильно напишешь ссылки в теге <form>
и заменишь строку
на
то все работает Насколько я понял в этом и была проблема |
||||
|
|||||
| Сарт |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 29.4.2006 Репутация: нет Всего: 0 |
Хочу заметить, что скрипт будет работать, если поле исходного файла не будет пустым.
--------------------
[color=purple][/color]Died.Of course, System.StackOverflow |
|||
|
||||
| клоп |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 28.2.2006 Где: г. Череповец Репутация: нет Всего: нет |
Нет нечего не заработало. Имя файла не передается функции fopen() Вот простой код который должен работать идентично:
Строка 33 не получает имя файла .... --------------------
Всякая чепуха посещает голову, когда она пуста .... |
||||||
|
|||||||
| R.M. |
|
|||
![]() Анархист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2164 Регистрация: 8.6.2005 Где: Питер Репутация: -2 Всего: 30 |
клоп, ну попробуй сначала не открыватьфайл а просто выводить $_FILES["filename"]["name"]. Да и вообще пиши не $_FILES["filename"]["name"] а $_FILES['filename']['name']. Может fopen неправильно ищет изза двойных кавычек?
-------------------- Помнишь как бодрили дискотеки прошлого века? Теперь стул, компьютер и нету человека. Nokia LifeStyle - Всё для смартфонов Nokia |
|||
|
||||
| клоп |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 28.2.2006 Где: г. Череповец Репутация: нет Всего: нет |
Не пашет Warning: fgets(): supplied argument is not a valid stream resource in path\test.php on line .. Warning: fclose(): supplied argument is not a valid stream resource in path\test.php on line ..
Мля слов нет. Чот не то с передачей параметра. Как быть вообще не знаю. Хоть фиксированное имя файла делай да проверяй загрузил ли его юзер, а потом удаляй файл когда он завершит работу. Неужели никто не делал что-то подобное? --------------------
Всякая чепуха посещает голову, когда она пуста .... |
||||
|
|||||
| Pitc |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 9.5.2005 Где: Минск Репутация: 2 Всего: 2 |
Это сообщение отредактировал(а) Pitc - 3.5.2006, 17:39 |
|||
|
||||
| клоп |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 28.2.2006 Где: г. Череповец Репутация: нет Всего: нет |
Pitс да, код рабочий. Спасибо тебе преагромнейшее,- напару вроде чтото уже делаем. Но рабочий он только если ты один на один со скриптом. А хотелось бы для публичного использования. А если во время создания таблицы зайдет другой юзер и подгрузит свой csv файл? Все капец. Не в очередь же их ставить на использование скрипта. У тебя как и у меня явно подгружается файл с которым fopen() начинает работать. А хотелось бы чтоб имя бралось из переменных окружения или что-то уникальное которое создается только при открытии страницы браузером или при удачном копировании. Есть мысль привязать как то к time(), или использовать куки или сессии. Только как реализовать правильно пока в голову не приходит. Pitс или еще сочувствующие, что можно и как? Какие есть соображения. --------------------
Всякая чепуха посещает голову, когда она пуста .... |
|||
|
||||
| Pitc |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 9.5.2005 Где: Минск Репутация: 2 Всего: 2 |
Я попробывал как обычно через сесии , но чето скрипт пахать не хочет.
Можно использовать функцию flock() для синхронизации операций чтения/запяси. |
|||
|
||||
| клоп |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 28.2.2006 Где: г. Череповец Репутация: нет Всего: нет |
Pitc я не выспался но решил эту проблему
А вот рабочий код конструкции
Теперь можно работать дальше, с проверками того что вводит юзер... --------------------
Всякая чепуха посещает голову, когда она пуста .... |
|||
|
||||
| Pitc |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 9.5.2005 Где: Минск Репутация: 2 Всего: 2 |
Совет..Помести css в отдельный файл так будет легче в исходнике разбераться. Будут вопросы пиши постараюсь помочь. Интерестно для чего скрипт пишеш ?
|
|||
|
||||
| клоп |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 28.2.2006 Где: г. Череповец Репутация: нет Всего: нет |
Pitc насамом деле css отдельно, просто для размещения тут кода решил в один файл затолкать. Зачем скрипт пишу, описано в первых моих постах. На этом форуме работает личная почта? Хотел тебе Pitc в личку это чиркнуть чтоб не флудить но не смог. Pitc а все-таки записи имени файла в txt файл типа как tmp.txt в твоем коде мне наверно не избежать, потому как если менять какие либо параметры таблицы в дальнейшем в скрипте то по переменной имени файла хранящемся с скрытом поле fopen() уже не срабатывает. Приходиться опять использовать загрузку csv файла. --------------------
Всякая чепуха посещает голову, когда она пуста .... |
|||
|
||||
| клоп |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 28.2.2006 Где: г. Череповец Репутация: нет Всего: нет |
Все, скрипт закончен полностью. Благодарность Pitc-у, что не оставил меня возиться самим с собой.
--------------------
Всякая чепуха посещает голову, когда она пуста .... |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |