home.php + mysql

serjoo
На сайте с 12.09.2011
Offline
389
454

Здравствуйте.

Есть файл home.php такой:

<?php


function getHome()
{
global $config;
$data = Array();
$data['title'] = $config['home_title'];
$data['description'] = $config['home_description'];
$data['keywords'] = $config['home_keywords'];
$data['h1'] = $config['home_h1'];
$data['content'] = $config['home_text'] . Window();
return $data;
}


?>

Туда нужно прикрутить вывод таблицы из БД, это:

<div id="" class="mb40">

<h4 style="margin-left:7px">Rubi</h4>
<ul style="background: none; margin-bottom: 5px; ">
<?php
//
$query = mysql_query('SELECT `name`, `name2`, `uri`, (SELECT count(*) FROM `auto` WHERE `moto_id` = `moto`.`id` AND `auto`.`enable` = "1") as `count` FROM `moto` HAVING `count` <> 0 ORDER BY `name` ASC');
while ($result = mysql_fetch_assoc($query))
{
echo '<li class="pbmoto"><a href="/'.DIR.''.$result['uri'].'">'.$result['name'].'</a> ('.$result['count'].')</li> ';
}
//
?>
</ul>
</div>

Знаю что вывод нужно запилить перед return $data, что нужны '''''' и может точки, но вот как правильно все расставить - ХЗ. Или это не все?

Мультур..
S
На сайте с 19.11.2014
Offline
72
#1

Не понятно, как взаимодействуют представленные фрагменты кода. Где вызывается функция getHome()?

Но приблизительно


<?php
$table_data = '<div id="" class="mb40"><h4 style="margin-left:7px">Rubi</h4>
<ul style="background: none; margin-bottom: 5px; ">';

$query = mysql_query('SELECT `name`, `name2`, `uri`, (SELECT count(*) FROM `auto` WHERE `moto_id` = `moto`.`id` AND `auto`.`enable` = "1") as `count` FROM `moto` HAVING `count` <> 0 ORDER BY `name` ASC');
while ($result = mysql_fetch_assoc($query))
{
$table_data.= '<li class="pbmoto"><a href="/'.DIR.$result['uri'].'">'.$result['name'].'</a> ('.$result['count'].')</li>';
}

$table_data.='</ul></div>';
?>

Меняете с function getHome() на


function getHome($table_data = '')
{
global $config;
$data = Array();
$data['title'] = $config['home_title'];
$data['description'] = $config['home_description'];
$data['keywords'] = $config['home_keywords'];
$data['h1'] = $config['home_h1'];
$data['content'] = $config['home_text'] . Window();
$data['$table_data'] = $table_data;

return $data;
}

и в вызове функции getHome($table_data);

где $table_data - строка, сформированная в первом фрагменте.

Нужны ещё проверки исходя из ваших требований. Что делать с пустым результатом запроса - выводить-не выводить и т. д.

А может Вы вообще хотите первый фрагмент впихнуть в функцию, тогда


function getHome()
{
global $config;
$data = Array();
$data['title'] = $config['home_title'];
$data['description'] = $config['home_description'];
$data['keywords'] = $config['home_keywords'];
$data['h1'] = $config['home_h1'];
$data['content'] = $config['home_text'] . Window();

$table_data = '<div id="" class="mb40"><h4 style="margin-left:7px">Rubi</h4>
<ul style="background: none; margin-bottom: 5px; ">';

$query = mysql_query('SELECT `name`, `name2`, `uri`, (SELECT count(*) FROM `auto` WHERE `moto_id` = `moto`.`id` AND `auto`.`enable` = "1") as `count` FROM `moto` HAVING `count` <> 0 ORDER BY `name` ASC');
while ($result = mysql_fetch_assoc($query))
{
$table_data.= '<li class="pbmoto"><a href="/'.DIR.$result['uri'].'">'.$result['name'].'</a> ('.$result['count'].')</li>';
}

$table_data.='</ul></div>';

$data['$table_data'] = $table_data;

return $data;
}

Всё это грубо - просто для хода мыслей

serjoo
На сайте с 12.09.2011
Offline
389
#2

Последний ваш способ не работает что то...

Swir:
А может Вы вообще хотите первый фрагмент впихнуть в функцию, тогда

Хочу чтоб заработал вывод из БД..

function getHome()
{
global $config;
$data = Array();
$data['title'] = $config['home_title'];
$data['description'] = $config['home_description'];
$data['keywords'] = $config['home_keywords'];
$data['h1'] = $config['home_h1'];
$data['content'] = $config['home_text'] . Window();
<td width="300" valign="top">
<div id="" class="mb40">
<h4 style="margin-left:7px">Rubi</h4>
<ul style="background: none; margin-bottom: 5px; ">
$query = mysql_query('SELECT `name`, `name2`, `uri`, (SELECT count(*) FROM `auto` WHERE `moto_id` = `moto`.`id` AND `auto`.`enable` = "1") as `count` FROM `moto` HAVING `count` <> 0 ORDER BY `name` ASC');
while ($result = mysql_fetch_assoc($query))
{
echo '<li class="pbmoto"><a href="/'.DIR.''.$result['uri'].'">'.$result['name'].'</a> ('.$result['count'].') </li> ';
}
</ul>
</div>
<div class="mb20"></div>
</td>
return $data;
}

