[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ob_start()
Страницы: 1, 2
andrey888
Суть такая, нужно вывести кое какой результат на стр. перед тем как местом где PHP этот результат уже знает .. Никогда раньше не пользовался этой Ob_start() , и сейчас могу обойтись без нее но тогда надо лишний запрос к БД делать , поэтому ради разнообразия решил использовать эту функцию.
Упрощенный пример того что у меня

function Bla($a){
swicth($a){
case 1: echo 'HELLo World'; break;
...

}
}


// HTML тут нужно вывести HELLo World (как пример) .. то есть тут нужно позвать функцию Bla($a); Но $a мы еще не знаем

// PHP Где то тут узнаем про $a


Я немного не вкуриваю как тут использовать Ob_start() .. То есть мне функцию с опред. значением надо вызвать до того как я узнаю это значение ..

_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
kaww
что мешает сделать так :

function Bla($a){
swicth($a){
case 1: echo 'HELLo World'; break;
...

}
}


// HTML
// PHP Где то тут узнаем про $a
// тут нужно позвать функцию Bla($a);И $a мы уже знаем


В любом случае ob_start() - это не машина времени. Если не знаешь $a, то его нужно "узнать" перед тем как использовать. Или я что-то не так понял?
andrey888
kaww отредактировал первый пост .. там где идет HTML уже нужно вывести (как пример) этот HELLo World
--------------------------------------------
А мешает именно то что там где ХТМЛ уже нужно вывести результат функции .. а переменную мы еще не знаем .. мне думалось именно в таких случаях применяют ob_start()

_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
exotica
что то тут как то не логично все выходит, у тебя имеется функция которой ты должен передать аргумент, но функцию ты хочешь вызвать раньше чем узнаешь этот аргумент, как то к такому жизнь меня не готовила biggrin.gif

Не подумай что троллю, просто мне реально непонятно как это должно сработать huh.gif

_____________
[FAQ]Регистрации пользователей, сохранение в БД
---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
redreem
об_старт тут вообще не причем.
собирай страницу в переменную и потом выводи 1 раз.

$html = 'Hallo world!';
$a = "I'm A!";
$html .= $a;
echo $html;
exotica
Цитата
собирай страницу в переменную и потом выводи 1 раз.


да, вот в это я верю smile.gif

_____________
[FAQ]Регистрации пользователей, сохранение в БД
---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
YVSIK
Цитата (andrey888 @ 26.10.2013 - 15:33)
То есть мне функцию с опред. значением надо вызвать до того как я узнаю это значение ..

мы что то двигаем) пока двигаем, но что двигаем мы не знаем, когда до-двигаем вот тогда разберемся, зачем мы это до-двигали.
Самое время посмотреть что мы двигали,

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

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

Однако, нам тут некогда разслоблятся, не мешайте, мы заняты. Мы очень заняты, пока все не до-пре-двигаем.
biggrin.gif
Цитата (andrey888 @ 26.10.2013 - 15:33)
Я немного не вкуриваю как тут использовать Ob_start()

аГа) прикручиваем ЭТО Ob_start() задвигаем в него и опять до-двигаем.

Вообще-то Ob_start() это буфер, он много может поместить.
Лучше ЗА=двинуть все в него. и двигать все сразу, а потом)) , )) разберем, что мы туда наложили и что зДря двигали. cool.gif
user posted image


_____________
«Гнусное свойство карликовых умов приписывать
________________!свое духовное убожество другим!»
___
О) как-же он прав=>__________________ © Оноре де Бальзак.

отличный хост(рекомендую !! )
My MVC-CMV
Игорь_Vasinsky
Цитата
когда до-двигаем вот тогда разберемся, зачем мы это до-двигали.

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

Цитата
Вообще-то Ob_start() это буфер,

ошибочка - это не буфер
Цитата
http://php.net/manual/ru/function.ob-start.php
ob_start — Включение буферизации вывода


Цитата
Лучше ЗА=двинуть все в него. и двигать все сразу, а потом))

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

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
YVSIK
Цитата (Игорь_Vasinsky @ 29.10.2013 - 10:03)
ошибочка - это не буфер
Цитата
http://php.net/manual/ru/function.ob-start.php
ob_start — Включение буферизации вывода

ну очень большая разница, особенно когда поймем что двигали)
а тут налицо включили, до-двигали и выключили.
однако: blink.gif что то тут не так ))

_____________
«Гнусное свойство карликовых умов приписывать
________________!свое духовное убожество другим!»
___
О) как-же он прав=>__________________ © Оноре де Бальзак.

отличный хост(рекомендую !! )
My MVC-CMV
andrey888
YVSIK Стеб понят и принят )) ..
Объясняю ..
После того как закончил делать скрипт , выпусил его в народ , мозг не перестает работать и время от времени придумываешь новые удобные плюшки для пользователей .. -> развиваешь (усложняешь) проект так или иначе.. вот и получилось что для данной плюшки результат (нужной переменной) можно получить только когда полностью отработает while($bla = mysql_fetch_assoc($blabla)) а как ты понимаешь там уже идут вагончики HTML .. поэтому и возникла проблема - результат нужен еще до вывода ДокТайп а появляется он уже в середине HTML ph34r.gif

Вобщем я понял что в моем скрипте лучше сделать еще один запрос к БД и нормально получить нужный результат .. чем мудрить с ob_start() ... будем исходить из закона "Чем проще - тем лучше" biggrin.gif

_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
Игорь_Vasinsky
а так чем не подходит?


$a = 100;

ob_start();

echo 'Петя нащёл {$} баксов на улице';

$content = ob_get_contents();

ob_end_clean();


echo strtr($content, array('{$}', $a));


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
andrey888
Игорь
отредактировал последний пост...

_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
Игорь_Vasinsky
1. составляешь вывод и запихиваешь в буфер, заменив на метки учтки строки - которых пока нет
2. получаешь из БД данные
3. вывод данных из буфера, но с заменой меток на данные из БД

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
andrey888
Игорь_Vasinsky Спасибо.
Попробую ... если что не выйдет либо будет сильно намешено в коде (т.к. там и подключение других файлов идет) то сделаю проще как выше написал..
Максимум из за лишнего запроса БД не лопнет )).. , а еще проще наверное будет сделать View - ху с АйДишником пользователей и нужным результатом для каждого .. чтоб при запросе не просить Мускуль каждый раз производить поиск, а просто брать нужную колонку и строку да и не париться.

_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
OleKh
В мануале есть пример, может быть по теме.

ob_start("callback");
echo 'Doctype';
for($i=0; $i<= 3; $i++){
if($i==1) $x = $i;
echo ' html';
}
ob_end_flush();

function callback($buffer)
{
global $x;
if ($x==1)
return (str_replace("Doctype", "Hello World Doctype", $buffer));
}


Hello World Doctype html html html html
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.