Быстрее второй. Хотя бы по тому, что будет только один запрос в базу.
Правильней тоже второй, потому что читай выше.
В первом варианте вообще можно обойтись без функции, просто сделав запрос и разобрав его в цикле, так что вариант не о чём.
Есть рекомендации по проектированию структуры кода, называются MVC. Почитай.
Если вкратце:
Не надо писать простыню, то есть все в одном файле, и логику как во втором примере и вывод в шаблон как в блоке с
echo $value['поле чего то']; и условия, которые отвечают за то, какую функцию запустить.
По сути нужно поделить это на 3 части (на 3 файла).
1 часть - это контроллер. Главный файл который всё контролирует, распределяет.
Пример index.php:
if(isset($_GET['news'])) {
get_news($_GET['news']);
} else {
что_то_другое();
}
То есть контроллер сам ничего не запрашивает из базы, он вообще ничего не делает кроме как распределяет запросы на чуваков, которые за это отвечают. В данном случае это get_news() и что_то_другое().
2 часть - это модель. Файл с функциями/методами. Это как раз те чуваки, которым контроллер дал задание, они делают всю
грязную работу.
Пример model.php:
function get_news($id){
};
3 часть - это шаблон. Файл с html, в котором выводятся данные.
Например ты получил массив с новостями от модели get_news();
index.html:
<div class="blabla">
<?php foreach ($array as $news) :?>
<p><?php echo $news['title'];?></p>
<p><?php echo $news['content'];?></p>
<?php endforeach;?>
</div>
В итоге получается так, контроллер (начальник) получил инструкции в виде $_GET, $_POST или еще как то. Подключил нужную модель (бригаду, которая будет эти инструкции выполнять). Потом результат отправил в шаблон (дизайнерам).
$Tpl = new tpl;
$Brigada1 = new brigada1;
$Brigada2 = new brigada2;
if(isset($_GET['news'])) {
$Tpl->display('index.html', $Brigada1->get_news($_GET['news']));
} else {
$Tpl->display('error.html', $Brigada2->что_то_другое());
}
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2