Удаление записей базы данных с флажком? - PullRequest
1 голос
/ 05 августа 2011

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

Прямо сейчас у меня есть этот код для загрузки идентификатора каждого сообщения и заголовка в таблицу, а также флажок рядом с ним.

<?php

$news = mysql_query('SELECT `id`,`title` FROM news');
if (!$news)
{
    exit('<p>Error retrieving news from database!<br />'.
         'Error: '.mysql_error().'</p>');
}

while ($new = mysql_fetch_array($news))
{
    $id = $new['id'];
    $title = $new['title'];

    echo "<tr style='background: #3D3D3d; width: 400px; font-family: Century Gothic; font-size: 15px;'>";
    echo "<td style='padding-left: 5px'><input type='checkbox' name='id' value='$id' /></td>&nbsp;&nbsp;&nbsp;<td style='padding-left: 15px'>$id</td>&nbsp;&nbsp;&nbsp;<td style='padding-left: 15px'>$title</td>";
    echo "</tr>";

}
?>

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

Ответы [ 2 ]

2 голосов
/ 05 августа 2011

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

Идея заключалась бы в том, чтобыразбить код так, чтобы его было легко читать:

  • Все стили в файле CSS или скрипте CSS принимают и используют классы и идентификаторы для настройки стиля (его немного сложно прочитать в вашем коде)
  • Попросите процедуры SQL вызвать данные SQL, чтобы ваш код мог перейти с PHP на что-то другое, если вам когда-либо понадобится

, чтобы добавить мою идею в код

<?php //deletenews.php
//.... 
$result = $mysql_query("Call Delete_news_Entry($id)");
if (!$result)
{
    die("Error deleting record from news" . mysql_error);
}

//.... end of php
?> 

Процедура SQL

DELIMITER $$

DROP PROCEDURE IF EXISTS $$
CREATE PROCEDURE DB.Delete_news_entry(in_ID INTEGER)
BEGIN
     DELETE FROM news WHERE id=in_ID;
END $$
DELIMITER ;

(если вы хотите, чтобы она действовала поверх кнопки отправки) javascript

<Script type='text/javascript'>
//depends on jquery
function deletenews(id)
{
    var spanid = "#span"+id;
    $.get("deletenews.php",
          null,
          function(){
              Alert("Complete") //this is more or less for you to put your required code here
              $(spanid).hide();
          },
          "html")
          .error(function(){
              Alert("error") // for your own code to go here
          });
}
</script>

извините, просто изменив код

// в вашем php-коде, для события, попробуйте onclick или onchange, чтобы инициировать удаление

echo "<span id='span$id'><td class='left'><input type='checkbox' name='id' value='$id' onclick='deletenews($id)' /></td><td class='left'>$id</td>&nbsp;&nbsp;&nbsp;<td class='left'>$title</td></span>";

Наличие всего, что части облегчают чтение.

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

0 голосов
/ 05 августа 2011

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

Вам необходимо использовать функцию isset PHP в ссылке на действие формы, чтобы проверить, установлен ли флажокцикл по каждому элементу, чтобы пройти через них всех.Как то так:

<?php
     foreach($_POST as $key =>$value){
         if(isset($_POST[$key])){
               $value = mysql_real_escape_string($value);
               mysql_query("DELETE FROM table WHERE id = $value");
         }
     }
 ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...