Просмотр полной версии : Гостевая на флэш + Sql
РтутныйСтолбик
19.06.2002, 08:06
Ребя, вопрос! Гостевая сделана на основе базы данных SQL - но проблема - кешируется текст, сразу же не обновляются данные во флэш. Как убить кеш? Памахите интеллектуалы!! :)
а каким образом у тебя данные приходят , что на сервере формирует ответ...
РтутныйСтолбик
19.06.2002, 09:55
Ну ваще-то - это не я штуку с SQL делал. Напарник мой и он ушел на денежную работу. Я просто попросил написать че-нить на кнопке и он сделал LoadVariables и отправил значения полям в таблице SQL - это первая часть гостевухи. Во второй в первом кадре снова LoadVariables с теми же названиями полей SQL, которые присвоены полям динамик-текста. Вот и все. Только не обновляется сразу же - грузит кеш.
я не понял, что непосредственно в базу данных? что стоит в аргументе
LoadVariables (*** )
______вот тут ^^^
2 Geo
что непосредственно в базу данных?
А куда же ЕЩЕ :D ;)
Но вот что стоит в "LoadVariables (*** )" я даже представить немогу, чтоб это, ну напрямую в базу :(
Stellerex
19.06.2002, 11:55
2lexass:
Зря смеешься, почитай лучше про Oracle WebDB, да и у микрософтового sqlserver'a 2000 запросы в базу можно слать непосредственно по http.
РтутныйСтолбик
19.06.2002, 11:58
Я пока не могу ответить - сервер на боку. Но по-моему, там обычная передача переменных, слепленная &
:( :mad: - незнал :( :rolleyes:
РтутныйСтолбик
19.06.2002, 12:01
Да- с SQl все просто работает - но только одна проблема - кеширование
УильямБрэдберри
19.06.2002, 12:01
Оригинал написал(а) РтутныйСтолбик
он сделал LoadVariables и отправил значения полям в таблице SQL Вот и все. Только не обновляется сразу же - грузит кеш.
значит гетом передаешь...
сделай так:
loadVariables("myScript.sql?rnd="+random(9999))
добавь рандом...
РтутныйСтолбик
19.06.2002, 12:10
>Бредбери
Вах!! :)) Спасибки! Я конечно попробую :)
по поводу что непосредственно в базу данных? мое удивление сводится к тому ,что мне непонятно как решается вопрос с защитой базы данных, так как получается что база открыта в сеть напрямую....
поясните пожалуста...
РтутныйСтолбик
20.06.2002, 08:44
Ну ваще-то не совсем напрямую. Добавление происходит через *.asp-файл.
Что у Тебя кэшируется - запрос? Тогда шаблон сделай (как в ASP - не знаю, в JSP и Perl'e знак вопроса) - прокэширует один раз и заткнётся 8-).
а попробуйте POST и играться с заголовками ответа HTTP (Expires)
Прошу прощения за глупый вопрос, к тому же немного не по теме ...
предистория почти таже ... гостевая на флеше ... данные в mysql ... взаиможействие посредством PHP ... не могу отправить данные скрипту ... делаю так:
на кнопку отправить вешается скрипт
on (release){
userData = new LoadVars();
userData.contentType = "application/x-www-urlform-encoded";
userData.from = _root.from.text;
...
userData.send("http://myhost.ua/post.php");
}
PHP-скрипт был проверен сам по себе ... там всё работает ... отсюда вывод - скрипт просто не получает данные.
Подскажите в чём может быть проблема?
Рандомом может не сработать.
Есть вероятность повторов.
Попробуй TIME
lv=new loadVars();
d = new Date();
lv.load("....&time="+d.getTime());
А xml? Пробуем что-нибудь типа
<messages>
<message number="01" authorname="somebody" email="..." date="..." url="....">[message text]</message>
<message number="02" authorname="somebody" email="..." date="..." url="....">[message text]</message>
<message number="03" authorname="somebody" email="..." date="..." url="....">[message text]</message>
...
</messages>
Идею подкинул.
Затем всё прогоняем через цикл присваивая переменным xml.attributes.number... ну и текст мессаджа xml.firstChild
З.Ы. Flash MX не понимает по-русски :( Flash 5 понимает зато, но парсер XML - кривоват в отношении многострочности, финт с ignoreWhite не пройдёт...
З.Ы.Ы. Сделал флеш-гест на народовском (кровь из носу, CGI - не ко мне) движке, правда мессаджы однострочные. Работает через XML (http://etc2002.narod.ru/ibook/). Есть траблы с кривыми Wind-ами у народа (кодировка крива). Могу дать кому-нить исход. (спросите на хомяке)
Кстати проблему с отправкой решать тоже пришлось. Опять же - скрипт не получает данные (народ.рю добавляет owner=<owner_id>;<random number>, считывать тоже приходится). Решил посредсвом отправки браузера JavaScript-а (в странице есть скрытая форма с полями):
on (release) {
owner = _parent.owner;
n = your_name;
if (your_icq.length>1&&!isNaN(your_icq)) {
n+='±'+your_icq;
}
e = your_email;
u = your_url;
m = your_message;
m = _level0.$version+'[]'+m;
s = [];
s[0] = 'document.f.your_name.value=\"'+r(n)+'\"';
s[1] = 'document.f.your_email.value=\"'+r(e)+'\"';
s[2] = 'document.f.your_url.value=\"'+r(u)+'\"';
s[3] = "ag=navigator.userAgent.toLowerCase()";
s[4] = 'if(ag.indexOf(\"opera\")!=-1){document.f.your_message.innerText=\"'+r(m)+'\"';
s[5] = '}else{document.f.your_message.value=\"'+r(m)+'\"';
s[6] = '};document.f.owner.value="'+owner+'";document.f.submit()';
u = s.join(';');
getURL ('javascript:'+u);
_parent.mySound(3);
_visible = 0;
}
on (rollOver, dragOver) {
_parent.mySound(1);
}
Функция r() (чтобы знак " заменялся на \"):
function r (t) {
if (t.indexOf('"')!=-1) {
t = t.split('"');
t = t.join('\\'+'"');
}
return t;
}
Многострочность сразу отпадает, то есть не работает (всё в одну строку). Зато работает, хоть и криво написано
может я чего пропустил когда читал и теперь могу повториться, но все же...
запрос данных проводишь по
data = new XML();
data.load("script.php"); все, данные получены...
если многострочный текст, то нужна функция удаления пустых узлов типа:
data.cleanse = function() {
if (this.nodeType==3) {
for (var i=0; i<this.nodeValue.length; i++)
if (this.nodeValue.charCodeAt(i)>32) return;
this.removeNode();
} else {
for (var i=this.childNodes.length; i>=0; i--) {
this.childNodes[i].cleanse = this.cleanse;
this.childNodes[i].cleanse();
}
}
}
А какой Flash ты пользуешь? Или ты имеешь ввиду, что многострочные ноды он не понимает? Или у тебя теги <br>? Напиши код, выдаваемый PHP, пример
я пользуюсь Flash MX. Эта версия (насколько я знаю, как и следующая) при разборе XML вместо пробелов лепят путые узлы, что сказывается на последующей работе с документм, поэтому их надо удалять, но не везде!
Попробуй написать: data = new XML();
data.ignoreWhite = true;
data.load("script.php");
По идее, должно помочь... я избавлялся от такой хрени во Flash 5 только проверяя length у нода... Во Flash MX появилась ignoreWhite, что по идее, должно решить проблему...
ignorWhite работает далеко не всегда.. и часто удаляет нужные пробельные символы. Например в тектсе.
Хм... проблемно, а у тебя что-то типа <node>Текст</node>? Тогда пусть PHP тебе выдаёт всё в одну строку, и не используй тогда ignoreWhite, и, кстати, строку <?xml ... ?> понимает только Flash MX, но лучше её убрать, если она есть...
блин.... какую фигню вы гоните... флэш прекрасно понимает и многострочные текст и заголовки... вообще все!
Да я не об этом. И не про многострочность... если у тебя убирает пробелы, так выдавай XML целиком в одну строку, отключи ignoreWhite и всё будет работать.
Сори что вклинился, но лично когда я делал свою Гостивушку, это было давно и я только начал работать с Серверными вещами типа РНР... и гостевуха работала таким образом
->
Небыло MySQL поскольку я его не переношу, был обычненький файлик ТХТ или еще какой-то формат, но факт не в том, факт в том что все сообщения хранились в нем, при всем этом в Типе HTML, загружая Перменку типа getVariables("guest.php","GET") получал просто HTML код который пихал DynamicText и все... включая Функцию HTML а Текстовом поле, крепил к нему Скролл, и все проблемсы, Код записи примерно в Файл Базы выглядел следующим образм
<b>From</b>:NickName <i>Date: ??:??:?? D,M,Y<i><br> и т.д.
Console, попробуй через XML, так удобнее
нет, я конечно понимаю, что и 3d графику можно писать при помощи ассемблера, но это извращение. Какой толк от хранения, скажем, 300 сообщений гостевой в одном txt файле? Специально для этого и существует MySQL-PHP-XML
С тем же успехом можно знать PHP, не зная MySQL, или не имея желания им пользоваться... или же MySQL попросту отсутствует на сервере, такое тоже могет быть...
Оригинал написал(а) ETC
Console, попробуй через XML, так удобнее
Какая разница?! всеравно ты загружаешь весь XML и потом еще начинаешь его ковырять!!!
А по поводу того что хронить допустим 300 месаг в обном файлике... всеравно все гостевухи сделаны таким оьразом, что заходя на нее тебе все сразу загружается.... так что в крайнем случае можно сделать ограничение... допустим по 50 месаг на каждую строничку... Тоесть каждая строничка будет соответствовать каждому файлику... тоесть на 300 месаг будет 6 файликов.... вот и весь выход из положения....
Уточнее... первая строчка в Файлике будет хронить количество сообщений в Файле... допустим.... код и РНР, за синтаксис не материть, давно уже не сидел...
Добавление в базу...
<?
$base = file($file_base_name_number);
$max_mess = 50;
if(substr($base[0],0,strlen($base[0])-1)<$max_mess){
//Точно непомню как именно добавить строчку в открытый файл, так что сделаю так....
$f_write = $max_mess."\n";
for($i=1;$i<count($base);$i++){
$f_write .= substr($base[i],0,strlen($base[i])-1);
}
$f_write .= $new_message;
$file = fopen($old_mes_name_file,"w+");
fwrite($file,$f_write);
} else {
$file = fopen($new_mes_name_file,"w+");
fwrite($file,"1\n".$new_message);
fclose($file);
}
?>
Console, да можно же один файл использовать! Он же обрабатывается на сервере и никоим образом не грузится весь к тебе на комп. Ты можешь читать файл построчно, загоняя строки в массив. Одна строка - одно сообщение... лично я себе уже такую фишку написал и доволен до усрачки :). Ведь файл с сообщениями выдаётся не весь выдаётся, а только запрашиваемые сообщения. Что касается синтаксиса, то у меня намного проще сделано тоже самое... способ чтения fopen($file,"a+"); переставляет указатель в конец файла, т.е. его проще дописывать, чем определять, сколько в нём строк... причём я данные сохраняю целой строкой в виде XML-ного нода, со всеми аттрибутами. А если нужно что-то изменить - то обработав XML-нод через Flash, собираю его обратно и посылаю его такой строкой обратно на серв, где он просто по тупому замещает редактируемую строку полученной... PHP в обработке XML не участвует, хотя может... но зачем? :)
Тоже вариант по использованию одного Файла для всей базы, а по поводу Дописи, я ж сказал, что непомню... но знаю что есть, протсо надо было бы открыть Хэлпу и покапаться, но как всегда Влома.. :):):):) А вот теперь скажи кому там нужен тот XML или SQL ? все намного делается Проще... ;)
Во Flash очень удобно передавать данные в виде XML, чем в виде переменных. Причём поддержки самого XML со стороны серва не требуется...
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.