Как я могу изменить значения порядка в таблице при вставке новой строки с более высоким значением порядка?

#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 для включения только тех записей, которые равны или превышают новое значение порядка, получает нужные мне записи. Затем выполните обновление, а затем вставку. Я усложнил это, обдумав это.