PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (31): В начало « ... 23 24 25 26 27 28 29 30 [31]

> Найдено сообщений: 464
Самогонщик Отправлено: 29 Октября, 2011 - 12:43:55 • Тема: C# и динамические объекты. • Форум: Вопросы по Perl/Python/.NET

Ответов: 18
Просмотров: 12877
sweb пишет:
Вот код:

for(i=0...
//button
add_database[i] = new Button();
add_database[i].Text = "add";
add_database[i].Name = "add_" + i;
add_database[i].Click += new EventHandler(add_database);
list[i].Controls.Add(add_database[i]);
//textbox
textbox[i] = new TextBox();
textbox[i].Location = new Point(90, 14);
textbox[i].Name = "file_name_" + i;
list[i].Controls.Add(textbox[i]);

Надо как то поймать этот textbox[i] в add_database(object sender, EventArgs e)


Если решать в лоб, то нужно как сделать так чтобы можно было получить номер кнопки. Сама кнопка передаётся в объекте sender и у нее есть замечательное поле Tag, туда можно положить i, а потом достать.
З.Ы. Тут есть тег для кода, будет лучше смотреться.
Самогонщик Отправлено: 29 Октября, 2011 - 12:21:04 • Тема: C# и динамические объекты. • Форум: Вопросы по Perl/Python/.NET

Ответов: 18
Просмотров: 12877
sweb пишет:
Всем привет!
Вообщем проблема такого рода:
Динамически создается TextBox и Button, как при событии Button.Click получить значение TextBox.Text?

Делаю смелое предположение что речь идёт о WinForm, и предлагаю просто сохранять где-нибудь указатель на TextBox и в обработчике получать введённый текст. Вообще бы надо код посмотреть.

З.Ы. А знаете ли вы, что подписываясь на событие динамически созданной кнопки, вы неявно храните ссылку на эту самую кнопку. Т.е. после того как кнопка становится ненужна, её недостаточно удалить с формы, нужно ещё её отписать, иначе она так и останется висеть в памяти. Такая вот утечка памяти.
Самогонщик Отправлено: 22 Октября, 2011 - 15:04:49 • Тема: Текст из php • Форум: Вопросы новичков

Ответов: 14
Просмотров: 572
snikers987 пишет:
mod_rewrite ?

RewriteEngine On‬
RewriteRule ^index.html$ index.php

или изменить MIME типы в конфиге сервера

Ага, это первый вариант, который мне виделся.

JaST пишет:
как-то,видел где-то что можно подгружать переменную из php через javascript в html
Мне кажется, что автор не совсем понимает взаимодействие клиента и сервера. По данному случаю могу сказать, что яваскрипту абсолютно всё равно как генерируются данные, которые он хочет загрузить в тело страницы, статика это или пхп-скрипт. С точки зрения яваскрипт происходит простой запрос на сервер за данными, сервер что-то возвращает, яваскрипт обрабатывает ответ и мб встраивает в тело страницы. Обычно это называют AJAX.
Самогонщик Отправлено: 21 Октября, 2011 - 22:22:32 • Тема: Текст из php • Форум: Вопросы новичков

Ответов: 14
Просмотров: 572
Данил_123 пишет:
CODE (html):
скопировать код в буфер обмена
  1. <html>
  2. <title>Вывод из php</title>
  3. <?php
  4. echo "Hello World";
  5. ?>
  6. </html>


Как-то так

Не сработает, если данное содержимое находится с файле page2.html как того желает JaST, то сервер его просто выплюнет без обработки как статику, при стандартных настройках естественно.
Самогонщик Отправлено: 21 Октября, 2011 - 22:03:06 • Тема: Подключение к бд • Форум: Вопросы новичков

Ответов: 3
Просмотров: 213
Sveta пишет:
Я хотела строки подключения к бд вынести в отдельный файл и обращаться к нему из других файлов, но файл не читается и соответственно ничего не работает. Подскажите как сделать правильно?

Вот кусок из dle_engene
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?PHP
  2. define ("DBHOST", "localhost");
  3. define ("DBNAME", "ololo_site");
  4. define ("DBUSER", "ololo_user");
  5. ?>

Но вариант через чур брутальный.

Вот так хранятся настройки
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?PHP
  2. $config = array (
  3. 'home_title' => "бла бла бла.",
  4. 'http_home_url' => "http://site.ru/" )
  5. ?>
  6.  

Такой вариант мне больше нравится.

Можно сделать так, чтобы создавался некий объект инкапсулирующий строки подключения.

Общее для таких файлов то, что их можно подключить через обычный инклуд и пользоваться, не заморачиваясь на парсинг данных.

P.S. правильно не существует.
Самогонщик Отправлено: 21 Октября, 2011 - 21:53:31 • Тема: Текст из php • Форум: Вопросы новичков

Ответов: 14
Просмотров: 572
Мне видится два варианта:
1. Настроить сервер так, чтобы он интерпретировал файлы с расширением .html как файлы с php скриптами, и тогда просто инклуд и не паримся.
2. Добавить page2.html айфрейм на index.php.

Но это зависит от того, чего конкретно тебе подойдёт.
Самогонщик Отправлено: 21 Октября, 2011 - 21:49:28 • Тема: Увеличение даты на определенный промежуток времени. • Форум: SQL и Архитектура БД

Ответов: 4
Просмотров: 48
Plut.Dem пишет:
Здравствуйте, можно ли с помощью SQL, при обновлении записи увеличить дату, скажем, на один год? Или же придется её сначала вытаскивать, изменять в PHP, а потом обратно вставлять?

Конечно можно, но зависит от конкретной субд.
Поверхностное гугление даёт такие результаты для MySql, для msSQL и oracle будут другие функции.
Самогонщик Отправлено: 21 Октября, 2011 - 21:45:27 • Тема: как понимать время виполнении запроса? • Форум: SQL и Архитектура БД

Ответов: 8
Просмотров: 41
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. $start = microtime(TRUE);
  3. //запрос
  4. $res = microtime(TRUE) - $start;
  5.  
  6. echo $res;
  7. ?>

Направление мысли должно быть понятно.
Самогонщик Отправлено: 21 Октября, 2011 - 21:40:30 • Тема: Нужен не шаблонизатор, но синтаксический сахар • Форум: Хранение данных, их вывод и обработка

Ответов: 31
Просмотров: 6738
DlTA пишет:
проблема прояснилась

как вариант использовать не безопасный вызов exec

или пересмотреть метод построения страницы с целью избавиться от рекурсии

Вот, самое сложное - это донести проблему до окружающих :)

