Выбор базы данных MySQL на основе выбора из выпадающего списка - PullRequest
0 голосов
/ 19 февраля 2019

Я работаю над веб-приложением системы колледжа.Я хочу добавить опцию для выбора сессии, например (2017-2018, 2018-2019, 2019-2020, 2020-2021 и т. Д.).В любое время администратор должен иметь возможность выбрать сеанс (например, 2017-2018) для загрузки любого предыдущего сеанса, и должна быть загружена соответствующая база данных из баз данных.По умолчанию текущий сеанс должен быть загружен при запуске.Я использую mysql.

$conn = mysqli_connect('localhost', 'root', '', 'db2018');

загружает базу данных сессии 2018-2019.Приведенный выше код находится в php-файле, который вызывается с помощью оператора include.

index.php содержит информацию для входа в систему, а затем main.php загружается в случае успешного входа

main.php

session_start();

include 'dbh.inc.php';

//rest of the code

dbh.inc.php

$conn = mysqli_connect('localhost', 'root', '', 'db2018');

if (!$conn) {
    die("connection failed". mysql_connect_error());
}               

Я хочу, чтобы базой данных по умолчанию была текущая сессия (на данный момент db2018, db2019 для сессии следующего года, начинающейся в марте 2019), которую администратор решает, какая из нихбыть, и если выбирается другой сеанс, то база данных этого сеанса должна быть загружена в dbh.inc.php

Ответы [ 4 ]

0 голосов
/ 19 февраля 2019

Я бы хотел иметь массив диапазонов года на начальной странице, где администратору / пользователю нужно выбрать год, а затем заполнить раскрывающийся список лет, когда пользователь, выбравший год, просто сделает ajax-вызов в файл базы данных.

Main.php

<?php


    $years = ['2017-2018', '2018-2019', '2019-2020', '2020-2021'];

?>

    <select name="year" id="year">
        <option value="0">Please Select Year</option>
        <?php

            foreach($years as $key=>$year){

                echo "<option value=\"$year\">$year</option>";
            }

        ?>
    </select>




    <script type="text/javascript">

        $('document').ready(function(){

            $('#year').on('change',function(){

                    var year = $(this).val();

                    $.ajax({
                      type : "POST",
                      data : {year:year},
                      url   : "dbh.inc.php",
                      dataType : "json",
                      encode   : true,
                      success : function(response){

                            if(response == "success"){

                                alert('database selected success');

                                //redirect to desired page
                            }else{

                                alert(response);
                            }
                      }
                    });
            });
        });
    </script>

Затем

dbh.inc.php

<?php

    $year = isset($_POST['year']) ? $_POST['year']: null;


    switch($year){


        case '2017-2018':

        $_SESSION['db'] = 'that year db';
        break;

        case '2018-2019':

        $_SESSION['db'] = 'that year database';

        break;

        case '2019-2020':
        $_SESSION['db'] = 'that year database';
        break;

    }

    $conn = mysqli_connect('localhost', 'root', '', $_SESSION['db']);

if (!$conn) {
    echo json_encode("connection failed". mysql_connect_error());
}else{

    echo json_encode("success");
}           

?>
0 голосов
/ 19 февраля 2019

Вы можете создать 2 функции: сначала одну для первоначального подключения, а другую для повторного подключения с другим именем БД в зависимости от того, какой пользователь выбрал.

<?php
  $dbName = date('Y');
  function connectDB(){
    $conn = mysqli_connect('localhost', 'root', '', $dbName);
  }

  function reconnectDB($dbName){
    mysqli_close($conn);
    $conn = mysqli_connect('localhost', 'root', '', $dbName);
  }
?>

Поэтому, когда пользователь меняет дату школьной сессии, выМожно вызвать функцию ReconnectDB с выбранным пользователем годом.

0 голосов
/ 19 февраля 2019

Форма HTML:

<form>
<select name="year">
<option value="db2018">2017-2018</option>
<option value="db2019">2018-2019</option>
<option value="db2020">2019-2020</option>
</select>
<input type="submit">
</form>

Разбор PHP и настройка SESSION для использования в соединении:

<?php
//start session
session_start();

//if session is not set, set the default to 'db2018'
if(!isset($_SESSION['db_name']) || $_SESSION['db_name']==""){
    $_SESSION['db_name'] = 'db2018';
}

//if the form is posted update the session
if(isset($_POST['year']) && $_POST['year']!=""){
    $_SESSION['db_name'] = $_POST['year'];
}

//open connection using session variable
$conn = mysqli_connect('localhost', 'root', '', $_SESSION['db_name']);
?>
0 голосов
/ 19 февраля 2019

<select name="db_session">
<option value="db2018">2017-2018</option>
<option value="db2019">2018-2019</option>
<option value="db2020">2019-2020</option>
</select>

при выборе раскрывающегося списка установите выбранное имя БД в переменной сеанса и перепишите код ниже, чтобы использовать выбранное имя базы данных, которое находится в сеансе

$conn = mysqli_connect('localhost', 'root', '', 'db2018');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...