Страница 1 из 2

Удаление, вставка записей в таблиу ( mySQL+PHP )

Добавлено: 13 ноя 2006, 14:27
Duncon
Мои корявки добрались до sql, и в процессе столкнулся с такой штукой, к примеру удаляю я запись (строку), а следующая вставка новой записи происходит на тоже место..
Собственно как обойти данный аспект.???

Код: Выделить всё

Удаляю так
mysql_query("delete from strukture where ssilka_name='$ssilka_name' and ssilka_nazvanie='$ssilka_nazvanie' and id_tovarov='$id_tovarov'") or die ("Error: 666.");

добовляю так
mysql_query("insert into strukture values ('$ssilka_name', '$ssilka_nazvanie','$id_tovarov')") or die ("Error: 777.");
И второе не допру как обратиться к конкретному столбцу в таблице, допустим я хочу считать во второй строке последний столбец ( id_tovarov ) 2 перезаписать только его..

Выглядит все так

Код: Выделить всё

CREATE TABLE strukture (
  ssilka_name varchar(20) NOT NULL default '',
  ssilka_nazvanie varchar(30) NOT NULL default '',
  id_tovarov text,
  PRIMARY KEY  (ssilka_name)
) TYPE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO strukture VALUES ('menu1', 'меню 1', '1,2,3');
INSERT INTO strukture VALUES ('menu2', 'меню 2, '4,5,6');
INSERT INTO strukture VALUES ('menu3', 'меню 3', '7,8,9');

Добавлено: 13 ноя 2006, 16:38
AiK
По первому пункту ничего не понял. Что вы подразумеваете под термином рэп или йо? Т.е. под тем же местом?
По второму пункту всё очень просто - есть такой вид запроса, как update. Выглядеть будет примено так:

Код: Выделить всё

update strukture set id_tovarov ="new value" where ssilka_name ="menu2"

Добавлено: 13 ноя 2006, 18:32
Duncon
2 понятно, спасибо..

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

И доп вопрос как перемещать строки, к примеру хочу 3 строку переместить на первое место?

Добавлено: 13 ноя 2006, 18:42
Absurd
По первому пункту я хочу удалить строку из таблицы, и при добавлении новой записи она вставляется в то же место что занимала удаленная, это конечно местами прикольно, но я хочу вообще удалить, дабы вставка шла в конец таблицы..

И доп вопрос как перемещать строки, к примеру хочу 3 строку переместить на первое место?
В SQL нету такого понятия как номер строки - учите матчасть. Можно только управлять порядком, в котором строки выводятся с помошью order by.

Добавлено: 14 ноя 2006, 19:47
Duncon
Я иммел ввиду 3 строку в моем примере, order by не нашел инфы.. Absurd плохой ответ лучше вовсе не отвечать нежели так..

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

Добавлено: 15 ноя 2006, 18:52
Absurd
Я иммел ввиду 3 строку в моем примере, order by не нашел инфы.. Absurd плохой ответ лучше вовсе не отвечать нежели так..
Нету никаких "номеров строк" в SQL. Insert вставляет данные на первое свободное место. Например, создал ты таблицу со 100 строчками, затем удалил 50. Появилось 50 дырок в таблице, и следующий insert вставит данные в первую же подходящую по размеру дырку, чтобы не увеличивать таблицу.
Программисту вообще должно быть без разницы, в каком порядке лежат строки в таблице - файлы например тоже лежат в физических секторах, разбросанных по блинам HDD и никого это не тяготит.

Добавлено: 15 ноя 2006, 23:26
Duncon
Еще раз я это знаю и понимаю,.. в структуре корорую я привел выше 3 записи я вертуально пронумеровывал их....

Добавлено: 16 ноя 2006, 03:25
AiK
Duncon, ты зря бычишься. Ты их виртуально перенумеровал, а SQL их вывел в виртуальном порядке. Это в любой доке написано, что порядок выдачи select'а не определён до тех пор, пока ты не попросишь отсортировать выдачу по конкретному полю. В твоём случае должно быть что-то вроде этого:
[syntax:fd0729b7a1="sql"]select * from strukture order by virtual_number[/syntax:fd0729b7a1]

Добавлено: 16 ноя 2006, 10:45
Duncon
Вот уже лучше, из этого ответа я понимаю что ORDER BY сортировка, спасибо сей час попробуем, я этот порядковый номер ввел, но пошел другим путем пересчитывал все "строки" (пустые тоже попадали в общую сумму) а потом циклил и выводил результат. И самое интересное что при прочтении литературы ORDER BY был описан как метод отбора...

Добавлено: 16 ноя 2006, 14:57
AiK
пустые тоже попадали в общую сумму
Сдаётся мне, что что-то здесь не так :)