MySQL - Выбрать значения строки из идентификатора URL - PullRequest
0 голосов
/ 08 марта 2019

Я создал таблицу, которая обновляется через форму, и каждой строке присваивается определенный номер.

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

Если я сделаю $sql = "SELECT * FROM clients WHERE nif_id='114522';"; - где nif_id - назначенный номер - я получу значения для этого номера, но мне нужно, чтобы он менялся с каждым номером в таблице.

Есть идеи?

UPDATE

Это код таблицы:

<div class="card card-body">
        <table class="table">
          <thead>
              <tr>
                  <th>NIF</th>
                  <th>Nome</th>
                  <th>Apelido</th>
                  <th>Telemóvel</th>
                  <th>E-mail</th>
              </tr>
          </thead>
          <tbody>
        <?php
          include_once '../includes/db.inc.php';
          $sql = "SELECT * FROM clients ORDER BY nif_id ASC;";
          $result = mysqli_query($conn, $sql);
          $resultCheck = mysqli_num_rows($result);

          if ($resultCheck > 0) {
            while ($row = mysqli_fetch_assoc($result)) {
              $first = $row["prm_nome"];
              $last = $row["apelido"];
              $phone = $row['nmr_tlm'];
              $email = $row['mail'];
              $nif = $row['nif_id'];

              echo '<tr>';
                      echo '<td>'.$nif.'</td>';
                      echo '<td>'.$first.'</td>';
                      echo '<td>'.$last.'</td>';
                      echo '<td>'.$phone.'</td>';
                      echo '<td>'.$email.'</td>';
                      echo '</tr>';
            }
          }
         ?>
       </tbody>
       </table>
     </div>

Ответы [ 2 ]

1 голос
/ 08 марта 2019

Вы можете использовать параметры запроса получения.

Например: www.myapp.com/table?id=3920393

добавить функциональность в ваш PHP-файл следующим образом

if(isset($_GET["id"])){ 
   $id = $_GET["id"];
   $sql = "SELECT * FROM clients WHERE nif_id='".$id."';";

  //make db call & display HTML
}

Это очень простая реализация, которая не реализует никакой защиты или безопасности SQL-инъекций.Это был скорее концептуальный ответ о том, как вы можете решить вашу проблему.

0 голосов
/ 08 марта 2019

Это довольно распространенный сценарий для веб-систем.

<div class="card card-body">
    <table class="table">
      <thead>
          <tr>
              <th>NIF</th>
              <th>Nome</th>
              <th>Apelido</th>
              <th>Telemóvel</th>
              <th>E-mail</th>
          </tr>
      </thead>
      <tbody>
    <?php
      include_once '../includes/db.inc.php';
      $sql = "SELECT * FROM clients ORDER BY nif_id ASC;";
      $result = mysqli_query($conn, $sql);
      $resultCheck = mysqli_num_rows($result);

      if ($resultCheck > 0) {
        while ($row = mysqli_fetch_assoc($result)) {
          $first = $row["prm_nome"];
          $last = $row["apelido"];
          $phone = $row['nmr_tlm'];
          $email = $row['mail'];
          $nif = $row['nif_id'];

          echo '<tr>';
                  echo '<td><a href="detail.php?nifid=' . $nif . '">'.$nif.'</a></td>';
                  echo '<td>'.$first.'</td>';
                  echo '<td>'.$last.'</td>';
                  echo '<td>'.$phone.'</td>';
                  echo '<td>'.$email.'</td>';
                  echo '</tr>';
        }
      }
     ?>
   </tbody>
   </table>
 </div>

, где detail.php - это еще одна страница для запроса конкретной информации о запросе nifid.

Какнапоминание, если тип данных столбца - INT, нет необходимости использовать одинарные кавычки, чтобы заключить значение в инструкцию SQL.

Sample detail.php:

<?php
if(!isset($_GET['nifid']) || (int)$_GET['nifid'] <= 0) {
    // Invalid or missing NIFID
    header('Location: table.php');
}
include_once '../includes/db.inc.php';
$id = (int)$_GET['nifid'];
$sql = "SELECT * FROM clients WHERE nif_id=$id";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_assoc($result);

// TODO: display the result in whatever way you like
?>
...