Я хочу иметь возможность показывать все записи в таблице базы данных и каждый из них дает пользователю возможность удалять определенные.
В настоящее время я использую для каждого цикла цикл, который проходит через базу данных, демонстрируя каждую запись.
$result = mysql_query("SELECT * FROM KeepScores"); $fields_num = mysql_num_fields($result); echo "<table><tr>"; // printing table headers echo "<td>Recent Posts</td>"; echo "</tr>\n"; // printing table rows while($row = mysql_fetch_row($result)) { echo "<tr>"; // $row is array... foreach( .. ) puts every element // of $row to $cell variable foreach($row as $cell) echo "<td>$cell</td>"; echo "</tr>\n"; }
Как добавить кнопку удаления, которая появляется по каждому из них, и удалить запись из таблицы базы данных?
Вы можете сделать это с помощью форм:
//main.php
<?php $result = mysql_query("SELECT * FROM KeepScores"); ?> <table> <tr> <td>Recent Posts</td> </tr> <?php while($row = mysql_fetch_array($result)) : ?> <tr> <td><?php echo $row['field1']; ?></td> <td><?php echo $row['field2']; ?></td> <!-- and so on --> <td> <form action="delete.php" method="post"> <input type="hidden" name="delete_id" value="<?php echo $row['id']; ?>" /> <input type="submit" value="Delete" /> </form> </td> </tr> <?php endwhile; ?> </table>
//delete.php:
<?php if(isset($_POST['delete_id'] && !empty($_POST['delete_id']))) { $delete_id = mysql_real_escape_string($_POST['delete_id']); mysql_query("DELETE FROM KeepScores WHERE `id`=".$delete_id); header('Location: main.php'); }
Или вы можете сделать это с помощью jQuery и AJAX:
//main.php
<?php $result = mysql_query("SELECT * FROM KeepScores"); ?> <table> <tr> <td>Recent Posts</td> </tr> <?php while($row = mysql_fetch_array($result)) : ?> <tr id="<?php echo $row['id']; ?>"> <td><?php echo $row['field1']; ?></td> <td><?php echo $row['field2']; ?></td> <!-- and so on --> <td> <button class="del_btn" rel="<?php echo $row['id']; ?>">Delete</button> </td> </tr> <?php endwhile; ?> </table> <script> $(document).ready(function(){ $('.del_btn').click(function(){ var del_id = $(this).attr('rel'); $.post('delete.php', {delete_id:del_id}, function(data) { if(data == 'true') { $('#'+del_id).remove(); } else { alert('Could not delete!'); } }); }); }); </script>
//delete.php
<?php if(isset($_POST['delete_id'] && !empty($_POST['delete_id']))) { $delete_id = mysql_real_escape_string($_POST['delete_id']); $result = mysql_query("DELETE FROM KeepScores WHERE `id`=".$delete_id); if($result !== false) { echo 'true'; } }
Это все непроверено и, конечно же, нуждается в некоторой корректировке для вашего конкретного проекта, но я думаю, что у вас есть идея, и я надеюсь, что это поможет.
В следующий раз, пожалуйста, опубликуйте свою схему, если вы спросите о базе данных.
Я думал, что немного поработаю над этим, добавив сообщение delete в класс и функцию. У меня была такая же проблема. и это отлично поработало для меня. Еще раз спасибо @ Quasdunk
<?php // Class to hold the remove post function class someClass{ //Function for removing the post function removePost(){ if(isset($_POST['delete_id']) && (!empty($_POST['delete_id']))) { $delete_id = mysql_real_escape_string($_POST['delete_id']); $result = mysql_query("DELETE FROM post WHERE post_id='".$delete_id."' AND post_member='" . $_SESSION['SESS_USER'] . "'"); if($result !== false) { echo 'true'; } } } } if(isset($_SESSION['SESS_MEMBER_ID'])){ $member = $_SESSION['SESS_USER']; $res = mysql_query("SELECT * FROM post WHERE post_member='$member' ORDER BY timestamp DESC") or die(mysql_error()); $i = new someClass; while($row = mysql_fetch_array($res)){ echo '<div style="width:100%;margin:0 auto;border-top:thin solid #000;">'; echo '<div style="width:600px;margin:0 auto;padding:20px;">'; echo $row['post_text'] . '<br>'; $postID = $row['post_id']; echo '<div style="border-top:thin solid #000;padding:10px;margin-top:5px;background-color:#CCC;">'; echo 'You posted this on: ' . $row['post_date'] . '@' . $row['post_time']; echo '<div style="float:right;"> <form method="post" action="'. $i->removePost() .'"> <input type="hidden" name="delete_id" value="'.$row['post_id'].'" > <input type="submit" value="Delete Post"> </form> </div>'; echo '</div>'; echo '</div>'; echo '</div>'; } } ?>
Создайте ключ для каждой таблицы, используя jquery, затем привяжите его к файлу php, который принимает ключ и удаляет из конкретной таблицы (который также может быть передан через jquery)