1

Тема: отримання даних БД

Усім привіт, мене інтересує чи можливо якимось чином зменшити або по іншому переписати цей код? Можливо з 8 версією PHP це можливо? або хтось знає інші методи як отримати і показати дані з БД або як можна покращити цей код, будь яка інформація по цій темі буде дуже корисна.

<?php
require_once 'connection.php'; // підключення

$link = mysqli_connect($host, $user, $password, $database)
or die("Помилка " . mysqli_error($link)); // підключається до сервера

$query ="SELECT * FROM users"; //Виконуємо операції з БД

$result = mysqli_query($link, $query) or die("Помилка " . mysqli_error($link));
if($result)
{
    $rows = mysqli_num_rows($result); //Кількість рядків

    echo "<table><tr><th>id</th><th>name</th><th>email</th><th>birth</th><th>bio</th><th>pass</th></tr>";
    for ($i = 0 ; $i < $rows ; ++$i)
    {
        $row = mysqli_fetch_row($result);
        echo "<tr>";
        for ($j = 0 ; $j < 6 ; ++$j) echo "<td>$row[$j]</td>";
        echo "</tr>";
    }
    echo "</table>";

    mysqli_free_result($result); //очищаємо результат
}

mysqli_close($link);
?>

2

Re: отримання даних БД

Читайте код якихось малих CMS. Наприклад FluxBB.
Коли вивчите як воно працює, переходьте до Wordpress.

Подякували: Overhand1

3 Востаннє редагувалося Droid 77 (06.01.2021 23:21:34)

Re: отримання даних БД

Чому саме Wordpress?
То взагалі автору теми не надасть роз'яснень.
Краще порекомендувати розібратись з практиками розробки MVC.

Подякували: Overhand1

4

Re: отримання даних БД

Ну можна ще бітрікс.
Тому що на це найбільше вакансій

Подякували: Overhand1

5

Re: отримання даних БД

Так мова не про заробіток та вакансії.
Якщо глянути на код з першого посту, то саме структура Model View Controller приходить на думку.

Подякували: Overhand1

6

Re: отримання даних БД

Droid 77 написав:

Так мова не про заробіток та вакансії.
Якщо глянути на код з першого посту, то саме структура Model View Controller приходить на думку.

Абсолютно вірно, заробіток і вакансії це добре але треба розібратися спочатку з різними підходами.

Скажіть мені будь ласка, я вірно зрозумів що MVC це щось на кшталт:
1. HTML форма input (controller) після субміт виконує PHP код
2. PHP код (виконує функції під'єднання до БД та додати/видалити дані з БД) і дальше в кінці під'єднання ще одного коду який виводить все
3. View код

Усе вірно?

7

Re: отримання даних БД

Overhand написав:

Скажіть мені будь ласка, я вірно зрозумів що MVC це щось на кшталт:

Ні.
По-перше, вам слід розібратися із тим, як працює архітектура клієнт-сервер. HTML форма не може виконувати PHP код. Ви або принципово не розумієте, що відбувається, або дуже перекривлено це формулюєте, за межею розуміння.
По-друге, ваш код імперативний. "Піди туди, зроби те, потім поклади сюди". Це нормально, поки у вас менше кількох сотень рядків коду; але якщо їх більше, вам треба створювати певні структури з коду. Хоча б функції та процедури. Але якщо об'єм коду великий - тисячі рядків - це вже теж допомагає погано, потрібне ООП для групування функцій з даними. Коли ж кількість рядків ще більша, примітивний ООП теж починає давати збої і потрібно групувати класи в компоненти. MVC - це можливий підхід до такого групування. Для коду на 10 рядків MVC - очевидна надмірність.

Які у вас проблеми з кодом:
- якщо ви плануєте це розвивати - переходьте на ООП. mysqli дозволяє це зробити практично без збільшення коду, а проблем у майбутньому буде менше.
- or die - дуже поганий метод обробки помилок.
- ви ніде не використовуєте змінну $i; і навіть старий синтаксис PHP дозволяє писати

while ($row = mysqli_fetch_row($result)) { //якщо рядки скінчилися, то повернеться null і станеться вихід із циклу
    //а тут виводите $row
}

- ви однозначно чіпляєтеся до індексів в $row. Якщо хтось колись змінить послідовність стовпчиків (скажімо, додасть новий) - це все завалиться. Якщо так хочете в циклі, то

foreach (array("id","name","email",...) as $fieldname) { //замість ... - ваші поля
    echo "<td>$row[$fieldname]</td>"
}
Подякували: Overhand, leofun012

8

Re: отримання даних БД

koala написав:

HTML форма не може виконувати PHP код. Ви або принципово не розумієте, що відбувається, або дуже перекривлено це формулюєте, за межею розуміння.

Скоріш за все просто криве формулювання з моєї сторони.
Я мав на увазі виконання коду PHP після натискання на ввійти (submit).

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<h3>Ввійти на сайт</h3>
<form action="login.php" method="POST">
    Ваш логін: <input type="text" name="login" /><br><br>
    Ваш пароль: <input type="text" name="password" /><br><br>
    <input type="submit" value="Ввійти">
</form>
</body>
</html>

Тобто після того як ми написали логін і пароль натискаємо ввійти, виконується login.php який у свою чергу має нас з'єднати з БД перевірити логін та пароль і якщо усе успішно ми в теорії маємо зайти під цим логіном на сайт? Чи я абсолютно зрозумів усе не вірно, і це працює зовсім по іншому.

Дуже вдячний за вказані помилки в коді та їх рішення!