PDA

Просмотр полной версии : Гостевая на флэш + Sql


РтутныйСтолбик
19.06.2002, 08:06
Ребя, вопрос! Гостевая сделана на основе базы данных SQL - но проблема - кешируется текст, сразу же не обновляются данные во флэш. Как убить кеш? Памахите интеллектуалы!! :)

Geo
19.06.2002, 09:45
а каким образом у тебя данные приходят , что на сервере формирует ответ...

РтутныйСтолбик
19.06.2002, 09:55
Ну ваще-то - это не я штуку с SQL делал. Напарник мой и он ушел на денежную работу. Я просто попросил написать че-нить на кнопке и он сделал LoadVariables и отправил значения полям в таблице SQL - это первая часть гостевухи. Во второй в первом кадре снова LoadVariables с теми же названиями полей SQL, которые присвоены полям динамик-текста. Вот и все. Только не обновляется сразу же - грузит кеш.

Geo
19.06.2002, 10:00
я не понял, что непосредственно в базу данных? что стоит в аргументе
LoadVariables (*** )
______вот тут ^^^

lexass
19.06.2002, 11:10
2 Geo
что непосредственно в базу данных?
А куда же ЕЩЕ :D ;)

Но вот что стоит в "LoadVariables (*** )" я даже представить немогу, чтоб это, ну напрямую в базу :(

Stellerex
19.06.2002, 11:55
2lexass:
Зря смеешься, почитай лучше про Oracle WebDB, да и у микрософтового sqlserver'a 2000 запросы в базу можно слать непосредственно по http.

РтутныйСтолбик
19.06.2002, 11:58
Я пока не могу ответить - сервер на боку. Но по-моему, там обычная передача переменных, слепленная &

lexass
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
>Бредбери
Вах!! :)) Спасибки! Я конечно попробую :)

Geo
20.06.2002, 03:30
по поводу что непосредственно в базу данных? мое удивление сводится к тому ,что мне непонятно как решается вопрос с защитой базы данных, так как получается что база открыта в сеть напрямую....
поясните пожалуста...

РтутныйСтолбик
20.06.2002, 08:44
Ну ваще-то не совсем напрямую. Добавление происходит через *.asp-файл.

Aib
25.07.2002, 01:46
Что у Тебя кэшируется - запрос? Тогда шаблон сделай (как в ASP - не знаю, в JSP и Perl'e знак вопроса) - прокэширует один раз и заткнётся 8-).

Arkady
30.01.2003, 13:25
а попробуйте POST и играться с заголовками ответа HTTP (Expires)

Omega
01.02.2003, 19:21
Прошу прощения за глупый вопрос, к тому же немного не по теме ...
предистория почти таже ... гостевая на флеше ... данные в 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-скрипт был проверен сам по себе ... там всё работает ... отсюда вывод - скрипт просто не получает данные.
Подскажите в чём может быть проблема?

BAHUS
11.08.2003, 10:59
Рандомом может не сработать.
Есть вероятность повторов.

Попробуй TIME

lv=new loadVars();
d = new Date();
lv.load("....&time="+d.getTime());

etc
31.08.2003, 00:13
А 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-ами у народа (кодировка крива). Могу дать кому-нить исход. (спросите на хомяке)

etc
31.08.2003, 00:20
Кстати проблему с отправкой решать тоже пришлось. Опять же - скрипт не получает данные (народ.рю добавляет 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;
}


Многострочность сразу отпадает, то есть не работает (всё в одну строку). Зато работает, хоть и криво написано

Dr.OH
18.11.2003, 22:11
может я чего пропустил когда читал и теперь могу повториться, но все же...
запрос данных проводишь по
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();
}
}
}

etc
18.11.2003, 23:59
А какой Flash ты пользуешь? Или ты имеешь ввиду, что многострочные ноды он не понимает? Или у тебя теги <br>? Напиши код, выдаваемый PHP, пример

Dr.OH
19.11.2003, 10:35
я пользуюсь Flash MX. Эта версия (насколько я знаю, как и следующая) при разборе XML вместо пробелов лепят путые узлы, что сказывается на последующей работе с документм, поэтому их надо удалять, но не везде!

