PHP.SU

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

Страниц (3): [1] 2 3 »

> Найдено сообщений: 39
glutaminefree Отправлено: 19 Ноября, 2013 - 08:39:52 • Тема: ob_start и global • Форум: Вопросы новичков

Ответов: 13
Просмотров: 616
Действительно помогло. Спасибо за помощь.
glutaminefree Отправлено: 18 Ноября, 2013 - 16:07:20 • Тема: Отправка формы заказа на почту на локальном сервере • Форум: Вопросы новичков

Ответов: 1
Просмотров: 141
Обработать параметры из $_POST, составив текст сообщения, а далее отправить функцией mail

PHP:
скопировать код в буфер обмена
  1.  
  2. //Подготавливаем данные из $_POST массива
  3.  
  4. //Отправляем письмо
  5. mail($to, $subject, $message);
  6.  
  7. //Перенаправляем куда-то
  8. header('Location: http://example.com');
  9. die();
  10.  
glutaminefree Отправлено: 18 Ноября, 2013 - 14:58:46 • Тема: ob_start и global • Форум: Вопросы новичков

Ответов: 13
Просмотров: 616
Нет. Не думаю, что это поможет. Но всё таки проверю, но уже завтра. Сейчас работать закончил. Спасибо за советы!
glutaminefree Отправлено: 18 Ноября, 2013 - 14:48:27 • Тема: ob_start и global • Форум: Вопросы новичков

Ответов: 13
Просмотров: 616
IllusionMH пишет:
а при AJAX запросе вы точно проходите шаги присвоения переменной


Да. Прокомментировал выше, что она дебажится нормально даже внутри блока ob_start/ob_end_clean в месте прямо перед подключением шаблона.
glutaminefree Отправлено: 18 Ноября, 2013 - 14:39:21 • Тема: ob_start и global • Форум: Вопросы новичков

Ответов: 13
Просмотров: 616
Ну у меня так и происходит.

PHP:
скопировать код в буфер обмена
  1.  
  2. $comments_list = /*запрос с WP_Comment_Query*/
  3.  
  4.  
  5. /*
  6. из этого места переменная дебажится нормально,
  7. в ней то, что и должно быть
  8. */
  9.  
  10. get_template_part('parts/comments', 'loop');
  11. $html = ob_get_contents();
  12.  


Внутри comments-loop.php:

PHP:
скопировать код в буфер обмена
  1.  
  2. global $comments_list;
  3.  
  4. /*далее цикл с выводом данных*/
  5.  


Всё это прекрасно работает, если использовать из шаблонов (например search.php, или на любой странице). И даже если обвернуть в ob_start/ob_end_clean, а потом вывести буфер.

Но если я использую этот код внтури функции:

PHP:
скопировать код в буфер обмена
  1.  
  2. function more_search() {
  3.         /*Тут тот самый код*/
  4. }
  5. add_action('wp_ajax_more_search', 'more_search');
  6. add_action('wp_ajax_nopriv_more_search', 'more_search');
  7.  


То внутри подключаемого шаблона переменная оказывается пустой. Что очень очень странно. Посмотрел исходники всех функций, которые учавствуют в get_template_part и не нашёл ничего, из-за чего такое бы могло происходить. Может искал плохо.
glutaminefree Отправлено: 18 Ноября, 2013 - 14:22:49 • Тема: ob_start и global • Форум: Вопросы новичков

Ответов: 13
Просмотров: 616
IllusionMH пишет:
glutaminefree, подключение через get_template_part?


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

А внутри AJAX срипта почему-то беда такая. AJAX работает у меня через хук WP

PHP:
скопировать код в буфер обмена
  1. add_action('wp_ajax_my_func', 'my_func');
glutaminefree Отправлено: 18 Ноября, 2013 - 14:19:10 • Тема: ob_start и global • Форум: Вопросы новичков

Ответов: 13
Просмотров: 616
Да, я уже проверил именно такой код. Работает как надо. У меня несколько иная ситуация. Там AJAX запрос и функция подлюкчения файла Wordpress'овская.

Пробовал не через AJAX тот же самый кусок кода использовать - работает отлично. Именно в AJAX обработчике почему-то переменная теряется.

get_defined_vars говорит, что переменная появляется, но пустая.

А global всё же нужен, ибо подключается файл на самом деле через функцию. Я просто подумал, что не в Wordpress дело, и накатал упрощенную версию кода.
glutaminefree Отправлено: 18 Ноября, 2013 - 13:23:09 • Тема: ob_start и global • Форум: Вопросы новичков

Ответов: 13
Просмотров: 616
Приветствую!

