Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Flash-кнопка и PHP-меню. Как соединить? (http://www.flasher.ru/forum/showthread.php?t=88667)

KrisSys 28.11.2006 13:21

Flash-кнопка и PHP-меню. Как соединить?
 
*******Ситуация такая: Будущий владелец сайта в своем админ-разделе сочинит нужные ему пункты меню и укажет нужные ему URL-ы, установит галочки, чтобы выбрать какие пункты меню активировать сразу, а какие пока оставить скрытыми. Все это ляжет в таблицу SQL (в поля id, section, link, visible).
****Меню на странице сайта формируется вот таким PHP кодом.

Код:

<?php
$sql="SELECT id, visible, section, link FROM menu ORDER by id";
$result=mysql_query($sql);
        while($row=mysql_fetch_array($result))
                if($row["visible"]=="yes") //если пункт не заблокирован и его надо включить в меню, то показываем
                {
                echo("<a href='".$domain.$row["link"]."'>".$row["section"]."</a>");
        }
?>

Очень хочется сделать на каждый пункт меню кнопку Flash, чтобы надписи на кнопках и URL вставлялись из DB.
Подскажите как соединить этот код php и AS?
Если можно поподробнее, в какой кадр кнопки, что и как правильно надо вписать?
Как надо изменить этот код, чтобы линки cделать Flash-кнопками.
PS - пункты меню НЕ НА РУССКОМ!
Помогите пожалуйста!

msdn 28.11.2006 17:29

очень просто.
надо передать массив твоих линков во флеш.
тут 2 способа
1)флеш из файла принимает в формате a=value&a1=value1...
принимать так : loadvariable("index.php",_root);
в результате получишт во флеше _root.a,_root.a1 и т.д.
2) прямо в код где объявлена флешка,
например

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="500" height="470" id="flash1" align="center">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="flash1.swf?id=2821635&rnd=9777 />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<embed src="flash1.swf?id=2821635&rnd=9777" quality="high" bgcolor="#ffffff" width="500" height="470" name="flash1" align="center" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>

переменные попадают в _root

KrisSys 28.11.2006 20:09

2msdn
Т.е. я получу a=.., a1=.. ... - это URL линков? А надписи на кнопке? Я не понимаю. Не забивай тапками... плиззз, разъясни. Пожалуйста, можно все же пункт 1) поподробнее.
Цитата:

Подскажите как соединить этот код php и AS?
Если можно поподробнее, в какой кадр кнопки, что и как правильно надо вписать?

msdn 28.11.2006 20:39

т.е. ты мог бы получить _root.a1,_root.a2.
лучше попробуй передать сразу массив, передать можно так:
<?php
$sql="SELECT id, visible, section, link FROM menu ORDER by id";
$result=mysql_query($sql);
$i = 0;
while($row=mysql_fetch_array($result))
if($row["visible"]=="yes") //если пункт не заблокирован и его надо включить в меню, то показываем
{
echo "url[".$i."]=".$domain.$row["link"]."&";
$i++;

}
?>

а принять так:
loadvariable("index.php",_root);
1)понятно что пхп код лежит в файлике index.php, или назови его как тебе удобно.
2)в результате у тебя будет массив _root.url со ссылками, все что нужно кроме ссылок можеть передать так же.
3)что бы увидеть появится ли текст во флеше, поставь текстовое поле, и в свойствах поставь ему в поле varible, _root.url[0], должно показать первый эл-нт массива.

KrisSys 29.11.2006 09:52

Угу... пока еще реально не вижу, но ход мысли ясен. Биг сенькс за науку. Пойду грызть :umnik2:

KrisSys 01.12.2006 16:22

Вооот... получилось вот что: это в index.php
Код:

<?php
$sql="SELECT section, link FROM menu ORDER by id";
$result=mysql_query($sql);
$i = 0; $k = 0;
while($row=mysql_fetch_array($result))
{
echo "url[".$i."]=".$row["link"]."&";
echo "txt[".$k."]=".$row["section"]."&";
$i++; $k++;
}
?>

— Во Flash AS вписана строка loadVariables("index.php",_root);
(Кстати «loadVariable» с «S» на конце :mad: ... - убил 2 часа пока обнаружил... ладно, проехали...)

