Вернуться   Дизайнерский форум » ДИЗАЙН И ГРАФИКА » Технологии Flash

MySQL и Flex

Обсуждение темы MySQL и Flex в разделе Технологии Flash, часть категории ДИЗАЙН И ГРАФИКА; В продолжение темы которой меня завел человек: Задача. Требуется создать простое приложение, которое осуществляет коннект с базами данный MySQL . Решение. Для коннекта ...


Закрытая тема
 
Опции темы
Старый 18.01.2008, 23:50   #1
В продолжение темы которой меня завел человек:

Задача.
Требуется создать простое приложение, которое осуществляет коннект с базами данный MySQL.

Решение.
Для коннекта с базой данных MySQL в виде серверного приложения, мы будем использовать PHP, которое будет соединяться с базой данных и выводить ответ в виде XML, который в свою очередь будет обрабатываться HTTPService и передавать данные в DataGrid.

Важно:
1000 записей в 36 колонках загружается довольно-таки быстро. Тесты проводились до 15000 записей, и в данном случае, загрузка данных требовала довольно много времени.

Как это сделать.
Пошаговая инструкция:
  1. Создайте базу данных MySQL. (Как? Знает и покажет Google!)
  2. Создайте PHP приложение, которое соединятся с базой (код приведен ниже) .
  3. После этого загрузите PHP файл на сервер и откройте его через браузер, для того что бы увидеть ответ в виде корректного XML.
  4. Создайте Flex приложение, которое соединятся с PHP и загружает данные в DataGrid черз HTTPService .
  5. Задайте имена колонкам так, что бы они соответствовали именам колонок XML.
  6. Ну и наконец, насладитесь результатом, запустив Flex приложение.


PHP код:
PHP код:
?php
 
//Соединяемся с базой данных
$connection = mysql_connect('localhost', 'mysql_user', 'mysql_password') or die ('cannot reach database');
$db = mysql_select_db("YourDatabaseName") or die ("this is not a valid database");
 
//Здесь вы можете указать любую таблицу, с записями. Учите, имена колонок в таблице будут соответствовать именам тегов XML
$result = mysql_query("SELECT * FROM yourTableName");
 
//Получаем количество колонок
$num_row = mysql_num_rows($result);
 
//Формируем XML
echo '<?xml version="1.0" encoding="iso-8859-1"?>';
echo "<data>";
echo '<num>' .$num_row. '</num>';
if (!$result) {
   die('Query failed: ' . mysql_error());
}   
 
        $i = 0;
        while ($i < mysql_num_fields($result)) {
              $meta = mysql_fetch_field($result, $i);
            $ColumnNames[] = $meta->name;
            $i++;
        }
$specialchar = array("&",">","<");//специальные символы
$specialcharReplace = array("&amp;","&gt;","&lt;"); //заменяем
 
$w = 0;
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
   echo "<row>";
    foreach ($line as $col_value){
        echo '<'.$ColumnNames[$w].'>';
        $col_value_strip = str_replace($specialchar, $specialcharReplace, $col_value);
        echo $col_value_strip;
        echo '</'.$ColumnNames[$w].'>';
        if($w == ($i - 1)) { $w = 0; }
        else { $w++; }
       }
    echo "</row>";
}
echo "</data>";
mysql_free_result($result);
?>




Flex код:

Код HTML:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
    initialize="doSend()"
    layout="absolute">
<mx:Script>
    <![CDATA[
        import mx.collections.ArrayCollection;
        import mx.rpc.events.ResultEvent; 
 
        [Bindable]
        private var datalist:ArrayCollection;
 
        private function resultHandler(event:ResultEvent):void{
                datalist = event.result.data.row;
        }
        public function doSend():void {
            xmlFromDatabase.url = "http://localhost/xml.php";
            xmlFromDatabase.send();
        }
    ]]>
</mx:Script>
<mx:HTTPService url="http://localhost/xml.php"
    id="xmlFromDatabase"
    showBusyCursor="true"
    result="resultHandler(event)"
    method="GET" />
    <mx:DataGrid x="10" y="10" dataProvider="{datalist}" id="dg">
        <mx:columns>
            <mx:DataGridColumn headerText="Col1" dataField="Column1Name"/>
        </mx:columns>
    </mx:DataGrid>
</mx:Application>
Как видите все просто. Удачного коннекта
 
Старый 18.01.2008, 23:50
Ссылки
Старый 19.01.2008, 01:11   #2
Я не знаю, зачем вы это здесь написали.

PHP-код, мягко говоря, странный. Зачем encoding="iso-8859-1"?

PHP код:
$specialchar = array("&",">","<");//специальные символы 
$specialcharReplace = array("&amp;","&gt;","&lt;"); //заменяем
...
$col_value_strip str_replace($specialchar$specialcharReplace$col_value); 
Этот бред можно заменить стандартной функцией.

И какой xml мы хотим получить в итоге?
 
Старый 19.01.2008, 19:53   #3
kost, зачем на ВЫ... блин даже не удобно.
Ошибки и кодировка кода не моя. Я просто привел пример с сайта adobe только на русском.

В итоге мы получаем отличную флеш картинку для вывода данных из БД через PHP во влеш в flex сайте.

Этот код пример второй версии flex 2.
А вот Flex 3 изначально направел на работу c ООП php и БД mysql, pgsql
 
Старый 20.01.2008, 16:35   #4
Ок, можно на ты.
 
Старый 20.01.2008, 16:35
Закрытая тема




Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PHP+MySQL BinGo Резюме 0 26.07.2011 17:45
Что есть Flex? Асмодиан Технологии Flash 10 17.05.2010 11:03
php и MySQL Rembrandt ASP, Perl, PHP и MySQL 5 14.07.2008 13:28
Mysql под win Lex ASP, Perl, PHP и MySQL 2 03.12.2004 17:27
MySQL seka HTML, CSS, JavaScript 4 26.08.2004 02:06


Текущее время: 06:37. Часовой пояс GMT +4.

Реклама на форуме Условия размещения рекламы
Биржа ссылок Заработай на сайте!
Дизайнерский форум