exec - как вариант, хотя не понятно что с производительностью, нужно тестить и с выводом там простым echo не обойтись. При запуске первого теста кавыч матюкнулся на подозрительную активность типа "рут.шел", как бы exec не подымал новый процесс.

Думал избавиться от рекурсии, но тогда придётся использовать стек прямо в шаблоне для запоминания состояния вывода. Вывожу из дерева. Преобразование дерева для упрощения алгоритма вывода придумать не смог. Если охота поразмять мозг, то дерево выводится как вложенные дивы, т.е. див, внутри содержимое узла и список дивов дочерних узлов (т.е. дивы, внутри которых содержимое узла..... люблю рекурсию)

Вообще бы хорошо найти готовый шаблонизатор, чтобы свой велосипед не городить.

Вопрос по прежнему открыт.
Самогонщик Отправлено: 21 Октября, 2011 - 21:22:02 • Тема: Нужен не шаблонизатор, но синтаксический сахар • Форум: Хранение данных, их вывод и обработка

Ответов: 31
Просмотров: 6738
DlTA пишет:
время генерации 6ms.
как по мне даже очень хорошо

Ни разу не спорю, что этот вариант самый резкий. 8 секунд это был второй вариант преложенный мной для того чтобы обойти проблему повторного объявления функции. Повторный вызов рекурсивного шаблона это одно из требований которое я не раз упоминал.

Что произойдёт если сделать так?
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?
  2.        include($_SERVER['DOCUMENT_ROOT'].'/lib/CView.php');
  3.        $cView = new CView($_SERVER['DOCUMENT_ROOT'].'/templates/');
  4.        echo $cView->renderTemplate('test.php',array());
  5.        echo $cView->renderTemplate('test.php',array());
  6. ?>