В гугле ничего найти не смог по этой теме. Вобщем внутри конструкции ob_start/ob_end_clean есть подключаемый файл, и в нём не работает конструкция global.

Вот примерно так:

PHP:
скопировать код в буфер обмена
  1.  
  2. $data = 'some data';
  3.  
  4. require('some_file.php');
  5. $html = ob_get_contents();
  6.  


Внутри подключаемого файла примерно такое:



Соответственно в $html ничего нет. $data внутри конструкции ob_start/ob_end_clean нормально дебажится, но вот в подключаемом файле почему-то даже после global не хочет отдавать данные.

Версия php - 5.4.17
ОС - Fedora 17 x86_64
glutaminefree Отправлено: 30 Декабря, 2012 - 16:11:44 • Тема: foreach и null • Форум: Вопросы новичков

Ответов: 2
Просмотров: 258
Действительно помогает. Я думал, что unset переменной после foreach со ссылкой уничтожит последний элемент.
glutaminefree Отправлено: 30 Декабря, 2012 - 15:28:54 • Тема: foreach и null • Форум: Вопросы новичков

Ответов: 2
Просмотров: 258
Приветствую!

Столкнулся с таким вот поведением foreach:

PHP:
скопировать код в буфер обмена
  1. php > $arr = array('1' => '123', '2' => '123', '3' => '123');
  2. php > var_dump($arr);
  3. array(3) {
  4.   [1]=>
  5.   string(3) "123"
  6.   [2]=>
  7.   string(3) "123"
  8.   [3]=>
  9.   string(3) "123"
  10. }
  11. php > foreach( $arr as &$a ) $a = null;
  12. php > var_dump($arr);
  13. array(3) {
  14.   [1]=>
  15.   NULL
  16.   [2]=>
  17.   NULL
  18.   [3]=>
  19.   &NULL
  20. }


Вот интересует, почему последний элемент не NULL, а ссылка на NULL? И можно ли что-то сделать, чтобы избежать этого, кроме как после foreach присваивать в наглую NULL последнему элементу?
(Добавление)
Хмм, ему даже если после присвоить какое-либо значение, то это будет ссылка на значение. Видимо проще всего работать с временным массивом, а после присвоить его первичному.
glutaminefree Отправлено: 30 Ноября, 2012 - 15:29:56 • Тема: Отсеять поле с NULL с помощью IF или CASE • Форум: SQL и Архитектура БД

Ответов: 10
Просмотров: 84
Мелкий пишет:
glutaminefree, ну и? Почему бы его и не получать, раз не нужен?


Так значения то в одних и тех же полях.

CODE (htmlphp):
скопировать код в буфер обмена
  1. +----+----------------+--------------+
  2. | id | meta_name      | meta_value   |
  3. +----+----------------+--------------+
  4. |  3 | translate_type | localization |
  5. |  3 | experience     | 2            |
  6. |  4 | translate_type | written      |
  7. |  4 | translate_type | voice        |
  8. |  4 | experience     | 5            |
  9. +----+----------------+--------------+
glutaminefree Отправлено: 30 Ноября, 2012 - 13:24:22 • Тема: Отсеять поле с NULL с помощью IF или CASE • Форум: SQL и Архитектура БД

Ответов: 10
Просмотров: 84
Просто в таблице user_meta хранятся разные данные. Мне нужно получить значение experience, и проверить, чтобы translate_type был определённого значения, но при этом не нужно его получать.
А структура таблиц приведена выше, если что.
glutaminefree Отправлено: 30 Ноября, 2012 - 13:18:19 • Тема: Отсеять поле с NULL с помощью IF или CASE • Форум: SQL и Архитектура БД

Ответов: 10
Просмотров: 84
Мелкий пишет:
Так уберите условие, удовлетворяющее ненужные строки.

Хех, если бы оно было не нужно, то убрал бы, конечно.
glutaminefree Отправлено: 30 Ноября, 2012 - 13:07:25 • Тема: Отсеять поле с NULL с помощью IF или CASE • Форум: SQL и Архитектура БД

Ответов: 10
Просмотров: 84
Да, я вот тоже уже подумал в сторону HAVING. Работает, спасибо за помощь Улыбка
glutaminefree Отправлено: 30 Ноября, 2012 - 13:01:36 • Тема: Отсеять поле с NULL с помощью IF или CASE • Форум: SQL и Архитектура БД

Ответов: 10
Просмотров: 84
Добавил в WHERE - получил ошибку:

ERROR 1054 (42S22): Unknown column 'experience' in 'where clause'

Страниц (3): [1] 2 3 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB