andrey888
26.10.2013 - 15:33
Суть такая, нужно вывести кое какой результат на стр. перед тем как местом где PHP этот результат уже знает .. Никогда раньше не пользовался этой Ob_start() , и сейчас могу обойтись без нее но тогда надо лишний запрос к БД делать , поэтому ради разнообразия решил использовать эту функцию.
Упрощенный пример того что у меня
function Bla($a){
swicth($a){
case 1: echo 'HELLo World'; break;
...
}
}
Я немного не вкуриваю как тут использовать Ob_start() .. То есть мне функцию с опред. значением надо вызвать до того как я узнаю это значение ..
_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
что мешает сделать так :
function Bla($a){
swicth($a){
case 1: echo 'HELLo World'; break;
...
}
}
В любом случае ob_start() - это не машина времени. Если не знаешь $a, то его нужно "узнать" перед тем как использовать. Или я что-то не так понял?
andrey888
26.10.2013 - 15:45
kaww отредактировал первый пост .. там где идет HTML уже нужно вывести (как пример) этот HELLo World
--------------------------------------------
А мешает именно то что там где ХТМЛ уже нужно вывести результат функции .. а переменную мы еще не знаем .. мне думалось именно в таких случаях применяют ob_start()
_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
exotica
29.10.2013 - 06:17
что то тут как то не логично все выходит, у тебя имеется функция которой ты должен передать аргумент, но функцию ты хочешь вызвать раньше чем узнаешь этот аргумент, как то к такому жизнь меня не готовила
Не подумай что троллю, просто мне реально непонятно как это должно сработать
_____________
[FAQ]Регистрации пользователей, сохранение в БД---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
redreem
29.10.2013 - 06:26
об_старт тут вообще не причем.
собирай страницу в переменную и потом выводи 1 раз.
$html = 'Hallo world!';
$a = "I'm A!";
$html .= $a;
echo $html;
exotica
29.10.2013 - 06:45
Цитата |
собирай страницу в переменную и потом выводи 1 раз. |
да, вот в это я верю
_____________
[FAQ]Регистрации пользователей, сохранение в БД---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
Цитата (andrey888 @ 26.10.2013 - 15:33) |
То есть мне функцию с опред. значением надо вызвать до того как я узнаю это значение .. |
мы что то двигаем) пока двигаем, но что двигаем мы не знаем, когда до-двигаем вот тогда разберемся, зачем мы это до-двигали.
Самое время посмотреть что мы двигали,
Оказалось мы не то двигали, зря двигали, теперь самое время найти что не надо было, а что мы задвинули.
Возвращаемся на исходную.
теперь начинаем двигать очередное что-то, когда до-двигаем следующее, тогда и поймем что надо.
Однако, нам тут некогда разслоблятся, не мешайте, мы заняты. Мы очень заняты, пока все не до-пре-двигаем.
Цитата (andrey888 @ 26.10.2013 - 15:33) |
Я немного не вкуриваю как тут использовать Ob_start() |
аГа) прикручиваем ЭТО Ob_start() задвигаем в него и опять до-двигаем.
Вообще-то Ob_start() это буфер, он много может поместить.
Лучше ЗА=двинуть все в него. и двигать все сразу, а потом)) , )) разберем, что мы туда наложили и что зДря двигали.
_____________
«Гнусное свойство карликовых умов приписывать
________________!свое духовное убожество другим!»
___О) как-же он прав=>__________________ © Оноре де Бальзак. отличный хост(рекомендую !! )My MVC-CMV
Игорь_Vasinsky
29.10.2013 - 10:03
Цитата |
когда до-двигаем вот тогда разберемся, зачем мы это до-двигали. |
даже если отложить в сторону программирование - то логичней было бы предположить - что перед тем как что-то двигать - нужно до этого момента знать что двигать и уж тем более куда.
Цитата |
Вообще-то 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
ну очень большая разница, особенно когда поймем что двигали)
а тут налицо включили, до-двигали и выключили.
однако:

что то тут не так ))
_____________
«Гнусное свойство карликовых умов приписывать
________________!свое духовное убожество другим!»
___О) как-же он прав=>__________________ © Оноре де Бальзак. отличный хост(рекомендую !! )My MVC-CMV
andrey888
29.10.2013 - 15:38
YVSIK Стеб понят и принят )) ..
Объясняю ..
После того как закончил делать скрипт , выпусил его в народ , мозг не перестает работать и время от времени придумываешь новые удобные плюшки для пользователей .. -> развиваешь (усложняешь) проект так или иначе.. вот и получилось что для данной плюшки результат (нужной переменной) можно получить только когда полностью отработает while($bla = mysql_fetch_assoc($blabla)) а как ты понимаешь там уже идут вагончики HTML .. поэтому и возникла проблема - результат нужен еще до вывода ДокТайп а появляется он уже в середине HTML
Вобщем я понял что в моем скрипте лучше сделать еще один запрос к БД и нормально получить нужный результат .. чем мудрить с ob_start() ... будем исходить из закона "Чем проще - тем лучше"
_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
Игорь_Vasinsky
29.10.2013 - 15:43
а так чем не подходит?
$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
29.10.2013 - 15:45
Игорь
отредактировал последний пост...
_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
Игорь_Vasinsky
29.10.2013 - 15:59
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
29.10.2013 - 21:56
Игорь_Vasinsky Спасибо.
Попробую ... если что не выйдет либо будет сильно намешено в коде (т.к. там и подключение других файлов идет) то сделаю проще как выше написал..
Максимум из за лишнего запроса БД не лопнет )).. , а еще проще наверное будет сделать View - ху с АйДишником пользователей и нужным результатом для каждого .. чтоб при запросе не просить Мускуль каждый раз производить поиск, а просто брать нужную колонку и строку да и не париться.
_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
В мануале есть пример, может быть по теме.
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
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.