— текстовое поле (это, конечно не кнопка, о которой я спрашиваю, ну да ладно - не до жиру...) показывает мне первые элементы массива.
Вроде Ура!! да не тут то было.

— ВОПРОС остался не решен! Как же теперь показать следующую флэш-кнопку (или текст.поле), чтобы в нем был второй (третий и т.д.) эл-т полученного массива?

Т.е. вопросы остались те же, только поменялись местами:
— Как надо изменить этот код, чтобы линки cделать Flash-кнопками и чтобы надписи и линки были взяты из DB.
— В какой кадр кнопки, что и как правильно надо вписать?
И появился новый вопрос:
— А что делать, если текст в DB в два слова, т.е. с пробелом? Надписи в два слова не работают (их не видно). Я так понимаю возникает проблема с URL-кодировкой в которой я получаю массив из переменных для _root

ПОМОГИТЕ! Пожалуйста!

msdn 01.12.2006 17:34

дорогой товарищ, по поводу притензий по ошибкам в моем коде могу сказать следующее, я не пытаюсь сделать все за вас, а просто даю направлени движения, в том то все и дело, что сделать это вточь с вашими требованиями стоит времени, а значит денег. баксов за 100 я бы сделал это в течении 1-2 часов, но так как это делаеете вы и зарабатывете на этом+учитесь, то уж потрудитесь разбираться что к чему, а не лепить тот код что вам дают, понятно что я писал его прямо на форуме и не тестировал.
по поводу вопросов:
1)текстовое поле нужно сделать частью кнопки, разместить его на ней.
если вы не знаете как, то это уже другой вопрос.
2)в вашем случае следует создать 1 кнопку с текстовым полем на ней, а потом её размножить, в соответствии с кол-вом эл-тов массива, накладывая на неё соответствующие надписи, кнопку размножать можно методом duplicateMovieClip().
3)с пробелом поступить так:
закодировать в пхп все надписи на кнопках функцией htmlspecialchars, во флеше использовать текстовое поле с хтмл форматированием. пробелы перекодируются в &nbsp; и все будет ок, как при передаче так и при отображении.

KrisSys 01.12.2006 20:24

Спасибо.

KrisSys 02.12.2006 02:35

Цитата:

пробелы перекодируются в &nbsp; и все будет ок
Не-а, не выходит ОК-ея! Еще пол-дня убито, а в результате узнаю -
Цитата:

Пары имен/значений должны разделяться амперсандами (&), а вместо пробелов знак (+)
Ну и на кой ляд мне нужно было кодировать в php пробелы в ( &nbsp; ) при помощи htmlspecialchars?! :mad:

Уважаемый msdn если Вы заметили, я задаю конкретные вопросы касательно конкретной ситуации. Я не прошу указать «направление движения». Мое незнание AS не дает Вам право гонять меня по ЛОЖНЫМ направлениям дабы поучить уму-разуму! Не можете/не хотите оказать ПОМОЩЬ, не оказывайте «медвежью услугу» - все равно что человеку, который тонет бросать вместо спасательного круга учебник по плаванию...

Уважаемые посетители форума, кто знает, помогите пожалуйста решить задачу!
С благодарностью приму пошаговый план действий, который приведет к реальному воплощению задуманного, если сиё возможно.

PS - если это важно, я НЕ зарабатываю изготовлением сайтов.

Chas 07.12.2006 01:48

гы.
вообще выбраный способ автору топика не очень подходит.
я так понимаю, что количество кнопок будет _динамическое_.
т.е. неудобно в одной флешке делать дубликаты кноп, потому что, размеры флешки константны. ну... я надеюсь, я понятно выразил свою мысль.
второй метод будет намного комфортнее.
тогда каждая кнопа выводится отдельным элементом.
все что нужно для реализации в этом топике уже указано.
для полного счастья откройте поиск и поисчите FlashVars(не обязательна форума флешера), можно поискать в самом хелпе флеша, гугл тоже не обанкротился еще ;-)

воопсче, аффтору советую поумерить пыл.
кинул бы сюда код свой, что использовал, да использовал только один раз, и там много лишнего =/


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

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