PDA

Просмотр полной версии : помогите с поиском по базе


chata
28.11.2009, 22:54
Здравствуйте, у меня возникла проблема при реализации поиска по базе. С базой mySQL соединяюсь через PHP, и соответвующее запросы для поиска, прописаны тоже в php.

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


<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:components="components.*" verticalGap="2" width="100%" height="100%" borderColor="#C3BED2" themeColor="#EBE6FA"

creationComplete="init()">

<mx:Script>
<![CDATA[
import mx.controls.Text;
import mx.controls.TextArea;
import mx.events.ListEvent;
import mx.collections.ArrayCollection;
import mx.rpc.events.FaultEvent;
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;
import flash.display.BitmapData;
import components.MyWindow;
import mx.managers.PopUpManager;
import mx.events.CloseEvent;
import mx.containers.TitleWindow;
import mx.effects.Resize;
import mx.events.ResizeEvent;

[Bindable] private var origamiList:ArrayCollection = new ArrayCollection();

var origamiWindow:MyWindow;

private function changeHandler(event:ListEvent):void{

origamiWindow = new MyWindow();
PopUpManager.addPopUp(origamiWindow, this, true);

origamiWindow.addEventListener(CloseEvent.CLOSE,_close);
//origamiWindow.setStyle("addedEffect", image_addedEffect);
origamiWindow.setStyle("removedEffect", image_removedEffect);
origamiWindow.x = 350;
origamiWindow.y = 100;
}


private function _close(event:CloseEvent):void{
PopUpManager.removePopUp(origamiWindow);
origamiWindow = null;
}

private function init():void{
origams.send();
}

private function httpFaultHandler(event:FaultEvent):void{
Alert.show("There was a problem","Error");
}

private function httpResultHandler(event:ResultEvent):void{
origamiList = event.result.origamis.myorigami;
}

private var selectOrigamiList:ArrayCollection;



]]>
</mx:Script>

<mx:HTTPService id="origams" url="http://localhost/origami/www/index.php"
fault="httpFaultHandler(event)"
result="httpResultHandler(event)"/>

<mx:Parallel id="image_removedEffect">
<mx:Zoom />
<mx:Fade />
</mx:Parallel>

<mx:Label text="Каталог" width="100%" textAlign="center" paddingTop="10" height="5%" fontWeight="bold"/>

<mx:HBox width="100%" horizontalAlign="center" height="95%" verticalAlign="top" horizontalGap="2">
<mx:Canvas width="20%" height="100%">
<mx:VBox left="20" right="0" height="35%" verticalGap="0" top="0">
<mx:Label text="Тематика" fontWeight="bold"/>
<mx:LinkButton label="Все" fontWeight="normal" fontStyle="normal" textAlign="left" click="catalogViewStack.selectedChild = all"/>
<mx:LinkButton label="Птицы" fontStyle="normal" textAlign="left" fontWeight="normal" click="origamiList.refresh()"/>
<mx:LinkButton label="Маски" textAlign="left" fontStyle="normal" click="catalogViewStack.selectedChild = masks" fontWeight="normal"/>
<mx:LinkButton label="Животные" click="catalogViewStack.selectedChild = animal" fontWeight="normal"/>
</mx:VBox>

<mx:Canvas left="0" borderColor="#B7BABC" bottom="0" right="0" height="55%" width="100%">
<mx:Label x="0" y="0" text="Поиск" fontWeight="bold"/>
<mx:Button label="Поиск" y="190" right="50"/>
</mx:Canvas>

</mx:Canvas>
<mx:Canvas width="80%" height="100%" borderStyle="none">

<mx:ViewStack id="catalogViewStack" left="0" right="0" top="0" bottom="0">
<mx:Canvas id="all" label="all" width="100%" height="100%">
<mx:TileList id="allList"
height="100%"
itemClick="changeHandler(event)"
dataProvider="{origamiList}"
labelField="name"
itemRenderer="components.OrigamiImage"
themeColor="#E6E6E6" borderColor="#B2B2B2" right="0" left="0" bottom="0">
</mx:TileList>
</mx:Canvas>

<mx:Canvas id="masks" label="masks" width="100%" height="100%">
<mx:Text text="ku-ku"/>
</mx:Canvas>

<mx:Canvas id="animal" label="animal" width="100%" height="100%">
<mx:Text text="Надо написать запрос"/>
</mx:Canvas>

</mx:ViewStack>
</mx:Canvas>


</mx:HBox>

</mx:VBox>



Как ни пробовала, никак не получается сделать динамическим url, тоесть чтоб в зависимости от линка или поиска url менялся.
Знаю что можно написать as который будет отвечать за запросы, но не знаю как это реализовать.

Помогите, пожалуйста :)

Спасибо.

Кип
29.11.2009, 04:40
Я, может, сейчас скажу глупость, или же я просто не совсем вас понял, но мне кажется, что обработчик клика по кнопке *поиск* должен выглядеть как-то так.

private function sendSearchRequest():void
{
origams.url = "новый url с поисковыми критериями";
origams.sendRequest();
}

chata
29.11.2009, 13:46
Спасибо, буду пробовать, пока 1 тест прошел, надеюсь что то верное решение)))

А не подскажите еще ответ на вопросик.
Раньше писала запросы на AS2, выглядело это примерно так

var my_str = "makeRate";
var my_xml:XML = new XML(my_str);
my_xml.contentType = "text/xml";
var receive_xml:XML = new XML();
receive_xml.onLoad = function(success){
if(success){
}
}
var choice:String = radioGroup.selection.label;
my_xml.sendAndLoad("http://flash-test/index.php?mark="+choice+"", receive_xml);


Так вот, в этом случае я передавала в PHP функцию которую хочу обработать, а как мне это на флекс сделать, потому что решение написания разных PHP меня не устраивает.

Спасибо

Кип
29.11.2009, 15:54
Точно так же:

private function sendSearchRequest():void
{
origams.url = "http://localhost/origami/www/index.php?param1="+param1+"&param2="+param2;
origams.sendRequest();
}

chata
29.11.2009, 23:04
Я не это имела в виду, но все равно спасибо. Сделала уже с различными php это и проще и наверное правильнее.