как отобразить одну строку базы данных после нажатия на строку из повторяющегося списка в php?

#php #mysql #database #post #get

#php #mysql #База данных #Публикация #получить

Вопрос:

У меня есть оператор if, который перебирает все параметры заголовка, и все они являются ссылкой на одну и ту же страницу. Идея заключается в том, что в зависимости от того, какой вариант заголовка нажат на связанной странице, заголовок будет отображаться в тегах h3.

 $sql = "SELECT * FROM posts";
        $result = mysqli_query($conn, $sql);
        $queryResults = mysqli_num_rows($result);
    
    if ($queryResults > 0) {
      while ($row = mysqli_fetch_assoc($result)){
        $item =$row['title'];
              echo "<div>
                  <a href='pamp;fproject.php' name='project'>
                  <p>".$item."</p>
                  </a>
                  </div>";
      }
  }
}
if(isset($_POST['project'])){
  $id = (isset($_POST['id'])) ? intval($_POST['id']): null;
  echo "<br>".$id;
}
?>
  

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

Страница, связанная с:

 <?php
include 'header1.php';
$sql = "SELECT * FROM posts";
$result = mysqli_query($conn, $sql);
$queryResults = mysqli_num_rows($result);




if ($queryResults > 0) {
while ($row = mysqli_fetch_assoc($result)){
    for ($i = 0; $i < $queryResults; $i  ) {
        $item = $row['title'];
      echo "<div>
          <a href='' name='project'>
          <p>".$item."</p>
          </a>
          </div>";
          
    }
}
}
if(isset($_POST['project'])){
    $id = (isset($_POST['id'])) ? intval($_POST['id']): null;
    echo "<br>".$id;
}

?>
  

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

1. Передайте идентификатор строки в качестве параметра URL. <a href="pamp;fproject.php?id=' . $row['id'] . '" . Затем на следующей странице найдите конкретную строку, используя этот параметр в WHERE предложении.

2. Параметры URL отображаются в $_GET, а не в $ _POST. Кроме того, используйте параметризованный запрос при использовании этого параметра в вашем WHERE предложении. В противном случае вы рискуете внедрением SQL и гневом сообщества SO (что хуже, чем внедрение SQL IMO).

3. Также обратите внимание, что строки в таблице RDBMS представляют собой неупорядоченные наборы. Если вам нужны строки в порядке, вы должны включить предложение ORDER BY (и / или манипулировать результирующим массивом в коде вашего приложения).

Ответ №1:

Вы можете легко сделать это, передав идентификатор записи в GET. Что вы хотите сделать, это поместить в href свою ссылку, за которой project.php следует вопросительный знак с идентификатором записи, вот так: 'project.php?id='" . $row["id"] . " , а затем на странице, на которую дана ссылка, вы можете получить доступ к этой переменной, выполнив postId = $_GET["id"] SQL-запрос по этому идентификатору

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

1. Я не уверен, как выполнить SQL-запрос для этого идентификатора. Я пытался выполнить $ sql = «SELECT * FROM posts WHERE id»; а затем создать переменную $ postID = $ _GET [‘id’]; и повторить эту переменную, но она не может найти идентификатор.

2. Когда вы повторяете идентификатор, вы видите его в строке ссылок? Нравится project.php?id= 10