etc
19.11.2003, 16:33
Попробуй написать: data = new XML();
data.ignoreWhite = true;
data.load("script.php");
По идее, должно помочь... я избавлялся от такой хрени во Flash 5 только проверяя length у нода... Во Flash MX появилась ignoreWhite, что по идее, должно решить проблему...

Dr.OH
20.11.2003, 00:06
ignorWhite работает далеко не всегда.. и часто удаляет нужные пробельные символы. Например в тектсе.

etc
20.11.2003, 18:08
Хм... проблемно, а у тебя что-то типа <node>Текст</node>? Тогда пусть PHP тебе выдаёт всё в одну строку, и не используй тогда ignoreWhite, и, кстати, строку <?xml ... ?> понимает только Flash MX, но лучше её убрать, если она есть...

Dr.OH
11.12.2003, 01:02
блин.... какую фигню вы гоните... флэш прекрасно понимает и многострочные текст и заголовки... вообще все!

etc
12.12.2003, 14:13
Да я не об этом. И не про многострочность... если у тебя убирает пробелы, так выдавай XML целиком в одну строку, отключи ignoreWhite и всё будет работать.

Console
08.02.2004, 22:54
Сори что вклинился, но лично когда я делал свою Гостивушку, это было давно и я только начал работать с Серверными вещами типа РНР... и гостевуха работала таким образом
->
Небыло MySQL поскольку я его не переношу, был обычненький файлик ТХТ или еще какой-то формат, но факт не в том, факт в том что все сообщения хранились в нем, при всем этом в Типе HTML, загружая Перменку типа getVariables("guest.php","GET") получал просто HTML код который пихал DynamicText и все... включая Функцию HTML а Текстовом поле, крепил к нему Скролл, и все проблемсы, Код записи примерно в Файл Базы выглядел следующим образм
<b>From</b>:NickName <i>Date: ??:??:?? D,M,Y<i><br> и т.д.

etc
09.02.2004, 00:58
Console, попробуй через XML, так удобнее

Dr.OH
09.02.2004, 01:03
нет, я конечно понимаю, что и 3d графику можно писать при помощи ассемблера, но это извращение. Какой толк от хранения, скажем, 300 сообщений гостевой в одном txt файле? Специально для этого и существует MySQL-PHP-XML

etc
09.02.2004, 15:23
С тем же успехом можно знать PHP, не зная MySQL, или не имея желания им пользоваться... или же MySQL попросту отсутствует на сервере, такое тоже могет быть...

Console
09.02.2004, 19:32
Оригинал написал(а) 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);
}
?>

etc
09.02.2004, 22:03
Console, да можно же один файл использовать! Он же обрабатывается на сервере и никоим образом не грузится весь к тебе на комп. Ты можешь читать файл построчно, загоняя строки в массив. Одна строка - одно сообщение... лично я себе уже такую фишку написал и доволен до усрачки :). Ведь файл с сообщениями выдаётся не весь выдаётся, а только запрашиваемые сообщения. Что касается синтаксиса, то у меня намного проще сделано тоже самое... способ чтения fopen($file,"a+"); переставляет указатель в конец файла, т.е. его проще дописывать, чем определять, сколько в нём строк... причём я данные сохраняю целой строкой в виде XML-ного нода, со всеми аттрибутами. А если нужно что-то изменить - то обработав XML-нод через Flash, собираю его обратно и посылаю его такой строкой обратно на серв, где он просто по тупому замещает редактируемую строку полученной... PHP в обработке XML не участвует, хотя может... но зачем? :)

Console
10.02.2004, 12:06
Тоже вариант по использованию одного Файла для всей базы, а по поводу Дописи, я ж сказал, что непомню... но знаю что есть, протсо надо было бы открыть Хэлпу и покапаться, но как всегда Влома.. :):):):) А вот теперь скажи кому там нужен тот XML или SQL ? все намного делается Проще... ;)

etc
10.02.2004, 15:21
Во Flash очень удобно передавать данные в виде XML, чем в виде переменных. Причём поддержки самого XML со стороны серва не требуется...