Честно говоря, удивлён скоростью работы, спасибо!
Чудеса просто.
2-3 секунды на моей 200 000 базе.
Есть 2 пожелания, если сумеете реализовать (я тоже попробую, надеюсь, сумею сделать, не испортив скорости).
1. Список друзей человека это не только все frid одного myid, но и все myid одного frid. Это важно, например, чтобы друзей Дурова находить (а список его друзей закрыт, например, 888570->1 работает на «ура», а наоборот, 1->888570 вылетает с предупреждением о пустом результате (mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Z:\home\priem\www\graf3.0.php on line 83).
2. Надо уметь закрывать пути через определённых людей, запрещая их.
myid и frid повторяются, нельзя их делать ключевыми.
А насчёт name — это правильно, спасибо. Небольшой минус в том, что просто при просмотре страницы контакта проводится запись в базу, и на страницах размером в 500 контактов чувствуются ощутимые тормоза. При таком подходе они удвоятся.
А скриптик сейчас посмотрим, спасибо.
Определение браузера на серверной стороне используется реже определения клиентского.
А грамотное клиентское определение вообще не должно обращаться к UserAgent.
Все, наверное, видели старый бородатый способ либо сотни его вариаций (код на данный момент устарел, привёл просто в качестве примера):
isDOM=document.getElementById //DOM1 browser (MSIE 5+, Netscape 6, Opera 5+)
isOpera=isOpera5=window.opera && isDOM //Opera 5+
isOpera6=isOpera && window.print //Opera 6+
isOpera7=isOpera && document.readyState //Opera 7+
isMSIE=document.all && document.all.item && !isOpera //Microsoft Internet Explorer 4+
isMSIE5=isDOM && isMSIE //MSIE 5+
isNetscape4=document.layers //Netscape 4.*
isMozilla=isDOM && navigator.appName=="Netscape" //Mozilla или Netscape 6.*
Вообще, определение сводится к ключевым проверкам:
1. Определение Оперы. Если существует window.opera, значит Opera
2. Определение Chrome (ненадёжно)document.all есть в FF, IE и Opera, т.е почти везде. Но попробуте в Chrome ввести в адресной строке javascript: alert(document.all).
3. Для IE есть решение «напролом»:
<![if IE 7]>
<script>
var IsIE=1
</script>
<![endif]>
4. Определение IE6. XMLHttpRequest работает в Opera, FF, IE7, Chrome. Но в IE6 его нет. (проверьте: javascript: alert(typeof XMLHttpRequest))
5. FF определяется чаще всего так: isMozilla=! isMSIE &&! isOpera. Решение «в лоб», ужасное, некрасивое, но для тех, кто верстает только под 3 браузера (часто этого хватает), сойдёт.
5.1 Определение FF возможно внутри кода обработки события: if (typeof e.offsetX == 'undefined') { isFF=1}
Наверное, можно.
Трудность его в том, что к скрипту прилагается серверная часть, а это значит, что желающим его установить также понадобится денвер и минимальные знания MySQL по настройке этого скрипта.
Чудеса просто.
2-3 секунды на моей 200 000 базе.
Есть 2 пожелания, если сумеете реализовать (я тоже попробую, надеюсь, сумею сделать, не испортив скорости).
1. Список друзей человека это не только все frid одного myid, но и все myid одного frid. Это важно, например, чтобы друзей Дурова находить (а список его друзей закрыт, например, 888570->1 работает на «ура», а наоборот, 1->888570 вылетает с предупреждением о пустом результате (mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Z:\home\priem\www\graf3.0.php on line 83).
2. Надо уметь закрывать пути через определённых людей, запрещая их.
А насчёт name — это правильно, спасибо. Небольшой минус в том, что просто при просмотре страницы контакта проводится запись в базу, и на страницах размером в 500 контактов чувствуются ощутимые тормоза. При таком подходе они удвоятся.
А скриптик сейчас посмотрим, спасибо.
(но определение Chrome!===Определение Safari)
А грамотное клиентское определение вообще не должно обращаться к UserAgent.
Все, наверное, видели старый бородатый способ либо сотни его вариаций (код на данный момент устарел, привёл просто в качестве примера):
isDOM=document.getElementById //DOM1 browser (MSIE 5+, Netscape 6, Opera 5+) isOpera=isOpera5=window.opera && isDOM //Opera 5+ isOpera6=isOpera && window.print //Opera 6+ isOpera7=isOpera && document.readyState //Opera 7+ isMSIE=document.all && document.all.item && !isOpera //Microsoft Internet Explorer 4+ isMSIE5=isDOM && isMSIE //MSIE 5+ isNetscape4=document.layers //Netscape 4.* isMozilla=isDOM && navigator.appName=="Netscape" //Mozilla или Netscape 6.*
Вообще, определение сводится к ключевым проверкам:
1. Определение Оперы. Если существует window.opera, значит Opera
2. Определение Chrome (ненадёжно)document.all есть в FF, IE и Opera, т.е почти везде. Но попробуте в Chrome ввести в адресной строке javascript: alert(document.all).
3. Для IE есть решение «напролом»:
<![if IE 7]> <script> var IsIE=1 </script> <![endif]>
4. Определение IE6. XMLHttpRequest работает в Opera, FF, IE7, Chrome. Но в IE6 его нет. (проверьте: javascript: alert(typeof XMLHttpRequest))
5. FF определяется чаще всего так: isMozilla=! isMSIE &&! isOpera. Решение «в лоб», ужасное, некрасивое, но для тех, кто верстает только под 3 браузера (часто этого хватает), сойдёт.
5.1 Определение FF возможно внутри кода обработки события: if (typeof e.offsetX == 'undefined') { isFF=1}
Трудность его в том, что к скрипту прилагается серверная часть, а это значит, что желающим его установить также понадобится денвер и минимальные знания MySQL по настройке этого скрипта.
Он действительно хороший человек! Честно!
Он действительно хороший человек! Честно!
+5
Цель:…
ээээммм.э
ээээ…
Праздник, короче!
Я люблю веб-проекты!
Я всех люблю!
А ну каааак запуляю!
Стоит-не падает сайт.