Отображение полей базы данных с некоторыми условиями - PullRequest
0 голосов
/ 03 марта 2020

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

c_details. php

<?php
session_start();
include_once("connect.php");
$query="SELECT * FROM  sub_details";
$result=mysqli_query($conn,$query);
?>



<table align="center">     
    <h3 style="color: black; font-weight: bold; text-align: center;"> 
    Subscription details</h3><br>
    <tr>            
      <th style="text-align: center;">Id</th>
      <th style="text-align: center;">Name</th>
      <th style="text-align: center; width: 900px">Newspaper</th>
      <th style="text-align: center;">Duration</th>
      <th style="text-align: center;">Price</th>
      <th style="text-align: center; width: 800px">Subscription date</th>
      <th style="text-align: center;">Remaining Days</th>
      <th style="text-align: center;">Bill</th>
    </tr>
    <?php while($rows=mysqli_fetch_assoc($result)) {
      ?>


      <tr>
        <td><?php echo $rows['id']; ?></td>
        <td><?php echo $rows['name']; ?></td>
        <td><?php echo $rows['newspaper']; ?></td>
        <td><?php echo $rows['duration']; ?></td>
        <td><?php echo $rows['price']; ?></td>
        <td><?php echo $rows['sdate']; ?></td>
        <?php  echo var_dump($result->fetch_all(MYSQLI_ASSOC));
        $date1=date_create();
        $date2=date_create($rows['edate']);
        $interval=date_diff($date2,$date1)->format("%a days");
         ?>
         <td><?php echo $interval; ?></td>
         <td>
     <form action="invoice.php" method="GET">   
     <?php $invoiceId = $rows['name']; ?>  
   <button type="submit" onclick= "window.open('invoice.php?name= '<?php echo  
   $rows['name']; ?>)" class="btn btn-primary btn-lg" value="submit" >
   View bill</button></td>
      </form>                                                               
      </tr>
      <?php } ?>
   </table>

накладная. php

<?php
include_once("connect.php");   
$invoiceId = isset($_GET['name']) ? $_GET['name'] : null;
if($invoiceId) {
    $query = "SELECT * FROM  sub_details WHERE name = ? limit 1";
    $result = mysqli_query($conn,$query);
?>  

    <?php while($rows=mysqli_fetch_assoc($result)) {
              ?>
         <form style="text-align: left;margin-left: 30px" class="register-form" id="register-form">
        <div class="form-group"> Bill no: &nbsp;&nbsp;&nbsp;&nbsp; <input type="text" name="id" value="<?php echo $rows['id']; ?>"></div><br>
        <div class="form-group">Name:  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input type="text" name="name" value="<?php echo $rows['name']; ?>"></div><br>
        <div class="form-group">Address: &nbsp; <input type="text" name="address" value="<?php echo $rows['address']; ?>"></div><br><br>
        </form>
         </th>
         </tr>

         <td>
         <table cellpadding="5px" cellspacing="6px" style="width: 75%; border-radius:20px;">
         <tr>
            <th>Newspaper</th>
            <th >Duration</th>  
            <th >Price</th>             
         </tr>

        <tr>
            <td ><?php echo $rows['newspaper']; ?></td>
            <td><?php echo $rows['duration']; ?></td>       
            <td><?php echo $rows['price']; ?></td>

        </tr>

        <tr>
            <td>DELIVERY CHARGES</td>
            <td colspan="3" style="padding-right:60px;text-align: right;">50</td>
        </tr>

        <tr>
            <th>Total</th>         
             <?php
             $t_price=$rows['price']+ 50; ?>
         <th colspan="3" style="text-align: right;padding-right: 55px"><?php echo $t_price; ?></th>
        </tr>

        <tr>
            <th colspan="4" >
                <br><br><br><br><br><br><br>

            </th>
        </tr>
        </table>
        </td>   


         <tr>
            <th colspan="4" style="border-top-color: #ffff4d">
        <p style="text-align: left;">Note: Clients are requested to pay the bill before 5th of every month.</p> 
            </th>
          </tr>
          <?php } ?>
        </table>

Скриншоты базы данных

Newspaper details

1 Ответ

2 голосов
/ 03 марта 2020

Во-первых, вы должны передать идентификатор счета-фактуры для каждой записи в c_details.php, чтобы вы могли идентифицировать их позже:

<button type="submit" onclick= "window.open('invoice.php?id='<?php echo $rows['id']; ?>)" class="btn btn-primary btn-lg" value="submit" >View bill</button>

Он будет выдавать URL-адреса, такие как invoice.php?id=<id>, где <id> - это Идентификатор для каждой записи в базе данных. Так, например, запись с идентификатором 102 будет invoice.php?id=102.

При invoice.php, вы можете получить идентификатор с помощью $_GET['id']. Вы должны настроить свой запрос для получения данных для данного счета:

$invoiceId = isset($_GET['id']) ? $_GET['id'] : null;
if($invoiceId) {
    $query = $conn->prepare("SELECT * FROM sub_details, signup_c WHERE id = ? limit 1";
    $query->bind_param('s', $invoiceId);
    $query->execute();
    $result = $query->get_result();
}

Если вы используете PHP 7.0 или более позднюю версию, вы можете упростить свой код, используя оператор объединения нулей :

$invoiceId = $_GET['id'] ?? null;

I Настоятельно Рекомендую вам узнать , как предотвратить SQL инъекции в PHP.

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