Ваш нижний кусок кода не хочет работать..

Вот так выводит перед <html> на главной (ну выводить только главной и надо, только как бы там в сайдбаре должно выводиться)

function getHome()
{
global $config;
$data = Array();
$data['title'] = $config['home_title'];
$data['description'] = $config['home_description'];
$data['keywords'] = $config['home_keywords'];
$data['h1'] = $config['home_h1'];
$data['content'] = $config['home_text'] . Window();


$query = mysql_query('SELECT `name`, `name2`, `uri`, (SELECT count(*) FROM `auto` WHERE `moto_id` = `moto`.`id` AND `auto`.`enable` = "1") as `count` FROM `moto` HAVING `count` <> 0 ORDER BY `name` ASC');
while ($result = mysql_fetch_assoc($query))
{
echo '<li class="pbmoto"><a href="/'.DIR.''.$result['uri'].'">'.$result['name'].'</a> ('.$result['count'].') </li> ';
}

return $data;
}

PS добавил <td width="300" valign="top">

S
На сайте с 19.11.2014
Offline
72
#3

Ну тогда подобовляете echo


function getHome()
{
global $config;
$data = Array();
$data['title'] = $config['home_title'];
$data['description'] = $config['home_description'];
$data['keywords'] = $config['home_keywords'];
$data['h1'] = $config['home_h1'];
$data['content'] = $config['home_text'] . Window();

echo '<td width="300" valign="top">';
echo '<div id="" class="mb40">';
echo '<h4 style="margin-left:7px">Rubi</h4>';
echo '<ul style="background: none; margin-bottom: 5px; ">';

$query = mysql_query('SELECT `name`, `name2`, `uri`, (SELECT count(*) FROM `auto` WHERE `moto_id` = `moto`.`id` AND `auto`.`enable` = "1") as `count` FROM `moto` HAVING `count` <> 0 ORDER BY `name` ASC');
while ($result = mysql_fetch_assoc($query))
{
echo '<li class="pbmoto"><a href="/'.DIR.''.$result['uri'].'">'.$result['name'].'</a> ('.$result['count'].') </li> ';
}
echo '</ul></div>';
echo ' <div class="mb20"></div>';
echo '</td>';

return $data;
}
serjoo
На сайте с 12.09.2011
Offline
389
#4

Хрень какая то, выводится все нормально, но выводится тупо над шапкой в начале кода перед <html>, надо как бы после текста выводить там сразу как бы в сайдбаре получается. Как бы в $data['content'] выводить что ли..

Может можно тупо вывести из бд в index.php, но запретить вывод на внутряках?

S
На сайте с 19.11.2014
Offline
72
#5
serjoo:
Хрень какая то, выводится все нормально, но выводится тупо над шапкой в начале кода перед <html>, надо как бы после текста выводить там сразу как бы в сайдбаре получается. Как бы в $data['content'] выводить что ли..

Может можно тупо вывести из бд в index.php, но запретить вывод на внутряках?

правильно, потому что echo. Чтоб не выводило перед шапкой, нужно сделать вывод в переменную, а потом сделать вывод переменной в нужном месте. Тоесть


function getHome()
{
global $config;
$data = Array();
$data['title'] = $config['home_title'];
$data['description'] = $config['home_description'];
$data['keywords'] = $config['home_keywords'];
$data['h1'] = $config['home_h1'];
$data['content'] = $config['home_text'] . Window();

$table_data = '<td width="300" valign="top">';
$table_data.= '<div id="" class="mb40">';
$table_data.='<h4 style="margin-left:7px">Rubi</h4>';
$table_data.='<ul style="background: none; margin-bottom: 5px; ">';

$query = mysql_query('SELECT `name`, `name2`, `uri`, (SELECT count(*) FROM `auto` WHERE `moto_id` = `moto`.`id` AND `auto`.`enable` = "1") as `count` FROM `moto` HAVING `count` <> 0 ORDER BY `name` ASC');
while ($result = mysql_fetch_assoc($query))
{
$table_data.='<li class="pbmoto"><a href="/'.DIR.''.$result['uri'].'">'.$result['name'].'</a> ('.$result['count'].') </li> ';
}
$table_data.='</ul></div>';
$table_data.=' <div class="mb20"></div>';
$table_data.='</td>';

//дальше записываем полученное значение в массив
$data['table_data'] = $table_data;
//либо цепляем к $data['content'] в начало
$data['content'] = $table_data.$data['content'];
//или в конец
$data['content'].= $table_data;

return $data;
}

Если записали в отдельный ключ массива, то ищем в шаблоне, куда передаётся массив данных $data и место, где нужно вывести сформированную строку и в том месте пишем <?=$data['table_data'];?> или какой там синтаксис

serjoo
На сайте с 12.09.2011
Offline
389
#6

И что вы думаете? ПОЛУЧИЛОСЬ! :)

Вот это перед return $data; запилил, работает..

$data['content'].= $table_data;

Спасибо за помощь.

PS вот тут только поправил:

$table_data = '<td width="300" valign="top">';
S
На сайте с 19.11.2014
Offline
72
#7
serjoo:
И что вы думаете? ПОЛУЧИЛОСЬ! :)

Хорошо, когда получается :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий