Intereting Posts

Как вернуть значения из строки, где впервые появляется значение среди доступных строк?

У меня есть таблица базы данных в WordPress, как в следующем примере:

  ID |  Allocation_number |  Лечение |  Используемый 
 1 |  1 |  A |  0
 2 |  2 |  B |  0
 3 |  3 |  B |  0
 4 |  4 |  A |  0 

И строки продолжаются до X раз. «Allocation_number» начинается с 1 и увеличивается на +1. Столбец «Использованный» имеет «0» или «1», 0 означает «НЕ ИСПОЛЬЗУЕТСЯ», 1 = ИСПОЛЬЗУЕТСЯ УЖЕ. Этот столбец Используемый, возможно, не является существенным – однако, я думал, используя эту логику, мы могли бы указать первое доступное лечение (еще не использованное). Варианты обработки – это строки (здесь A или B выбираются случайным образом)

Когда пользователь FETCHES первый AVAILABLE Treatment в QUEUE, значение USED-колонки ОБНОВЛЯЕТСЯ, а 0 заменяется на 1. Когда первый пользователь получит первую обработку A, таблица должна выглядеть так:

  ID |  Allocation_number |  Лечение |  Используемый
 1 |  1 |  A |  1
 2 |  2 |  B |  0
 3 |  3 |  B |  0
 4 |  4 |  A |  0 

В: Как я мог достичь сценария, в котором посетитель NEXT, который запускает кнопку, получит доступное для него (в данном случае B) ПОСЛЕДУЮЩЕЕ ДОСТУПНОЕ лечение. Следующий получит следующий доступный, то есть B.

Другими словами, SQL Query должен найти значение VALUE столбца « Обработка» в строке, где значение используемого столбца имеет первое вхождение значения 0 – это первое, но UNUSED-лечение?

Может ли кто-нибудь помочь мне получить правильный SQL-запрос или зацепить его? Или у любого тела есть похожий плагин для WordPress для этого?

Итак, вы хотите использовать функцию MySQL ORDER BY:

SELECT Treatment FROM my_table WHERE Used=0 ORDER BY Allocation_number ASC LIMIT 1 

Итак, вы ищете все строки, где Used = 0, упорядочиваете их по номеру Allocation_number в порядке возрастания, а затем выбираете первую строку, которая соответствует. («ПРЕДЕЛ 1»)

Я позволю вам подключить это в $ wpdb как упражнение …;)

Надеюсь это поможет!

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

Это мой последний код:

  function return_treatment_type(){ global $wpdb; $tableName = $wpdb->prefix . 'random'; // Ensures that your table name matches the prefix in config.wp $where = ['random_ID' => $_POST[hidden]]; $user = new WP_User(get_current_user_id()); $user->roles[0]; $current_user = wp_get_current_user(); $url = "http://some.domain"; $myData = $wpdb->get_results("SELECT random_ID, treat_type, user_id, allocationused_date, random_owner, randomnumero_used, random_number, comment, created, updated FROM `$tableName` WHERE randomnumero_used=0 ORDER BY random_number ASC LIMIT 1"); foreach ( $myData as $myNData ) { echo "<form action='#' method=post>"; echo "<input type=datetime name=allocationused_date value=" . $myNData->allocationused_date . "><br>"; echo "<input type=bigint(60) name=user_id value=" . $current_user->user_login . "><br>"; echo "<input type=varchar(191) name=random_owner value=" . $myNData->random_owner . "><br>"; echo "<input type=longtext name=treat_type value=" . $myNData->treat_type . "><br>"; echo "<input type=tinyint(2) name=randomnumero_used value=" . $myNData->randomnumero_used . "><br>"; echo "<input type=int(10) name=random_number value=" . $myNData->random_number . "><br>"; echo "<input type=longtext name=comment value=" . $myNData->comment . "><br>"; echo "<input type=bigint(20) name=random_ID value=" . $myNData->random_ID . ">"; echo "<input type=hidden name=hidden value=" . $myNData->random_ID . ">"; echo "<input type=submit name=update value=update" . ">"; echo "</form>"; } if (isset($_POST['update'])) { foreach (['allocationused_date', 'user_id', 'random_owner', 'random_number', 'treat_type', 'randomnumero_used', 'comment', 'created', 'updated', 'random_ID',] as $field) { $data[$field] = $_POST[$field]; } if( $wpdb->update($tableName, $data, $where) === FALSE) echo "Failed"; else wp_redirect( $url ); exit; } } add_shortcode('random', 'return_treatment_type');