Сейчас я пытаюсь выяснить, как мне читать все записи из определенной таблицы базы данных и распечатывать их на веб-сайте. У меня есть раздел «новостной ленты» на моем сайте. И я хочу показать все новости, заказанные новейшими. Моя проблема не в том, как подключиться и выбрать из базы данных и сохранить данные в массиве.
Моя проблема в том, где это сделать и как? В том же файле, где показываются новости, или во внешнем файле, который будет включен? Как мне это сделать во внешнем файле, если так?
У меня есть файл с именем ‘functions.php’, который включен в каждую страницу. Это выглядит так:
<?php
if(!isset($_SESSION)){
session_start();
}
function loggedIn(){
if(isset($_SESSION['user_id']) && ($_SESSION['user_id'] != "")){
return true;
}else{
return false;
}
}
if(loggedIn()){
$user_id = $_SESSION['user_id'];
$user_email = $_SESSION['user_email'];
$user_first_name = $_SESSION['user_first_name'];
$user_last_name = $_SESSION['user_last_name'];
$user_newsletter = $_SESSION['user_first_name'];
}
?>
Должно ли это быть здесь, я открываю соединение mysqli и сохраняю данные и как?
mysqli_connect($server, $user_name, $pass_word, $database);
$query = "SELECT * FROM news ORDER BY id";
news_data = mysqli_fetch_array($query);
Я ценю каждый раз, когда кто-то из вас читал это. Веселого Рождества и счастливого Нового года 🙂
Вы можете подключиться и закрыть соединение в php-файле, который вы используете для отображения новостной ленты.
Вы можете сделать цикл foreach следующим образом:
mysqli_connect($server, $user_name, $pass_word, $database);
$query = "SELECT * FROM news ORDER BY id";
//start table here
while($news_data = mysqli_fetch_array($query)){
//create html table content here
}
//close html table and db connection
Еще один метод — сделать отображение и использовать функцию tablemakerFromArray:
mysqli_connect($server, $user_name, $pass_word, $database);
$query = "SELECT * FROM news ORDER BY id";
$table_content_array=array('');
$i++;
while($news_data = mysqli_fetch_array($query)){
$table_conntent_array[$i][your_first_key]=$news_data['table_row_about_this_key'];
.....//other key and rows
......
$i++;
}
tableFromArray(table_content_array);//this func. will make keys of array table titles
public static function tableFromArray($arr){
if(count($arr)==0)
{
return 0;
}
?>
<table border="1"><tr>
<?php foreach ($arr[0] as $key => $value) {?>
<td><?php echo $key; ?></td>
<?php }?>
<tr/>
<?php
$i=0;
foreach ($arr as $item) {?>
<tr/>
<?php foreach ($item as $alan) {?>
<td><?php echo $alan;?></td>
<?php }?>
</tr>
<?php }?>
</table>
<?php }
Это самый простой способ отобразить все данные в таблице с помощью php.
да, вы можете поместить код здесь, в условие If (loggedIn ()).
if(loggedIn()){
$user_id = $_SESSION['user_id'];
$user_email = $_SESSION['user_email'];
$user_first_name = $_SESSION['user_first_name'];
$user_last_name = $_SESSION['user_last_name'];
$user_newsletter = $_SESSION['user_first_name'];
mysqli_connect($server, $user_name, $pass_word, $database);
$query = "SELECT * FROM news ORDER BY id";
news_data = mysqli_fetch_array($query);
}
Конечно, есть намного лучшие способы организовать проект PHP, но для того, что у вас есть, это работает.
Это действительно зависит от вас. Как правило, считается целесообразным группировать аналогичные функции в отдельные файлы / библиотеки. В вашем случае вы можете иметь файл с функциями, связанными с базой данных. Однако я хотел бы предложить, чтобы вы гарантировали, что mysqli_connect вызывается только один раз за запрос, чтобы избежать создания нескольких соединений. Вы можете использовать функцию mysqli_connect в файле, который загружается один раз за запрос, а затем загружать файл функций, когда вам это нужно. Затем просто вызовите функцию для запроса базы данных по мере необходимости. Может случиться, что вы просто захотите подключиться к базе данных, не выполняя запрос, в этом случае отдельная логика подключения сделает ваш проект немного более модульным. Есть лучшие способы справиться с этим, но для небольшого личного проекта такой подход не должен быть проблемой.
Основываясь на вашем другом комментарии, у вас может быть файл, содержащий функцию mysqli_connect (например, mysql_conn.php), и другой, содержащий функции вашего запроса (например, mysql_funcs.php). Вы могли бы либо включить в exp mysql_conn.php, либо иметь файлы, которые используют подключение mysqli, включая скрипт mysql_conn.php с использованием require_once, чтобы гарантировать, что соединение создается только один раз.
Вы должны использовать mysql_query (), чтобы запустить SELECT
И вы должны использовать DESC или ASC с ORDER BY
$query = mysql_query("SELECT * FROM news ORDER BY id DESC");
news_data = mysqli_fetch_array($query);