Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   PHP и TextField focus для библиотеки (http://www.flasher.ru/forum/showthread.php?t=130823)

mike711 06.10.2009 15:03

PHP и TextField focus для библиотеки
 
Здравствуйте, читал форум, но не нашёл точно того что мне надо.
Суть дела: давно мечтал написать модуль библиотеки, а тут друг подогнал мне хостинг, но без пхп :( Думал про JS, но решил попробовать на флеш+хмл — сразу появилась масса вопросов (Fl:10, AS:3)

http://mike711.com.ua/library/php+text.jpg

1) наверно, очень наивный вопрос: Не имея серверного обработчика (PHP, ColdFusion)
загрузить файлы на сервер нереально? (я только через ФТП могу, ну может ещё Шелл)

2) попроще: получая имя файла оно бъётся на автора и название, по разделителю (= или -) но текстовые поля не реагируют на получение текста, иными словами CHANGE EVENT не наступает ((( Это видно на картинке: текст появился, но в errorer textField пусто, да и счётчики в углу по нулям (

Код AS3:

function err_text(event:Event):void {
        if(event.target == f_author){
                author_counter.text=f_author.length+"/"+f_author.maxChars
        }
        if(event.target == f_book){
                book_counter.text=f_book.length+"/"+f_book.maxChars
        }
 
        var a:String=f_author.text;
        var b:String=f_book.text;
        var d:String="комментария нет";
        if((f_desc.text!="your desc here\r") || (f_desc.text!="")){d="есть комментарий"}
        //а вот наконец и сам текст:
        errorer.htmlText="<font color=\"#999999\" face=\"Arial\" size=\"-4\">Автор: </font><a>"+a+"</a><font color=\"#999999\" face=\"Arial\" size=\"-4\">, Книга:</font> \u00ab"+b+"\u00bb "+s+", "+d;
}
addEventListener(FocusEvent.FOCUS_IN, light);
addEventListener(FocusEvent.FOCUS_OUT, out);
 
//добавлю таймер - буду знать сколько мин. заполняю одну форму
var myTimer:Timer = new Timer(1000);
myTimer.start();
function timerHandler(event:TimerEvent):void{
        var cc = myTimer.currentCount;
        if (cc>9){
                var min:int = cc/60;
                var sec:int = cc-(min*60);
                var secD:int = sec/10
                var secU:int = sec-(secD*10)
        }else{
                secD=0;
                secU=cc;
        }
        timer.text =min+":"+secD+secU;
}
myTimer.addEventListener(TimerEvent.TIMER, timerHandler);
 
//поле комментариев — на картинке не показано
function desc_type(event:Event):void{
        desc_length.text=f_desc.length+" из "+f_desc.maxChars;
}
f_desc.addEventListener(Event.CHANGE, desc_type);
//хмм, а еще такой же листенер на др функцию етсь - объединить бы их
 
//выбор файла и загрузка — для первой кнопки
function up_list(event:Event):void{
        var archTypes:FileFilter = new FileFilter("ZIP files", "*.zip");
        var textTypes:FileFilter = new FileFilter("Text Files (txt rtf html htm fb2 fb3)", "*.txt; *.rtf; *html; *htm; *.fb2; *.fb3");
        var noType:FileFilter = new FileFilter("All files", "*.zip; *.txt; *.rtf; *html; *htm; *.fb2; *.fb3");
        var fileRef:FileReference = new FileReference();
 
                fileRef.addEventListener(Event.SELECT, selectHandler);
                fileRef.addEventListener(ProgressEvent.PROGRESS, progressHandler);
                fileRef.addEventListener(Event.COMPLETE, completeHandler);
                var myShape:Shape = new Shape();
                this.addChild(myShape);
                try{
                        fileRef.browse([noType, archTypes, textTypes]);
                }
                catch (error:Error){
                        trace("Unable to browse for files.");
                }
 
 
                function selectHandler(event:Event):void
                        {
                        var request:URLRequest = new URLRequest("http://127.0.0.1/library/fileUploadScript.php")
                                //создание серой линии прогрессбара на случай загрузки ещё файла
                                with(myShape.graphics){
                                lineStyle(4, 0xcccccc);
                                moveTo(9, 64);
                                lineTo(289, 64);
                        }
                        //проверка на 3 Мб на загрузку — не больше
                        if(fileRef.size>3145728){
                                errorer.htmlText="Извините, файл больше 3 МБ, загрузка невозможна =(";}
                        else if(fileRef.type==".zip"){
                                errorer.htmlText="Извините, zip пока не поддерживаем";
                        }
                        else{                       
                                try{
                                        //попытка разбыить на имя и название
                                        var delimiter:Array = new Array(" = "," - ");
                                        for each (var item in delimiter){
                                                if(fileRef.name.search(item)!==-1){                                               
                                                        f_author.text=fileRef.name.substring(0,fileRef.name.search(item));
                                                        //начиная от = и до расширения - это имя книги
                                                        f_book.text=fileRef.name.substring(fileRef.name.search(item)+3,fileRef.name.length-4);
                                                //errorer.htmlText.appendText(" угу!!");
                                                }
                                        }
 
                                        //аплоад перенести на кнопку сабмит
                                        fileRef.upload(request);
                                trace("selected");
                                }
                                catch (error:Error)
                                {
                                        trace("Unable to upload file.");
                                }
                        }
                }
 
 
                //зелёная линия прогрессБара
                function progressHandler(event:ProgressEvent):void
                {
                        var file:FileReference = FileReference(event.target);
                        myShape.graphics.lineStyle(4, 0x00aa00);
                        myShape.graphics.moveTo(9, 64);
                        myShape.graphics.lineTo(9+(event.bytesLoaded/event.bytesTotal*280),64);
                }
 
 
                function completeHandler(event:Event):void
                {
                        trace("uploaded");
                        //раз загружено - линия прогрессбара становится синей
                        myShape.graphics.lineStyle(4, 0x0075bf);
                        myShape.graphics.moveTo(9, 64);
                        myShape.graphics.lineTo(289, 64);
 
                }
 
        }
up_file.addEventListener(MouseEvent.CLICK, up_list);
 
//при ручной записи автора, в errorer появится текст
f_author.addEventListener(Event.CHANGE, err_text);
f_book.addEventListener(Event.CHANGE, err_text);
f_desc.addEventListener(Event.CHANGE, err_text);

3) балуясь дома с загрузкой через пхп получаю кракозябры вместо русских букв, английские нормально ((
http://mike711.com.ua/library/encode.jpg
PHP код:

        move_uploaded_file($_FILES['Filedata']['tmp_name'], "./".$_FILES['Filedata']['name']);

$directory opendir('./');
$files = array();
while (
$file readdir($directory))
{
    
array_push($files, array('./i'.$filefilectime('./'.$file)));
}
usort($filessorter);
print_r($files);
closedir($directory);

function 
sorter($a$b)
{
    if (
$a[1] == $b[1])
    {
        return 
0;
    }
    else
    {
        return (
$a[1] < $b[1]) ? -1;
    }


Итак: аплоад без пхп, почему чейндж не наступает, кодировка?
+ Если у меня явные косяки в коде — подскажите где плз и как оптимизировать, я не так давно этим занимаюсь :rolleyes:

Alex Lexcuk 06.10.2009 15:15

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

mike711 06.10.2009 15:35

если он установит ПХП, пропадёт смысл Флеша — и с архивами и с загрузкой и с БД он работает лучше — смогу использовать MySQL и т.д.

alexcon314 06.10.2009 16:30

"и с архивами и с загрузкой и с БД" флэш никак не работает без посторонней помощи. В чем вы видите смысл флэша в вашей ситуации - непонятно.

mike711 06.10.2009 17:17

я надеюсь, fzip мне поможет с архивами :) а поскольку «БД» только для меня, устроит и XML, —
я просто ищу наилучшее решение, не включающее php
Гораздо сложнее с загрузкой файла — тут хошь не хошь, я так понял, серверный скрипт нужен :(
Я понимаю, что взялся закручивать молотком шурупы, но всё-таки, не надо меня холиварить, кто-нибудь, ответьте пожалуйста, по существу 3-х моих вопросов


Часовой пояс GMT +4, время: 02:08.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.