Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 19.01.2011, 06:38
sdsfy вне форума Посмотреть профиль Отправить личное сообщение для sdsfy Найти все сообщения от sdsfy
  № 1  
Ответить с цитированием
sdsfy

Регистрация: Oct 2010
Сообщений: 5
По умолчанию Flash Builder + PHP

Приветствую коллеги!

На PHP имеется скрипт, достающий все поля из некоторой таблицы в Firebird 2.0, в которой есть кроме трех Int, VarChar и TimeStamp полей, поле BLOB.

На Flash Builder сервис цепляется нормально и публикует абсолютно все данные, кроме BLOB поля, в котором содержится обычный многострочный текст.

К стандартному DataGrid отображающему записи из таблицы прицеплена mx:Form, в которую включена

Цитата:
<mx:FormItem label="Комментарий">
<s:TextArea text="{aDeviceClasses.COMMENT}"/>
</mx:FormItem>
s:TextArea выводит не текст, а какое-то Hex число, которое, судя по всему, является каким-то указателем на поле, или что-то вроде того.
Помогите пожалуйста извлечь из BLOB поля многострочный текст. Буду так же благодарен, если скажете как его обратно передать, если конечно есть тонкости и отличия от процесса извлечения.

Заранее спасибо!

Старый 19.01.2011, 10:49
MainCraft вне форума Посмотреть профиль Отправить личное сообщение для MainCraft Найти все сообщения от MainCraft
  № 2  
Ответить с цитированием
MainCraft

Регистрация: Oct 2010
Адрес: Волгоград
Сообщений: 14
Я мало что ещё понимаю в Flex-e, но мне кажется в вашем случае удобнее было бы удобнее заранее подготовить данные на стороне PHP.

Старый 19.01.2011, 15:52
sdsfy вне форума Посмотреть профиль Отправить личное сообщение для sdsfy Найти все сообщения от sdsfy
  № 3  
Ответить с цитированием
sdsfy

Регистрация: Oct 2010
Сообщений: 5
Цитата:
Сообщение от MainCraft Посмотреть сообщение
Я мало что ещё понимаю в Flex-e, но мне кажется в вашем случае удобнее было бы удобнее заранее подготовить данные на стороне PHP.
Вот встает вопрос - как их правильно подготовить? Я понимаю, что поле BLOB надо через поток читать. Т.е. создавать потоковый буффер, указатель на этот буффер как-то сообщить Flex-у, а там правильно загрузить поток в компонент.

Вопрос в том - КАК?


По крайней мере в случае с текстом в Firebird/Borland Interbase, решение нашлось: оно и лежало в описании PHP.

Для чтения BLOB поля
PHP код:
$res ibase_execute($stmt);
                
$this->throwExceptionOnError();    
                
                
$rows = array();
                
                
                while (
$row ibase_fetch_object($res)) {
                
                    
//Getting end recoding BLOB
                    
if(sizeof($row->COMMENT)){
                        
                        
$blobinfo ibase_blob_info($row->COMMENT); 
                        
$blobhandle ibase_blob_open($row->COMMENT);
                        
$commentblob NULL;
                        for(
$i 0$i $blobinfo[1]; $i++){
                            
$readsize $blobinfo[2];
                            if(
$i == ($blobinfo[1] - 1)){
                                
$readsize $blobinfo[0] - (($blobinfo[1] - 1) * $blobinfo[2]);
                            }
                            
$commentblob .= ibase_blob_get($blobhandle$readsize);
                        }
                        
ibase_blob_close($blobhandle);
                        
$row->COMMENT = ($commentblob);
                    }
                    
$rows[] = $row;
                }
                
ibase_free_query($stmt);
                
$this->Disconnect();
                return 
$rows;        
        } 
Flash Builder на своем уровне поле COMMENT распознает как текстовое. Совершенно спокойно отображает в соответствующем компоненте.

Для записи (Insert, Update):

PHP код:
                $blh ibase_blob_create($this->connection);
                
ibase_blob_add($blh$item->COMMENT);
                
$blobid ibase_blob_close($blh);

                
$res ibase_execute($stmt$item->CLASSNAME$blobid); 


Последний раз редактировалось sdsfy; 22.01.2011 в 20:57. Причина: Есть решение
Создать новую тему Ответ Часовой пояс GMT +4, время: 05:43.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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