есть объект (новость, пользователь, продукт), с которым, с помощью стандартного выпадающего меню (<SELECT>), необходимо совершать произвольные действия.
максимально оптимальное решение:
<SELECT onChange="eval(this.options[this.selecte dIndex].value); this.selectedIndex = 0; return false;">
<OPTION VALUE="">действие</OPTION>
<OPTION VALUE="location.href = 'edituser.php?ids[]=<?=htmlspecialchars(s tripslashes($user["id"]))?>';">редактиро вать</OPTION>
<OPTION VALUE="if (confirm('Удалить пользователя?')) location.href = 'engine.php?mode=deleteusers&ids[]=<?=htmlspecialchars(stripslashes($u ser["id"]))?>';">удалить</OPTION>
</SELECT>
как видно, в атрибут VALUE тега OPTION можно вставлять совершенно любой JS-код (при необходимости - смешанный с PHP-кодом) - очень удобно
SELECT не назван специально (так данный control можно размещать внутри любой формы другого назначения - никакого влияния на данные родительской формы не будет); по умолчанию активен первый OPTION и на нем onChange никогда не происходит - благодаря "this.selectedIndex = 0;"
максимально оптимальное решение:
<SELECT onChange="eval(this.options[this.selecte
<OPTION VALUE="">действие</OPTION>
<OPTION VALUE="location.href = 'edituser.php?ids[]=<?=htmlspecialchars(s
<OPTION VALUE="if (confirm('Удалить пользователя?')) location.href = 'engine.php?mode=deleteusers&ids[]=<?=htmlspecialchars(stripslashes($u
</SELECT>
как видно, в атрибут VALUE тега OPTION можно вставлять совершенно любой JS-код (при необходимости - смешанный с PHP-кодом) - очень удобно
SELECT не назван специально (так данный control можно размещать внутри любой формы другого назначения - никакого влияния на данные родительской формы не будет); по умолчанию активен первый OPTION и на нем onChange никогда не происходит - благодаря "this.selectedIndex = 0;"
(точнее даже - веб-платформа для любых соцсетей и клубов)

если кто-нибудь хочет присоединиться к закрытому фэн-клубу dM - пишите
- Location:moscow/polyanka
- Mood:creative
почему ++i почти в любых языках лучше чем i++?
я наблюдаю это уже на многих поколениях процессоров. простой тест (php):
<?
$time = time();
for ($i = 0; $i < 1000; ++$i)
for ($j = 0; $j < 10000; ++$j)
++$k;
echo (time() - $time) . "<BR>";
$time = time();
for ($i = 0; $i < 1000; $i++)
for ($j = 0; $j < 10000; $j++)
$k++;
echo (time() - $time) . "<BR>";
?>
выдаёт (в секундах времени исполнения):
1
2
причём, значения переменных внутри каждого цикла - идентичны
из-за уже многолетних особенностях в аппаратной реализации ассемблерных команд на i386, префиксные операции работают быстрее чем постфиксные. в два раза минимум
на Java и C - то же самое. посмотрите, please, как себя ведут Ruby, C# и Python
я наблюдаю это уже на многих поколениях процессоров. простой тест (php):
<?
$time = time();
for ($i = 0; $i < 1000; ++$i)
for ($j = 0; $j < 10000; ++$j)
++$k;
echo (time() - $time) . "<BR>";
$time = time();
for ($i = 0; $i < 1000; $i++)
for ($j = 0; $j < 10000; $j++)
$k++;
echo (time() - $time) . "<BR>";
?>
выдаёт (в секундах времени исполнения):
1
2
причём, значения переменных внутри каждого цикла - идентичны
из-за уже многолетних особенностях в аппаратной реализации ассемблерных команд на i386, префиксные операции работают быстрее чем постфиксные. в два раза минимум
на Java и C - то же самое. посмотрите, please, как себя ведут Ruby, C# и Python
Хранение конфигурации системы в заведомо некорректных данных
задача: периодическая рассылка писем по подписавшимся пользователям сайта
( Read more... )
задача: периодическая рассылка писем по подписавшимся пользователям сайта
( Read more... )
sorry, что снова "для тех, кто в теме" - грядут, таки, отчёты об амстере и кубе (дел много, отдыхом занят, etc.) :)
"Формально, все х86-процессоры являлись CISC-процессорами, однако новые процессоры, начиная с Intel486DX, являются CISC-процессорами с RISC-ядром. Они непосредственно перед исполнением преобразуют CISC-инструкции процессоров x86 в более простой набор внутренних инструкций RISC."
http://ru.wikipedia.org/wiki/RISC
"Формально, все х86-процессоры являлись CISC-процессорами, однако новые процессоры, начиная с Intel486DX, являются CISC-процессорами с RISC-ядром. Они непосредственно перед исполнением преобразуют CISC-инструкции процессоров x86 в более простой набор внутренних инструкций RISC."
http://ru.wikipedia.org/wiki/RISC
за что люблю и никак не могу бросить программирование - часто попадаются сложные и интересные задачи, которым приходится искать неординарные решения
небольшой пример: есть сообщество www.mirsvoih.ru и на страничке необходимо показать связи произвольной длины между двумя пользователями
( Read more... )
небольшой пример: есть сообщество www.mirsvoih.ru и на страничке необходимо показать связи произвольной длины между двумя пользователями
( Read more... )
многие не подозревают, но, при программировании на чём угодно, всегда лучше использовать ++i, чем i++ - исполняется явно быстрее
и в C, и в PHP, и в других языках - видимо, особенности архитектуры i386
простой опыт: подсчёт до десяти миллионов
<?
$time = time();
for ($i = 0; $i < 10000000; ++$i);
echo time() - $time;
?>
исполняется за 2 секунды,
а почти тождественное
<?
$time = time();
for ($i = 0; $i < 10000000; $i++);
echo time() - $time;
?>
- уже за целых 5 секунд!
и в C, и в PHP, и в других языках - видимо, особенности архитектуры i386
простой опыт: подсчёт до десяти миллионов
<?
$time = time();
for ($i = 0; $i < 10000000; ++$i);
echo time() - $time;
?>
исполняется за 2 секунды,
а почти тождественное
<?
$time = time();
for ($i = 0; $i < 10000000; $i++);
echo time() - $time;
?>
- уже за целых 5 секунд!
