Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Удаление записей из базы при условии ... подробнее..

Сообщения:  [1-10]   [11-18] 

 
 автор: virtus   (12.05.2006 в 16:27)   письмо автору
 
   для: Trianon   (12.05.2006 в 15:40)
 

СПАСИБО!!!! вот теперь я понял ;)
спасибочки

   
 
 автор: Trianon   (12.05.2006 в 15:40)   письмо автору
 
   для: virtus   (12.05.2006 в 14:50)
 

В Вашем примере нет записей, отличающихся датами хотя бы на неделю.
После изменения значений в поле date на 1146568913 и 1146568913 следующий скрипт

<form action="" method=post>
<select name="srok">
<option value=1>1</option>
<option value=2>2</option>
<option value=3>3</option>
<option value=4>4</option>
<option value=5>5</option>
</select>
<input type=submit value="&Oacute;&auml;&agrave;&euml;&egrave;&ograve;&uuml;">
</form>
<?
include 'config.inc.php';

$mess 'board_mess';
 if (isset(
$_POST['srok'])) {
$date $_POST['srok'] * 7;
$deldat "delete FROM $mess WHERE FROM_UNIXTIME(date) < now() - INTERVAL $date DAY";
mysql_query($deldat);
}
?>

при запуске и выборе 2-х недельного срока удалил строго одну из записей.

   
 
 автор: virtus   (12.05.2006 в 14:50)   письмо автору
 
   для: Trianon   (12.05.2006 в 14:14)
 


CREATE TABLE board_mess (
  idprod int(11) NOT NULL auto_increment,
  idcat int(11) NOT NULL default '0',
  'date' int(11) default NULL,
  'name' varchar(255) NOT NULL default '',
  description text NOT NULL,
  kuda tinytext NOT NULL,
  price tinytext NOT NULL,
  city varchar(50) NOT NULL default '',
  raion_k varchar(255) NOT NULL,
  raion varchar(100) NOT NULL default '',
  street varchar(100) NOT NULL default '',
  ga varchar(100) NOT NULL default '',
  comun tinytext NOT NULL,
  who tinytext NOT NULL,
  torg tinytext NOT NULL,
  fio varchar(255) default NULL,
  phone varchar(100) NOT NULL default '',
  picture varchar(50) NOT NULL default '',
  picture1 varchar(50) NOT NULL default '',
  picture2 varchar(50) NOT NULL default '',
  PRIMARY KEY  (idprod)
) ENGINE=MyISAM;


INSERT INTO rus_board_mess VALUES (38, 2, 1147419929, 'егекнку', 'кнкун', '2', 'некунекунн', '', '0', '', '', '', '1', '1', '1', 'екункун', '11111111111111111111', '', '', '');
INSERT INTO rus_board_mess VALUES (35, 2, 1147419255, '!!!!', '', '2', '232323', '', '0', '', '', '', '1', '1', '1', '23232', '232323', '', '', '');
 

   
 
 автор: Trianon   (12.05.2006 в 14:14)   письмо автору
 
   для: virtus   (12.05.2006 в 14:07)
 

Всё должно идти. Если не идет - значит в таблице чехарда.
Приведите фрагмент дампа таблицы.

   
 
 автор: virtus   (12.05.2006 в 14:07)   письмо автору
 
   для: virtus   (11.05.2006 в 19:01)
 

Я так понял никто не знает как запрос поставить...
Может кто поможет другим путем?

   
 
 автор: virtus   (11.05.2006 в 19:01)   письмо автору
 
   для: Trianon   (11.05.2006 в 18:31)
 

так же не верно!!!
в данной ситуации DATE будет все время меньшей, нужно отнимать и от DATE
только как?

   
 
 автор: Trianon   (11.05.2006 в 18:31)   письмо автору
 
   для: virtus   (11.05.2006 в 18:15)
 


<?php 
... 
$date $date 24 3600
$deldat "DELETE FROM $mess. WHERE date > ". (time() - $date); 

... 
?> 


никакая дополнительная защита от инъекций тут не нужна. Разве чтоб самому не забыть. Всё равно попытка умножить входной операнд на 24 придушит любую инъекцию нафиг.

   
 
 автор: virtus   (11.05.2006 в 18:15)   письмо автору
 
   для: DDK   (11.05.2006 в 17:53)
 

не верное что-то!!!
вот вывел deldat
DELETE FROM board_mess WHERE 1147356803-date>1146147203

   
 
 автор: DDK   (11.05.2006 в 17:53)   письмо автору
 
   для: DDK   (11.05.2006 в 17:50)
 

А ! Вот маленький, но важный момент упустил... нужно немного изменить запрос:

<?php 
... 
if (
$_POST[pict] == "delo") { 
$date = (int) $date// Защищаемся от SQL-инъекции
$date $date 24 3600;
$deldat "DELETE FROM ".$mess." WHERE ".time()."-date>".$date

... 
?> 

Вот, вроде бы так...

   
 
 автор: DDK   (11.05.2006 в 17:50)   письмо автору
 
   для: virtus   (11.05.2006 в 17:27)
 

Скрипт получает из формы число недель... нам нужно перевести число недель в секунды. Умножаем кол-во недель на кол-во часов в сутках и затем на кол-во секунд в часе (60*60=3600). Получаем кол-во секунд в заданном числе недель.

   

Сообщения:  [1-10]   [11-18] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования