Как показать конкретный c div на основе значения базы данных? - PullRequest
0 голосов
/ 30 мая 2020

Я новичок в PHP и MySQL. Я хочу иметь простой веб-сайт, на котором пользователи могут входить в простую панель управления. (Никто не может зарегистрироваться на этом веб-сайте, он предназначен только для моих клиентов, и я предоставил им данные для входа в систему. Да, я знаю, что пароль должен храниться в хеш-коде, но в этом сценарии мне это не нужно.)

На панели управления я хочу показать конкретный c div на основе значения базы данных. Например, если строка workout_1 в таблице users равна true, я хочу показать div workout_1 et c. Если значение равно false, div должен быть скрыт.

На основании некоторых руководств я понял, как настроить простой процесс входа / выхода. Теперь я застрял в том, как настроить эту процедуру отображения / скрытия div. Я знаю, что мне нужно каким-то образом получить запрос, но, как я уже сказал, я новичок в PHP и MySQL, и я был бы очень признателен за небольшой совет от вас.

Это аутентификация. php

<?php
session_start();

$DATABASE_HOST = '**';
$DATABASE_USER = '**';
$DATABASE_PASS = '**';
$DATABASE_NAME = 'tablename';

$con = mysqli_connect($DATABASE_HOST, $DATABASE_USER, $DATABASE_PASS, $DATABASE_NAME);
if ( mysqli_connect_errno() ) {

    exit('Error: ' . mysqli_connect_error());
}

if ( !isset($_POST['username'], $_POST['password']) ) {

    exit('Please fill both the username and password fields!');
}

if ($stmt = $con->prepare('SELECT id, password FROM users WHERE username = ?')) {

    $stmt->bind_param('s', $_POST['username']);
    $stmt->execute();

    $stmt->store_result();

    if ($stmt->num_rows > 0) {
        $stmt->bind_result($id, $password);
        $stmt->fetch();

        if ($_POST['password'] === $password) {

            session_regenerate_id();
            $_SESSION['loggedin'] = TRUE;
            $_SESSION['name'] = $_POST['username'];
            $_SESSION['id'] = $id;
            header('Location: ../dashboard.php');
        } else {
            echo 'Incorrect password!';
        }
    } else {
        echo 'Incorrect username!';
    }

    $stmt->close();
}

Это панель управления. php

<?php

session_start();

if (!isset($_SESSION['loggedin'])) {
    header('Location: index.php');
    exit;
}
?>

А это HTML Я хочу показать / скрыть на основе запроса MySQL.

<div id="workout_1">There are some notes for users they attended the 1st workout.</div>
<div id="workout_2">There are some notes for users they attended the 2nd workout.</div>
<div id="workout_3">There are some notes for users they attended the 3rd workout.</div>

1 Ответ

0 голосов
/ 30 мая 2020

Это самые основы MySQL, и мой первый совет - просмотреть другие похожие вопросы по SO и прочитать о подключении MYSQL к PHP.

Вам нужно немного изменить свой запрос и взять также workout_1 значение от пользователей таблицы.

$stmt = $con->prepare('SELECT id, password, workout_1 password FROM users WHERE username = ?')

И привязать значение этого параметра к переменной.

$stmt->bind_result($id, $password, $workout_1);

Когда у вас есть подходящая переменная, вы можете просто сделать условную в соответствующем месте вашего кода.

<?
if((bool)$workout_1) {
    echo'<div id="workout_1">There are some notes for users they attended the 1st workout.</div>';
}
?>

<div id="workout_2">There are some notes for users they attended the 2nd workout.</div>
<div id="workout_3">There are some notes for users they attended the 3rd workout.</div>

Логические значения (true или false) в базе данных должны храниться в столбцах с типом Integer (1 - для истины, 0 - для false). Также вам следует избегать смешивания кода PHP со слоем просмотра (HTML), но для начала все в порядке.

EDIT: Второй подход. Включить в личный кабинет. php.

$DATABASE_HOST = '**';
$DATABASE_USER = '**';
$DATABASE_PASS = '**';
$DATABASE_NAME = 'tablename';

$con = mysqli_connect($DATABASE_HOST, $DATABASE_USER, $DATABASE_PASS, $DATABASE_NAME);
if ( mysqli_connect_errno() ) {

    exit('Error: ' . mysqli_connect_error());
}
if ($stmt = $con->prepare('SELECT workout_1 FROM users WHERE id = ?')) {

    $stmt->bind_param('i', $_SESSION['id']);
    $stmt->execute();

    $stmt->store_result();

    if ($stmt->num_rows > 0) {
        $stmt->bind_result($workout_1);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...