Поисковая форма:) поиск по free-lance.ru Топ/история/обновления фриланса, по разным параметрам (темы, сообщения, пользователи...) Автоматическое удаление постов от ненужных юзеров в топике (php скрипт) Досье(точный ник)
 

Ник (или часть ника):
?
Какой текст ищем:
?
Раздел блогов:
За срок
дней
Тип поиска: (по вхождению: по тексту гуг выдаст посты с "гуг", "гугл", "огугл"; "полнотекстовый": по тексту "гуг" выдаст посты только с "гуг")
По вхождению строки:  Полнотекстовый: 
(поиск не 100% актуальный, есть определённая задержка при обновлении данных для поиска. )
0 Всего найдено: 7
Volgars Сообщение 25/07/2010 09:07 Копия темы
Передача данных от mySQL через PHP в массив (Flash Builder 4) С помощью встроенных мастеров соединения c PHP легко создал класс соединяющий проект с моей базой данных. В базе данных хранятся описания к картинкам и я хочу эти описания выводить в качестве тултипсов к картинкам. Естественно, если при наведении на каждую картинку будет происходить запрос к базе данных, то все будет тормозиться. Поэтому решил при загрузке приложения делать запрос к базе с адресами картинок и все описания загрузить в массив. И тут уже появляется ошибка. Подскажите, что не так делаю?   

Вот PHP-код файла формирующий запрос по двум параметрам (id картинки и id категории):

public function getDataMean($id,$dir_id) {
            $mysql = mysql_connect(DATABASE_SERVER, DATABASE_USERNAME, DATABASE_PASSWORD);
            mysql_query("SET NAMES 'utf8';");
             mysql_query("SET CHARACTER SET 'utf8';");
             mysql_query("SET SESSION collation_connection = 'utf8_general_ci';");
            mysql_select_db(DATABASE_NAME);
            $query = "SELECT name FROM files WHERE id='".$id."' AND dir_id='".$dir_id."'";
            $result = mysql_query($query);
            return $result;
      }   

А вот я пытаюсь получить массив (Names) с описаниями этих картинок (в данном случае трёх).:

<![CDATA[
import mx.controls.Alert;
import mx.events.FlexEvent;
   
public var Names:Array = new Array();
public var textName:String;
   
protected function decks_clickHandler(event:MouseEvent):void
{
arrayOfNumber = new Array();
generateArray(minCount,maxCount);
randomize(arrayOfNumber);
var dir_id:int = 7;
   
card1.source = "http://***/gallery/7/"+String(arrayOfNumber[0])+".jpg";
card2.source = "http://***/gallery/7/"+String(arrayOfNumber[1])+".jpg";
card3.source = "http://***/gallery/7/"+String(arrayOfNumber[2])+".jpg";
for (var i:int=0; i<4; i++){
getDataMeanResult.token = authors.getDataMean(arrayOfNumber[i], dir_id);
Names[i] = getDataMeanResult.lastResult[0].name;
}
}
]]>

Ошибка в строке Names[i] = getDataMeanResult.lastResult[0].name;
Естественно, все службы определены. Входящие и исходящие данные тоже.

Подскажите, плиз, как правильно сделать такое?
FlexMaster Сообщение 25/07/2010 20:12 Копия темы
1. PHP код проверьте. Если мне не изменят логика, то вы возвращаете идентификатор ресурса, а не данные, которые еще надо извлечь
2. В каком виде данные пересылаются? (XML, AMF, еще как то... ?)
Volgars Сообщение 25/07/2010 20:33 Копия темы
Спасибо за помощь.
1. Проверил. Так ведь тестовая операция нормально проходит и возвращает в name требуемое имя.
2. AMF

Проблему даже можно упростить. В режиме отладки выдает ошибку: TypeError: Error #1010: Термин не определен и не имеет свойств.

Код:
getDataMeanResult.token = authors.getDataMean(arrayOfNumber[0], dir_id);
var nameTemp:String = getDataMeanResult.lastResult[0].name;
nameText.text = nameTemp;

В средней строке. Вот что ему там не нравится? Хотя в обычном режиме в браузере все работает и правильно имена отображает.
Если создаю цикл, то ошибка прежняя и в браузере не работает:

for (var s:uint=0; s<3; s++){
getDataMeanResult.token = authors.getDataMean(arrayOfNumber[s], dir_id);
nameArray[s] = getDataMeanResult.lastResult[0].name;
}
FlexMaster Сообщение 25/07/2010 20:44 Копия темы
>>Проблему даже можно упростить. В режиме отладки выдает ошибку: TypeError: Error #1010: Термин не определен и не имеет свойств.

>>Код:
>>getDataMeanResult.token = authors.getDataMean(arrayOfNumber[0], dir_id);
>>var nameTemp:String = getDataMeanResult.lastResult[0].name;   

эта лшибка возникает при рбращении к несуществующему свойству.
Может вы пытаетесь к нему обращаться до полной загрузки?

В отладочной версии такие ошибки прерывают выполнение, а в обычной, они просто игнорируются

В отладчике поставьте break на этой строке и посмотрите что будет в объектах.


Volgars Сообщение 25/07/2010 21:11 Копия темы
Да, я тоже так думал. Но тогда почему, если перетащить нужную службу в режиме Дизайн в текстовое поле, то вообще все работает без ошибок?   
Только предупрежденые выдает в строке ниже: С помощью привязки данных невозможно обнаружить изменения при использовании оператора с квадратными скобками.   Используйте вместо этого для массива ArrayCollection.getItemAt().

s:TextArea x="153" y="435" id="nameText" text="{getDataMeanResult.lastResult[0].name}"   width="296" height="89"   />

>>Может вы пытаетесь к нему обращаться до полной загрузки?   

А как можно решить эту проблему? Как в AS3 можно дать дождаться получения данных и только потом продолжать код?
Divas Сообщение 26/07/2010 11:51 Копия темы
Так там жеж точно есть событие у сервиса, срабатывает при поступлении данных. Повесь на него обработчик, и уже в нем инициализируй свои данные.

Т.е. в определении сервиса сразу повесь типа:
<s:HTTPService id="myService" url="" result="onGetData(event)"/>

и уже в onGetData обрабатывай данные, нельзя сразу обращаться к lastResult, он пустой, асинхронность е-мое))

вот мой пример обработчика:
private function onGetData(eventObject:ResultEvent):void
{
data = eventObject.result.codes
bla bla bla....
Volgars Сообщение 26/07/2010 12:50 Копия темы
Дмитрий, спасибо!
Догадывался, что как-то так должно быть, но как это все организовать не знал. Сейчас начну пробовать.
Только <s:HTTPService у меня нет и данные берутся не с XML.
Я же использую мастеры встроенные в FB4 для соединения с PHP и они сгенерировали:
<fx:Declarations>
<s:CallResponder id="getDataMeanResult"/>
<authors:Authors id="authors" fault="Alert.show(event.fault.faultString + '\n' + event.fault.faultDetail)" showBusyCursor="true"/>

</fx:Declarations>

Сейчас буду пробовать ваш способ и ещё попробую с помощью этих мастеров манипулировать с возвращаемыми данными.
0

©2008 edogs egods
Выразить восторг, поругаться
или предложить что-нибудь можно на форуме
Для обсуждения этого сервиса так же есть темы на фрилансе по
поиску , флудотопу ,и по удалённым сообщениям ,и по Актуальным/популярным темам , и по топу "кто кому больше наотвечал"