|
|
|
| Есть прайс-лист на копм. технику, соответственно категории, подкатегории и товар.
Подскажите как сделать Если я удаляю категорию напр-р копмы и в ней еще находится(подкатегории и товар) чтоб не только сама категория удалилась но и все что в не находится.
структура таблицы
id - auto incement
id_major - (напр-р есть категория комп. у неё id_major 01 и в ней же находятся ещё категории "Комп. Compaq" у неё id_major 0101 и т.д.)
name
isFolder - если стоит 1 то это категория(подкатегория), если пусто то товар | |
|
|
|
|
|
|
|
для: spyder
(17.05.2006 в 15:49)
| | Если нет возможности использовать внешние ключи (это таблицы типа InnoDB) придётся осуществлять удаление в несоколько запросов - сначала из подчинённых программ, потом из основной таблицы. | |
|
|
|
|
|
|
|
для: cheops
(17.05.2006 в 22:59)
| | нет, MyISAM
Таблица одна | |
|
|
|
|
|
|
|
для: Spyder
(18.05.2006 в 13:41)
| | А, если таблица одна, тогда придётся испльзовать рекурсивную функцию удаления. Не очень понятна структура поля id_major - оно как строится? | |
|
|
|
|
|
|
|
для: cheops
(18.05.2006 в 22:49)
| | раньше через Excel данные перекидывали. Там так сделали.
я сам еле разобрался с этой структурой.
Попробую ещё раз объяснить
Все категории и подкатегории отмечаются в столбце isFolder единицой. Если пусто или ноль то это товар. А в id_major отмечают, категория первая стоит 01, в ней находятся ещё подкатегории они уже отмечаются так 0101, 0102 и т.д. И тогда у товара простовляется 010101 и т.д.
т.е. первые две цифры отвечают к какой категории относится товар или подкатегория и т.д. В зависимости от ерархии категорий. | |
|
|
|
|
|
|
|
для: spyder
(19.05.2006 в 07:50)
| | Т.е. удаление категории сводится к удалению всех записей, поле id_major которых начинается с "01"? | |
|
|
|
|
|
|
|
для: cheops
(19.05.2006 в 11:39)
| | да | |
|
|
|
|
|
|
|
для: spyder
(19.05.2006 в 15:12)
| | Тогда можно поступить следующим образом
DELETE FROM tbl WHERE id_major LIKE '01%'
|
| |
|
|
|
|
|
|
|
для: cheops
(19.05.2006 в 22:36)
| | Большое спасибо!!! Все получилось.
Ещё вопросик! Как можно узнать id_major последней категории. | |
|
|
|
|
|
|
|
для: spyder
(22.05.2006 в 14:00)
| | В смысле последний? | |
|
|
|
|
|
|
|
для: cheops
(22.05.2006 в 16:13)
| | в прямом
напр-р: первая категория комп. 01, HDD 02, MOUSE 03 .... Офисная техника 17.
как можно узнать последнию категорию напр-р Офисная техника. | |
|
|
|
|
|
|
|
для: Spyder
(22.05.2006 в 19:36)
| | А они за сотню не вылазят? Если нет, то можно попробовать следующий запрос
SELECT MAX(SUBSTRING(id_major,1,2)) AS id_major FROM tbl
|
| |
|
|
|
|
|
|
|
для: cheops
(22.05.2006 в 19:51)
| | нет. | |
|
|
|
|
|
|
|
для: Spyder
(22.05.2006 в 19:54)
| | Сделал как вы написали, все работает выдает последний id_major категории.
Мне нужно это было для создания новой категории.
Когда я захожу на стр для создания новой категории, мне показывает последний номер категории с уже увеличенным на единицу id_major, заполняю данные все отправляет сохраняет. Но когда я захожу заново на стр создания категории он мне показывает id_major предыдущий и только после обновления странички он уже выставляет новый номер это в Opere 8.5 и IE, а в firefox работает нормально.
Подскажите как можно исправить. | |
|
|
|
|
|
|
|
для: Spyder
(24.05.2006 в 15:05)
| | Страница кэшируется - подавите кэширование, как это описывается в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=260. | |
|
|
|
|
|
|
|
для: cheops
(24.05.2006 в 21:51)
| | Все получилось.
САМЫЙ ЛУЧШИЙ ФОРУМ для новичков. Большое спасибо!!! | |
|
|
|
|
|
|
|
для: spyder
(25.05.2006 в 12:37)
| | Снова проблема. На этот раз с добавлением продукции в категорию
Проблемы вычеслить номер последней продукции и увеличить на единицу для добавления новой.
Вот код
<?php
//соединение с БД
require_once("config.php");
$test = $_POST['id_major'];
echo "nt<br>";
echo "$test";
//Проверяем сколько продукции находится в данной категории
$query = mysql_query( "SELECT id_major, name FROM 311cd_price_draft WHERE id_major LIKE '".$_POST['id_major']."%' and isFolder=' ' ORDER BY id_major");
if($query)
{
//получаем максимальный элемент столбца
$major = mysql_fetch_array($query);
$id_major = $major['id_major'] + 1;
}
echo "<br>$id_major";
?>
|
помогите плиз!!!! | |
|
|
|
|
|
|
|
для: spyder
(25.05.2006 в 22:44)
| | Т.е. максимальный номер для текущей категории? По сути из значений
нам следует выбрать максимальное значение из YY? | |
|
|
|
|
|
|
|
для: cheops
(25.05.2006 в 22:48)
| | напр-р подкатегория с id_major 0101
в ней находится товар с номерами 010101, 010102 и т.д
мне нужно выбрать последний номер и увеличить на единицу. | |
|
|
|
|
|
|
|
для: Spyder
(25.05.2006 в 22:53)
| | Подкатегории могут быть любой длины или они всегда из 4 символов состоят? | |
|
|
|
|
|
|
|
для: cheops
(26.05.2006 в 02:11)
| | любой.
Получилось сделать запрос на максимальное значение
$query = mysql_query( "SELECT id_major, name FROM 311cd_price_draft WHERE id_major = (select max(id_major) from 311cd_price_draft where id_major LIKE '".$_POST['id_major']."%' and isFolder=' ') ORDER BY id_major");
if($query)
{
//получаем максимальный элемент столбца
$major = mysql_fetch_array($query);
$id_major = $major['id_major'];
}
echo "<br>$id_major";
?>
|
но вот только не получается увеличить на единицу.
напр-р: вывел последний номер товара в определенной категории.
01030205
но если я делаю инкеремент
//получаем максимальный элемент столбца
$major = mysql_fetch_array($query);
$id_major = $major['id_major'];
$id_major++;
|
то он мне выводит 1030206 а мне нужно 01030206.
Подскажите как осуществить операцию без потери нуля? | |
|
|
|
|
|
|
|
для: Spyder
(26.05.2006 в 07:10)
| | Народ помогите плиз!!! | |
|
|
|
|
|
|
|
для: spyder
(26.05.2006 в 18:59)
| | cheops помоги плиз!!! | |
|
|
|
|
|
|
|
для: Spyder
(26.05.2006 в 07:10)
| | $id_major = $major['id_major'];
$id_major = str_pad($id_major+1, strlen($id_major), "0", STR_PAD_LEFT); | |
|
|
|
|
|
|
|
для: Trianon
(29.05.2006 в 10:08)
| | Спасибо Trianon.
получилось, но только нужно проверять если категория начинается с нуля, то добавлять а если больше то ноль не нужно подставлять. Как узнать первый символ в строке? | |
|
|
|
|
|
|
|
для: Spyder
(29.05.2006 в 11:01)
| | А что, если начинается не с нуля, то работает неправильно?
По идее, должно правильно работать в любом случае. | |
|
|
|
|
|
|
|
для: Trianon
(29.05.2006 в 11:05)
| | не знаю может и должно но у меня если идет номер 1001и добавляю товар то он пишет 0100107
Да и ещё заметил, у меня все подкатегории выводятся в <select><option> и как вы говорите должен в любом случае работать, но у меня такая ситуация получилась, через одну строку подставляет 0, т.е. Сканеры идет номер 100107, если выбираю следующию категорию то ставит 0100206. Как так получается | |
|
|
|
|
|
|
|
для: Spyder
(29.05.2006 в 11:13)
| | Операция +1 выполняется так, как Вы хотели:
<?
$id_major = "01030205";
echo "$id_major + 1 =";
$id_major = str_pad($id_major+1, strlen($id_major), "0", STR_PAD_LEFT);
echo "$id_major<br>";
$id_major = "1001";
echo "$id_major + 1 =";
$id_major = str_pad($id_major+1, strlen($id_major), "0", STR_PAD_LEFT);
echo "$id_major<br>";
?>
|
01030205 + 1 =01030206
1001 + 1 =1002
|
Ничего другого реализовать не пытался. | |
|
|
|