Самогонщик Отправлено: 21 Октября, 2011 - 20:44:01 • Тема: Нужен не шаблонизатор, но синтаксический сахар • Форум: Хранение данных, их вывод и обработка

Ответов: 31
Просмотров: 6738
DlTA пишет:
Самогонщик, чет я не пойму в чем проблема

Сейчас прогоню, и скажу в чём проблема... если найду.
---------------------------
код
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2.    class CView
  3.    {
  4.        function renderTemplate()
  5.        {
  6.                ob_start();
  7.                include './rec.php';
  8.                return ob_get_clean();
  9.        }
  10.    }
  11.        
  12.         $test = new CView();
  13.         echo $test->renderTemplate();
  14.         echo $test->renderTemplate();

шаблон
CODE (htmlphp):
скопировать код в буфер обмена
  1. <? function rec($iter) { if($iter>10) return; ?>
  2.         <div class='headerBlockB'><?=$iter?></div>
  3. <?
  4. rec($iter+1);
  5. rec($iter+1);
  6. }
  7. rec(0)?>

вывод: Fatal error: Cannot redeclare rec() (previously declared in blah blah blah....

Вот собственно и проблема: сделать рекурсивный вывод. Я не знаю как красиво её решить, но возможно я чего то не знаю про пхп :)
Некрасивое решение: объявить в классе метод который вызывает рекурсивный кусок и вызвать его как $this->f() прямо из шаблона и, соответственно, обойтись без объявления функции в шаблоне.
-------------------------------- ------------------
Вот кстати и реализация
Вызов (Отобразить)

Основной шаблон (Отобразить)

Дополнительный шаблон (Отобразить)


Время работы 8 сек, видать из-за постоянных инклудов.

P.S. Один спойлером не удалось скрыть все три блока кода, странно....
Самогонщик Отправлено: 21 Октября, 2011 - 20:41:18 • Тема: Вывод массива в 4 столбика • Форум: Хранение данных, их вывод и обработка

Ответов: 11
Просмотров: 9056
Чисто от того что мне скучно, вот готовый код по предложенному LIME второму способу:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2.  $char = array();
  3.  for($i=0; $i<256; $i++)
  4.    $char[$i]=256-$i;
  5. ?>
  6.  
  7. <table id="ascii">
  8.   <tr><td><b>1</b></td><td><b>2</b></td><td><b>3</b></td><td><b>4</b></td></tr>
  9.     <?PHP
  10.     for($i=0; $i<64; $i++) {
  11.       echo '<tr><td>'.$char[$i].'</td><td>'.$char[$i+64].'</td><td>'.$char[$i+128].'</td><td>'.$char[$i+192].'</tr>';
  12.    }
  13.   ?>
  14. </table>


Прогнать можно на кодепаде
Самогонщик Отправлено: 21 Октября, 2011 - 20:28:22 • Тема: Нужен не шаблонизатор, но синтаксический сахар • Форум: Хранение данных, их вывод и обработка

Ответов: 31
Просмотров: 6738
DlTA пишет:
Самогонщик пишет:
Что-то мне подсказывают что меня не поймут....

может проще изменить отношение к php вставкам
тем более что их можно оформить достаточно привлекательно
С привлекательностью особой проблемы и нет, на крайний случай буду заменять {{ на <?php, а }} на.. ну вы поняли.
Проблемы такие мне видятся: шаблон получает переменные из глобального контекста, но это лечится с помощью подключения в метод класса, тогда можно обращаться через $this->value, но дважды такой метод вызвать нельзя, если я объявлю внутри шаблона функцию (хотя тут не знаю, можно ли в таком случае вообще объявлять функцию, скорее всего можно).
(Добавление)
Stierus пишет:
Вцелом ты обосрал все более-менее крупное из того, что есть, за исключением, разве что, smarty, но что-то мне подсказывает, что и он тебе не подойдет.

