2015-12-16 5 views
0

У меня есть две таблицы на одной странице. В таблице наверху есть только одна строка, потому что в этой конкретной таблице в БД будет только одна запись - «Танк месяца». Нижняя таблица показывает содержимое другой таблицы в базе данных, «uploads». Когда элемент удаляется из нижней таблицы, он удаляет его из базы данных и из физической/uploads/папки, как ожидалось. Когда элемент выбирается из нижней таблицы как «Танк месяца», он должен исчезать из нижней таблицы, который он делает правильно, тогда верхняя таблица должна очищаться, и элемент, который был выбран, должен автоматически исчезать в верхнем Таблица. Я пробовал много, много способов сделать это без везения. Единственный способ получить верхнюю таблицу для обновления - это фактически обновить страницу. Это делает то, что я хочу, но я хочу сделать это без обновления страницы.Javascript PHP перемещает строку из одной таблицы в другую

totm.php (а не весь файл, как большинство из них работает):

<!--put body stuff here--> 
    <div class="content"> 
     <div class="container-fluid"> 
      <div class="row">     
       <div class="col-md-12"> 
        <div class="card card-plain"> 
         <div class="header"> 
          <h4 class="title">Current Tank of the Month</h4> 
          <p class="category">This is your current tank of the month. </p> 
         </div> 
         <div class="content table-responsive table-full-width"> 
          <?php 
           // Check connection 
           if ($mysqli->connect_error) { 
            die("Connection failed: " . $mysqli->connect_error); 
           } 
           else 
           { 
            if (!$stmt = $mysqli->query("SELECT * FROM totm")) { 
             echo "Query Failed!: (" . $mysqli->errno . ") ". $mysqli->error; 
            } 

            echo "<table class='table table-hover'>"; 
            echo "<thead> 
              <th>Image</th> 
              <th>Filename</th> 
              <th>Description</th> 
              </thead> 
              <tbody>"; 
            while ($row = mysqli_fetch_array($stmt)) { 
             $i = $row["id"]; 
             $f = $row["file"]; 
             $d = $row["description"]; 
             echo "<tr id='$i' file='$f' desc='$d'>"; 
             echo "<td> <a href='../assets/img/totm/" . $row["file"] . "'><img class='thumbnail' src='../assets/img/totm/" . $row["file"] . "' alt='" . $row["file"] . "' /> </td>"; 
             echo "<td>" . $row["file"] . "</td>"; 
             echo "<td>" . $row["description"] . "</td>"; 
             echo "</tr>"; 
            } 
            echo "</tbody>"; 
            echo "</table>"; 

            if (mysqli_num_rows($stmt) == 0) { 
             echo "No records found."; 
            } 
           } 
          $stmt->free(); 
          //$mysqli->close();  
          ?>  
         </div> 
        </div> 
       </div>     
      </div>      
     </div> 
     <div class="container-fluid"> 
      <div class="row">     
       <div class="col-md-12"> 
        <div class="card card-plain"> 
         <div class="header"> 
          <h4 class="title">Current Entries</h4> 
          <p class="category">Here you will find the current entries for the Tank of the Month contest. Select one as the new Tank of The Month and delete the rest. Keep it clean around here! </p> 
         </div> 
         <div class="content table-responsive table-full-width"> 
          <?php 
           // Check connection 
           if ($mysqli->connect_error) { 
            die("Connection failed: " . $mysqli->connect_error); 
           } 
           else 
           { 
            if (!$stmt = $mysqli->query("SELECT * FROM uploads")) { 
             echo "Query Failed!: (" . $mysqli->errno . ") ". $mysqli->error; 
            } 

            echo "<table class='table table-hover'>"; 
            echo "<thead> 
              <th>Image</th> 
              <th>Name</th> 
              <th>Email</th> 
              <th>IP</th> 
              <th>Date</th> 
              <th>Description</th> 
              <th>Action</th> 
              </thead> 
              <tbody>"; 
            while ($row = mysqli_fetch_array($stmt)) { 
             $i = $row["id"]; 
             $f = $row["file"]; 
             $d = $row["description"]; 
             echo "<tr id='$i' file='$f' desc='$d'>"; 
             echo "<td> <a href='../uploads/" . $row["file"] . "'><img class='thumbnail' src='../uploads/" . $row["file"] . "' alt='" . $row["file"] . "' /> </td>"; 
             echo "<td>" . $row["name"] . "</td>"; 
             echo "<td>" . $row["email"] . "</td>"; 
             echo "<td>" . $row["ip"] . "</td>"; 
             echo "<td>" . $row["date"] . "</td>"; 
             echo "<td>" . $row["description"] . "</td>"; 
             echo "<td> 
                <button class='btn btn-round btn-danger deleteitem'>Delete</button> 
                <div class='space-20'></div> 
                <button class='btn btn-round btn-success chooseitem'>Select</button> 
               </td>"; 
             echo "</tr>"; 
            } 
            echo "</tbody>"; 
            echo "</table>"; 

            if (mysqli_num_rows($stmt) == 0) { 
             echo "No records found."; 
            } 
           } 
          $stmt->free(); 
          $mysqli->close();  
          ?>  
         </div> 
        </div> 
       </div>     
      </div>      
     </div> 
    </div> 

TOTM-backend.js:

$(".deleteitem").click(function() { 
var parent = $(this).closest('TR'); 
var id = parent.attr('id'); 
var file = parent.attr('file'); 

if (confirm("Are you sure you want to delete this?")) { 
    $.ajax({ 
     type: "POST", 
     data: { delete_id: id, delete_file : file }, 
     URL: "totm.php", 

     success: function (msg) { 
      parent.fadeOut('slow', function() { $('#' + id).remove() }); 
     } 
    }); 
} 
return false; 

});

$(".chooseitem").click(function() { 
var parent = $(this).closest('tr'); 
var id = parent.attr('id'); 
var file = parent.attr('file'); 
var desc = parent.attr('desc'); 

if (confirm("Are you sure you want to promote this to Tank of the Month?")) { 
    $.ajax({ 
     type: "POST", 
     data: { promote_id: id, promote_file: file, promote_desc: desc }, 
     URL: "totm.php", 

     success: function (msg) { 
      parent.fadeOut('slow', function() { $('#' + id).remove() }); 
     } 
    }); 
} 
return false; 

});

+0

Какой jquery вы пытались переместить строку таблицы из нижней таблицы вверх? –

+0

Ну, я думаю, что я могу сделать что-то вроде этого: current.fadeOut ('slow'), function() {$ (this) .closest ('tr'). Empty()}); для очистки верхней таблицы, а затем current.fadeIn ('slow', function() {$ ('#' + id) .insert()}) ;. Проблема заключается в том, как определить «текущую» таблицу, которая является верхней. – ckozma

+0

Я не могу использовать var closest = $ (this) .closest ('tr') ;, и я не знаю, сколько .parents, которые мне пришлось бы использовать, очень сложно получить «текущую» переменную. – ckozma

ответ

0

Вы можете использовать функцию appendTo, чтобы добавить элемент в нужную таблицу. Проверьте this post вне на том, как это сделать.

Чтобы получить «текущую» таблицу, проверьте hasClass

Я только учусь JavaScript и JQuery себя, так что может быть более эффективными способами.

Смежные вопросы