Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > добавление данных в бд после удаления данных


Автор: student2008 4.1.2009, 17:33
в таблице 3 строки

id                text
1                 some text
2                 some text
3                 some text

после удаления 2 строки (DELETE)
пытаюсь добавить данные, для этого определяю номер по id  $count = mysql_numrows для новой записи
нажимаю ок и ничего не добавляется =(

если тоже самое повторить с последним добавленным id то всё ок, видимо проблемма (точнее моё не понимание функции mysql_numrows)

если кто-то знает в чём дело помогите


Автор: krundetz 4.1.2009, 17:39
student2008, чето странно ты все делаешь, у тебя поле id аутоинкрементное или нет? если да то зачем тебе вообще указывать id просто добавляй данные а id сам подставиться следующий за последним добавленым?

Автор: godvinn 4.1.2009, 17:41
student2008 может представишь отрывок кода который это все делает*? тогда и проблемма будет яснее 

Автор: student2008 4.1.2009, 17:45
Код

@$count2 = mysql_numrows(mysql_query('select * from newses'));
      $data=date("d.m.Y");
      $sql = "INSERT INTO newses (news_id, title, text, date) VALUES ('$count2', '$ntitle', '$ntext', '$data')";
      mysql_query($sql);


добавление новости
что такое аутоинкрементное не знаю

Автор: godvinn 4.1.2009, 17:52
mysql_numrows - зачем ты вот это используешь нельзя ли просто отправлять запрос*? 
и вообщето mysql_num_rows так правильно пишется если меня память не подводит 

Автор: student2008 4.1.2009, 17:56
Код

      $sql = "INSERT INTO newses (news_id, title, text, date) VALUES ('', '$ntitle', '$ntext', '$data')";     

таже байда

Автор: godvinn 4.1.2009, 17:59
посмотри лучше на количество полей в своей таблице, или приведи структуру своей таблицы newses 

Автор: student2008 4.1.2009, 18:04
Код

CREATE TABLE `newses` (
  `news_id` mediumint(9) NOT NULL,
  `title` varchar(30) NOT NULL,
  `text` text NOT NULL,
  `date` varchar(10) NOT NULL,
  PRIMARY KEY  (`news_id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;



Автор: student2008 4.1.2009, 18:22
godvinn, спасибо большое поставил аутоинкремент и всё заработало, но в базе уже есть 20 записей как теперь их отсортировать чтобы у всех id шёл одни за другим (0,1,2...) а не как сейчас (1,2,3,4,6...) руками править очень долго. 

Автор: godvinn 4.1.2009, 18:35
ты хочешь чтобы в самой базе хранилось один за другим*? 
или при выводе если при выводе поставь в запросе ORDER BY ..поле по которому будешь сортировать..(обычно id)  ASC

Автор: student2008 4.1.2009, 18:41
godvinn, да чтобы в базе один за другим (те отсортировать надо)

Автор: godvinn 4.1.2009, 18:45
попробуй выполнить запрос ALTER TABLE `имя таблицы` ORDER BY `поле по которому будешь сортировать` ASC"    

Автор: krundetz 5.1.2009, 01:33
student2008, во первых ты плохо читаешь про аутоинкремент я тебе написал давно, во вторых если ты хочешь получить последовательное следование идентификаторов в таблице то, необходимо аутоинкремент убрать и за уникальностью каждого индекса следить отдельно, причем у тебе необходимо предусмотреть перетряску всех индексов при удаление одно из элементов, в третьих так как ты хочешь сделать обычно не делают, тоесть уникальный идентификатор он и есть уникальный идентификатор и если ты его постоянно меняеш, а именно это и будет происходит при удаление строк, то теряется сам смысл уникального идентификатора. Обясни пожалуйста зачем тебе вдруг это понадобилось?

Цитата(student2008)

(0,1,2...)

у аутоинкрементного поля индексы начинаются с 1, а не с нуля

student2008 советую найти толковый учебник по MySQ

Автор: student2008 5.1.2009, 15:54
krundetz, 
godvinn,  спасибо большое

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)