Как удалить дубликат выпадающего списка

#javascript #php #ajax

#javascript #php #ajax

Вопрос:

Я довольно новичок в мире PHP PDO, теперь я уже знаю, что подключение к БД должно быть в другом файле PHP, но тогда остальное не работает : (. Я пытался весь день, я знаю, что я так устал от этого, что я должен спросить здесь. Как мне избавиться от дубликата? Я думаю, что дубликат существует в результате того, что соединение с БД находится в той же папке, поскольку это не localhost, а веб-сайт. Итак, как мне записать файлы в несколько файлов?

В Display.php файл, у меня есть выпадающий список с HTML, за которым следует javascript, который должен запускать таблицу при выборе значения из выпадающего списка. Action.php это место, где создается таблица, и я попытался создать отдельный файл для подключения к БД, но тогда я не могу объединить значение javascript «uid» с Action.php досье.

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

Скажите мне, могу ли я добавить больше информации, чтобы помочь.

С наилучшими пожеланиями

Это изображение дубликата, когда я выбираю значение из выпадающего списка, оно дублирует выпадающий список и добавляет его ниже. Он предназначен только для отображения таблицы ниже. дублировать

Display.php

     <?php
    
    ini_set("display_errors", "On");
    error_reporting(E_ALL);
    
    $host='database.*****.us-east.rds.amazonaws.com';
    $db = '*****';
    $port = 5432;
    $username = '*****';
    $password = '*****';
    
    try {
      $conn = new PDO("pgsql:host=$host;port=$port;dbname=$db;user=$username;password=$password");
    } catch(PDOException $e) {
      echo "Error: " . $e->getMessage();
    }
    
    $sql ="select * from public.category";
    //Prepare the select statement.
    $stmt = $conn->prepare($sql);
    //Execute the statement.
    $stmt->execute();
    //Retrieve the rows using fetchAll.
    $users = $stmt->fetchAll();  
    ?>
    
// show menu dropdown
    <!Doctype html>
    <html lang="en">
    <head>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"></script>
    </head>
      <body>
        <div class="container" style="margin-top: 50px;">
          <h2 class="text-center">Væg en kategori </h2>
          <div class="row">
            <div class="col-md-4"></div>  
              <div class="col-md-4" style="margin-top:20px; margin-bottom:20px;">
                <form id="submitForm">
                  <div class="form-group">
                    <select class="form-control Investment" name="Investment" id="Investment">
                      <option value="">Vælg Kategori</option>
                          <?php foreach($users as $user): ?>
                            <option value="<?= $user['id']; ?>"><?= $user['name']; ?></option>
                          <?php endforeach; ?>
                    </select>
                  </div>
                </form>
              </div>
            </div>
            <div class="col-md-12">
              <div id="show-invest">
              </div>
            </div>    
          </div>
      </body>
    </html>
    
    <!---jQuery ajax load rcords using select box --->
    <script type="text/javascript">
      $(document).ready(function(){
          $(".Investment").on("change", function(){
            var InvestmentName = $(this).val();
            if (InvestmentName !== "") {
              $.ajax({
                url : "Action.php",
                type:"POST",
                cache:false,
                data:{InvestmentName:InvestmentName},
                success:function(data){
                  $("#show-invest").html(data);
                }
              });
            }else{
              $("#show-invest").html(" ");
            }
          })
      });
    </script>
 

Action.php

 <?php

    // include database connection file
    include_once "testSide.php";
   // include_once "DBController.php";
    if(isset($_POST['InvestmentName']))
{
    $uid = $_POST['InvestmentName'];
}
    
    // load records using select box jquery ajax in PHP
    $qu = "select Prod.tocon as name, one.con as yield_one, five.con as yield_two, ten.con as yield_three, twenty.con as yield_four, one.st as st_one, five.st as st_two, ten.st as st_three, twenty.st as st_four, one.top as top_one, five.top as top_two, ten.top as top_three, twenty.top as top_four;";


    $result = $conn->query($qu);
    if (!$result) {
        trigger_error('Invalid query:' . $conn->error);
    }
    $output = '';
    if ($result->rowCount() > 0) {
        $output .= "<table class='table table-hover table-border'>
                        <thead>
                          <tr>
                            <th>Name</th>
                            <th>Afkast sidste år</th>
                            <th>Genst sidste 5 år</th>
                            <th>Genst stidste 10 år</th>
                            <th>Genst sidste 20 år</th>
                            <th>SR sidste år</th>
                            <th>SR 5 år</th>
                            <th>SR 10 år</th>
                            <th>SR 20 år</th>
                            <th>DD sidste år</th>
                            <th>DD 5 år</th>
                            <th>DD 10 år</th>
                            <th>DD 20 år</th>
                          </tr>
                        </thead>";
    while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
        $output .= "<tbody>
        <tr>
          <td>{$row["name"]}</td>
          <td>{$row["yield_one"]}</td>
          <td>{$row["yield_two"]}</td>
          <td>{$row["yield_three"]}</td>
          <td>{$row["yield_four"]}</td>
          <td>{$row["st_one"]}</td>
          <td>{$row["st_two"]}</td>
          <td>{$row["st_three"]}</td>
          <td>{$row["st_four"]}</td>
          <td>{$row["top_one"]}</td>
          <td>{$row["top_two"]}</td>
          <td>{$row["top_three"]}</td>
          <td>{$row["top_four"]}</td>
        </tr>";
      
        }                       
        "</tbody>";               
        $output .= "</tbody></table>";
        echo $output;
    }else{
        echo "No records found";
    }
?>
 

Комментарии:

1. проверьте свой код еще раз, потому что я тестировал здесь, и он1 не дублирует select и, похоже, немного отличается от изображения.

2. Чтобы получить каждую запись только один раз, найдите SELECT DISTINCT .

3. я думаю, что он дублируется, поскольку база данных находится в одном файле

4. Все, что добавляется на вашу страницу, выполняется с помощью javascript , но не с помощью базы данных, pdo или PHP

5. Привет, сделайте console.log(data) внутри функции успеха ajax, посмотрите, что она возвращает.

Ответ №1:

Я исправил это, переместив соединитель базы данных в изолированный файл. Таким образом, он не вызывал его самостоятельно в том же файле PHP. Теперь я вызываю базу данных из других файлов с помощью include_once