ps если уж twig тебя не устроил, который даже в симфони2 юзается активно разрабами - то думаю, писать тебе его самому :)
Я не обосрал, а лишь сказал, что они не подходят под мои требования. Шаблонизаторы эти мощные, можно классные вещи мутить, но медленные. Мне нравится какую структуру классов генерирует твиг, но красота шаблона достигается через рефлексию, а на вызов функции делается через $ret = call_user_func_array(array($object, $method), $arguments); , что отжирает кучу времени, если вызвать 1000 раз.

Есть у меня мысль сломать всё лишнее в твиге (с моей точки зрения), и сделать так чтобы вставки были более пхпешными, а код более резким, но это время. Поэтому решил обратиться коллективному разуму.
Самогонщик Отправлено: 21 Октября, 2011 - 20:08:58 • Тема: Нужен не шаблонизатор, но синтаксический сахар • Форум: Хранение данных, их вывод и обработка

Ответов: 31
Просмотров: 6738
Достался мне в наследство сайт с dle движком и их весёлой системой шаблонов. Весёлость заключается в том, что значения в шаблон подставляются с помощью замены строки. Вроде нормальная практика, но производительность не ахти, особенно когда нужно генерировать вывод тысячи динамически (я как бы намекаю на невозможность кеширования). И вообще мне такой подход не нравится :(
Пробовал я делать вывод через шаблоны на пхп, но ко мне подобралась засада при выводе иерархических данных через использование рекурсии: функция объявляется и не даёт шаблон вызвать повторно (редко, но нужно). Хотя тут я мог не доглядеть, и если кто знаешь как несколько раз вызвать php-шаблон, буду благодарен за информацию, хотя это уже не то что мне надо.
Далее я пошёл по шаблонизаторам. Попробовал твиг, квикли, а дальше пробовать стало лень. Твиг работает катастрофически медленно из-за хиртожопых вызовов функций, а квикли не позволяет дважды вызвать шаблон на исполнение + сразу же нашёл баг в генерированном шаблоне (разрабам не сообщал, лень). Букв уже много, так что скажу чего хочу.

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

В первом приближении это видится так:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. {% macro req(name, iter) %}
  3.         {% if iter != 10 %}
  4.                 Hello {{ name }}!
  5.                 <div>
  6.                         {{ _self.iter(name, iter+1)     }}
  7.                         {{ _self.iter(name, iter+1)     }}
  8.                 </div> 
  9.         {% endif %}
  10. {% endmacro %}
  11.  
  12. {{ _self.iter('Hello', 0) }}

Такой код бы компилировался в такое
CODE (htmlphp):
скопировать код в буфер обмена
  1. class __TwigTemplate_11e2ff3e726e44ed6b925096013def6e extends Twig_Template
  2. {
  3.     protected function doGetParent(array $context)
  4.     {
  5.         return false;
  6.     }
  7.  
  8.     protected function doDisplay(array $context, array $blocks = array())
  9.     {
  10.        
  11.  
  12.         // line 1
  13.         echo "
  14. ";
  15.         // line 11
  16.         echo "
  17. ";
  18.         // line 12
  19.         echo $this->getgg("Hello", 0);
  20.         echo "
  21. ";
  22.     }
  23.  
  24.     // line 2
  25.     public function getgg($name = null, $ololo = null)
  26.     {
  27.             // line 3
  28.             echo "\t";
  29.             if ($ololo != 10) {
  30.                 // line 4
  31.                 echo "\t\tHello ";
  32.                 echo $name;
  33.                 echo "!
  34. \t\t<div>
  35. \t\t\t";
  36.                 // line 6
  37.                 echo $this->getgg("Hello", $ololo+1);
  38.                 echo "
  39. \t\t\t";
  40.                 // line 7
  41.                 echo $this->getgg("Hello", $ololo+1);
  42.                 echo "
  43. \t\t</div>\t
  44. \t";
  45.             }
  46.  
  47.     }
  48.  
  49.     public function getTemplateName()
  50.     {
  51.         return "template.php";
  52.     }
  53.  
  54.     public function isTraitable()
  55.     {
  56.         return false;
  57.     }
  58. }


Что-то мне подсказывают что меня не поймут....

Страниц (31): В начало « ... 23 24 25 26 27 28 29 30 [31]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB