2017-11-09 11 views
0

フォーム送信時にデータベースから値を削除し、その下にデータベース内のすべての値を表示するこのフォームがあります。フォーム提出後にフロントエンドテーブルをデータベース値で更新する

フォームの送信後、データテーブル(「remove-table」)は更新されていません。

削除は意図したとおりに行われますが、フォームの送信後にテーブルを自動的に更新するようにしたいと考えています。

<?php session_start(); ?> 
<?php include 'head.php';?> 

<div class="container"> 
    <div class="row"> 
     <div class="col-md-12"> 

     <form method="POST" action="#" class="remove-files-form"> 
      <div class="form-group"> 
       <span>ID (number): </span> 
       <input class="form-control remove-control" id="removeTextField" type="text" size="8" name="product_id" placeholder="Insert ID here f.e. 1" required> 
       <input class="form-control btn btn-primary" id="removeButton" type="submit" value="Remove from database by id"> 
      </div> 
     </form> 

    <?php 
     $mysqli = new mysqli($dbConn, $dbUser, $dbPass, $dbName); 

     if ($mysqli->connect_errno) { 
      printf("Connect failed: %s\n", $mysqli->connect_error); 
      exit(); 
     } 

     $query = "SELECT id, thumbnailUrl, title, folderName, subfolder FROM MOCK_DATA ORDER by ID ASC"; 

     if ($result = $mysqli->query($query)) { 

      echo "<div class='table-overflow-wrap'> 
        <table class='table remove-table'>"; 
      echo "<thead> 
         <tr> 
         <th>ID</th> 
         <th>Image</th> 
         <th>Image title</th> 
         <th>Main directory</th> 
         <th>Sub directory</th> 
         </tr> 
        </thead>"; 

      /* Fetch associative array */ 
      while ($row = $result->fetch_assoc()) { 
       echo "<tr id='$row[id]'>"; 
       echo "<td><strong>$row[id]</strong></td>"; 
       echo "<td> 
         <div class='remove-table-thumb' style=\"background-image: url('$row[thumbnailUrl]') \"> 
         </div> 
         </td>"; 
       echo "<td>$row[title]</td>"; 
       echo "<td>$row[folderName]</td>"; 
       echo "<td>$row[subfolder]</td>"; 
       echo "</tr>"; 
      } 
      echo "</table></div>"; 

      /* Free result set */ 
      $result->free(); 
     } 
    ?> 

     </div><!-- col --> 
    </div><!-- row --> 
</div><!-- container --> 

<?php 
    /* Delete data from database */ 
    /* File removal from directory todo */ 

    $sql = "DELETE FROM MOCK_DATA WHERE id=$_POST[product_id]"; 

    if ($mysqli->query($sql) === TRUE) { 
     echo " 
      <div class='alert alert-success alert-dismissable $_POST[product_id]'> 
       <a href='#' class='close' data-dismiss='alert' aria-label='close'>&times;</a> 
       ID = $_POST[product_id], removed from database! 
      </div>"; 
    } 

    /* Close connection */ 
    $mysqli->close(); 
?> 

<?php include 'footer.php';?> 
+0

キャッシングのために古いバージョンのテーブルを表示しているだけではありませんか?スクリプトはライブデータを表示する必要があるためです。 –

答えて

1

SELECTの前にDELETE部分を入れてください。

<?php 
session_start(); 
include 'head.php'; 

if($_SERVER['REQUEST_METHOD'] == "POST" && $_POST['product_id']) { 
    /* Delete data from database */ 
    /* File removal from directory todo */ 

    $sql = "DELETE FROM MOCK_DATA WHERE id=$_POST[product_id]"; 

    if ($mysqli->query($sql) === TRUE) { 
     echo " 
     <div class='alert alert-success alert-dismissable $_POST[product_id]'> 
      <a href='#' class='close' data-dismiss='alert' aria-label='close'>&times;</a> 
      ID = $_POST[product_id], removed from database! 
     </div>"; 
    } 
    else { 
     // SHOW ERROR DELETE MESSAGE 
    } 
} 

?> 

<div class="container"> 
<div class="row"> 
    <div class="col-md-12"> 

     <form method="POST" action="#" class="remove-files-form"> 
      <div class="form-group"> 
       <span>ID (number): </span> 
       <input class="form-control remove-control" id="removeTextField" type="text" size="8" name="product_id" placeholder="Insert ID here f.e. 1" required> 
       <input class="form-control btn btn-primary" id="removeButton" type="submit" value="Remove from database by id"> 
      </div> 
     </form> 

     <?php 
     $mysqli = new mysqli($dbConn, $dbUser, $dbPass, $dbName); 

     if ($mysqli->connect_errno) { 
      printf("Connect failed: %s\n", $mysqli->connect_error); 
      exit(); 
     } 

     $query = "SELECT id, thumbnailUrl, title, folderName, subfolder FROM MOCK_DATA ORDER by ID ASC"; 

     if ($result = $mysqli->query($query)) { 

      echo "<div class='table-overflow-wrap'> 
       <table class='table remove-table'>"; 
      echo "<thead> 
        <tr> 
        <th>ID</th> 
        <th>Image</th> 
        <th>Image title</th> 
        <th>Main directory</th> 
        <th>Sub directory</th> 
        </tr> 
       </thead>"; 

      /* Fetch associative array */ 
      while ($row = $result->fetch_assoc()) { 
       echo "<tr id='$row[id]'>"; 
       echo "<td><strong>$row[id]</strong></td>"; 
       echo "<td> 
        <div class='remove-table-thumb' style=\"background-image: url('$row[thumbnailUrl]') \"> 
        </div> 
        </td>"; 
       echo "<td>$row[title]</td>"; 
       echo "<td>$row[folderName]</td>"; 
       echo "<td>$row[subfolder]</td>"; 
       echo "</tr>"; 
      } 
      echo "</table></div>"; 

      /* Free result set */ 
      $result->free(); 
     } 
     ?> 

    </div><!-- col --> 
</div><!-- row --> 
</div><!-- container --> 

<?php 
include 'footer.php'; 
/* Close connection */ 
$mysqli->close(); 
?> 
+0

ありがとうございます。これは魅力的に機能しました。ちょっと編集して "$ mysqli = new mysqli($ dbConn、$ dbUser、$ dbPass、$ dbName);を追加するだけでした。頂点に。 – jjimih

関連する問題