#php #mysql
#php #mysql
Вопрос:
Используя php и mysqli, у меня есть таблица категорий, которая группирует товары и управляет порядком их отображения в моем каталоге. Поле «ord» представляет собой int со значением, которое управляет порядком отображения этих категорий продуктов. При вставке новой категории я хотел бы изменить порядок остальных категорий из новой категории вниз и обновить таблицу, а затем вставить новую категорию без дублирования значения «ord».
Существует 11 категорий. Я хочу вставить свою новую категорию со значением «ord» равным 5. Очевидно, что мне нужно добавить 1 к каждому значению «ord» 6-11, чтобы изменить порядок в моем каталоге. Не уверен, как это сделать. Я не разбираюсь в массивах, но я бы подумал, что какой-то foreach array[$key][] 1 с ОБНОВЛЕНИЕМ таблицы будет работать. Я не совсем понимаю, как создать массив.
На самом деле у меня нет никаких рабочих идей по этому поводу…
Category ord=1: Site Licensing
Category ord=2: PICC Insertion Training
Category ord=3: Ultrasound Training
Новая категория: ord 2: Подписки на членство
Category ord=1: Site Licensing
Category ord=2: Membership Subscriptions
Category ord=3: PICC Insertion Training
Category ord=4: Ultrasound Training
Ответ №1:
Вы можете просто обновить таблицу перед выполнением INSERT
. Сначала обновляя существующие данные, вы оставляете место для новой записи.
$order = $_POST['order'];
$stmt = $mysqli->prepare("UPDATE `categories` set order = order 1 where order >= ?"));
$stmt->bind_param("i", $order);
$stmt->execute();
/** Now perform INSERT statement */
Комментарии:
1. Идеальный. Спасибо! Я возился, ожидая ответа, и фактически ответил на свой собственный вопрос. Изменение оператора select для включения только тех записей, которые равны или превышают новое значение порядка, получает нужные мне записи. Затем выполните обновление, а затем вставку. Я усложнил это, обдумав это.