Получить параметр, тянущий тот же идентификатор - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть результаты поиска слева.При нажатии на результат его нужно загрузить в div справа - без обновления или загрузки на новой странице.Поиск дает три результата поиска и имеет нумерацию страниц.Независимо от того, какой результат поиска я нажимаю, загружается один и тот же идентификатор.Кто-нибудь может увидеть, где я иду не так?

index.php

    //get rows
    $query = $db->query("SELECT * FROM posts ORDER BY id DESC LIMIT $limit");

    if($query->num_rows > 0){ ?>
        <div class="posts_list">
        <?php
            while($row = $query->fetch_assoc()){ 
                $postID = $row['id'];
        ?>
            <div class="list_item"><h2><?php echo $row["title"] ?></h2><button type="button" onclick="loadDoc()" >View</button></div>
            <div class="item_viewer"><p id="demo"></p></div>
                <script type="text/javascript">
                function loadDoc() {
                  var xhttp = new XMLHttpRequest();
                  xhttp.onreadystatechange = function() {
                    if (this.readyState == 4 && this.status == 200) {
                      document.getElementById("demo").innerHTML = this.responseText;
                    }
                  };
                  xhttp.open("GET", "file/file.php?id=<?php echo $row['id'] ?>", true);
                  xhttp.send();
                }
                </script>
        <?php } ?>
        </div>
        <?php echo $pagination->createLinks(); ?>
    <?php } ?>

file.php

<body>
  <div class="container">
    <div class="box">
<?PHP
//create connection
$connect = new mysqli($host, $dbUsername, $dbPassword, $dbname);
if (mysqli_connect_error()) {
die('Connect Error('. mysqli_connect_errno().')'. mysqli_connect_error());
} else {
$id = $_GET['id'];
$id = mysqli_real_escape_string($connect,$id);
$query = "SELECT * FROM `posts` WHERE `id`='" . $id . "'";
$result = mysqli_query($connect,$query);
while($row = mysqli_fetch_array($result)) {
echo "Company: <b>" .$row['title']. "</b>";
echo "<br/>";
echo "ID: <b>" .$row['id']. "</b>";
?>
<a href="<?PHP echo $row[''];}}?>"><button class="btn success">View</button></a>    
    <a href="" ><button class="btn default">Back</button></a>  
        </div>
    </div>
</body>

1 Ответ

0 голосов
/ 26 сентября 2019

Ваш код создает несколько loadDoc функций внутри цикла, поэтому каждая кнопка использует одну и ту же функцию (статически размещенный в ней один и тот же rowId).

Было бы лучше, если бы у вас была только одна функцияи передайте идентификатор в качестве параметра следующим образом:

<? 
$query = $db->query("SELECT * FROM posts ORDER BY id DESC LIMIT $limit");

if($query->num_rows > 0){ ?>
    <div class="posts_list">
    <?php
        while($row = $query->fetch_assoc()){ 
            $postID = $row['id'];
    ?>
        <div class="list_item">
            <h2><?php echo $row["title"] ?></h2>
            <!-- Pass Id into the function -->
            <button type="button" onclick="loadDoc(<?php echo $row['id'] ?>)" >View</button> 
        </div>
        <div class="item_viewer"><p id="demo"></p></div>
    <?php } ?>
    </div>
    <script type="text/javascript"> // Move JavaScript function out of loop, so that it only exists once in the document
        function loadDoc(rowId) { // Pass rowId as argument
            var xhttp = new XMLHttpRequest();
            xhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                document.getElementById("demo").innerHTML = this.responseText;
            }
            };
            xhttp.open("GET", "file/file.php?id=" + rowId, true);
            xhttp.send();
        }
    </script>
    <?php echo $pagination->createLinks(); ?>
<?php } ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...