Переключение между базами данных с помощью ajax php - PullRequest
0 голосов
/ 25 ноября 2018

Я пытаюсь переключаться между подключениями к базам данных (просто меняю имя хоста) в зависимости от выбранного имени БД.

Я получил <a> тегов со значениями.

<div class="user-menu dropdown-menu">
    <a class="nav-link" href="db" id="db_one"><i class="fa fa-database"></i> DB 1</a>
    <a class="nav-link" href="db" id="db_two"><i class="fa fa-database"></i> DB 2</a>   
</div>

Теперь я проверяюкакой <a> щелкается, затем принимает значение db_one/db_two и отправляет его через ajax в мой файл подключения php.

Где моя ошибка?У меня все еще есть соединение по умолчанию

$("a[href='db']").click(function(e) {
  e.preventDefault();
  var hostname = e.target.id;
  console.log(hostname);
  $.ajax({
    url: 'connection.php',
    data: hostname,
    type: "post",
    success: function() {
      alert('done');
      console.log('this is: ' + hostname);
      location.reload();
    },
  });
});

Я перезагружаю страницу, чтобы "переподключиться" с помощью базы данных.

И, наконец, мое php-соединение.

<?php

    $host = $_POST['hostname'];
    $hostname = $host;

    switch ($hostname) {
      case "db_one":
        $conn = mysqli_connect("$hostname", "my_user", "my_password", "my_db");
        if($conn === false){
            die("ERROR: Could not connect. " . mysqli_connect_error());
        } else {
          echo "<script>console.log('connected');</script>";
        }
        break;
      case "db_two":
        $conn = mysqli_connect("$hostname", "my_user", "my_password", "my_db");
        if($conn === false){

            die("ERROR: Could not connect. " . mysqli_connect_error());

        } else {
          echo "<script>console.log('Polaczenie z baza nawiazane');</script>";
          echo "<script>console.log('connected');</script>";

        }
        break;
      default:
        $conn = mysqli_connect("localhost", "my_user", "my_password", "my_db");
        if($conn === false){
            die("ERROR: Could not connect. " . mysqli_connect_error());

        } else {
          echo "<script>console.log('default connect');</script>";

        }
    }
?>

Ответы [ 3 ]

0 голосов
/ 25 ноября 2018

Используйте этот код для отправки запроса AJAX:

$("a[href='db']").click(function(e) {
  e.preventDefault();
  var hostname = this.id;
  console.log(hostname);
  $.ajax({
    url: 'connection.php',
    data: {'hostname': hostname},
    type: "post",
    success: function() {
      alert('done');
      console.log('this is: ' + hostname);
      location.reload();
    },
  });
});

Надеюсь, что это решит проблему

0 голосов
/ 25 ноября 2018

теперь используйте этот полный код

<?php
if ((function_exists('session_status') //start session if not started
  && session_status() !== PHP_SESSION_ACTIVE) || !session_id()) {
 $lifetime=strtotime('+7 days', 0);
  session_set_cookie_params($lifetime);
  session_start();
} if(isset($_POST['hostname'])){
    $_SESSION['hostname']=$_POST['hostname'];
}  $hostname =$_SESSION['hostname'];

    switch ($hostname) {
      case "db_one":
        $conn = mysqli_connect("$hostname", "my_user", "my_password", "my_db");
        if($conn === false){
            die("ERROR: Could not connect. " . mysqli_connect_error());
        } else {
          echo "<script>console.log('connected');</script>";
        }
        break;
      case "db_two":
        $conn = mysqli_connect("$hostname", "my_user", "my_password", "my_db");
        if($conn === false){

            die("ERROR: Could not connect. " . mysqli_connect_error());

        } else {
          echo "<script>console.log('Polaczenie z baza nawiazane');</script>";
          echo "<script>console.log('connected');</script>";

        }
        break;
      default:
        $conn = mysqli_connect("localhost", "my_user", "my_password", "my_db");
        if($conn === false){
            die("ERROR: Could not connect. " . mysqli_connect_error());

        } else {
          echo "<script>console.log('default connect');</script>";

        }
    }
?>
0 голосов
/ 25 ноября 2018

Вы не отправляете пару ключ / значение .... только значение.

Изменить

data: hostname

На

data: {hostname:hostname}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...