Было бы эффективнее делать это на чистом SQL, а не на PHP. Вот подход, использующий оконные функции, доступный в MySQL 8.0.
Вы можете использовать подзапрос, чтобы подсчитать, сколько title
дубликатов существует для каждой записи, и назначить ранг каждой записи в группах записей, имеющих одинаковые title
. Затем вы можете JOIN
подзапрос с таблицей для обновления. Если существует более одной записи, вы можете добавить номер строки к каждой записи в группе.
Запрос:
UPDATE arts a
INNER JOIN (
SELECT
id,
title,
COUNT(*) OVER(PARTITION BY title) cnt,
ROW_NUMBER() OVER(PARTITION BY title ORDER BY id) rn
FROM arts
) b ON a.id = b.id
SET a.title = CONCAT(a.title, b.rn)
WHERE cnt > 1;
Пример данных:
| id | title |
| --- | ------ |
| 10 | silver |
| 20 | gold |
| 30 | gold |
| 40 | bronze |
| 50 | gold |
| 60 | bronze |
Результаты после запустив запрос на обновление:
| id | title |
| --- | ------- |
| 10 | silver |
| 20 | gold1 |
| 30 | gold2 |
| 40 | bronze1 |
| 50 | gold3 |
| 60 | bronze2 |
Используйте GetWindowRect. Вычтите право слева, чтобы заставить ширину и нижнюю часть от вершины получать высоту.
RECT rect;
if(GetWindowRect(hwnd, &rect))
{
int width = rect.right - rect.left;
int height = rect.bottom - rect.top;
}
Как примечание стороны, если Вы хотели бы клиентскую область вместо всего окна. Можно использовать GetClientRect. Для другой информации об окне можно использовать GetWindowInfo.
Вы попробовали GetWindowRect()
или GetWindowInfo()
который возвращает a WINDOWINFO
структура?
Я полагаю, что Вы ищете GetWindowInfo
Пример:
HWND window = ::CreateWindowEx(...);
WINDOWINFO info;
if ( ::GetWindowInfo(window, &info) ) {
...
}
Данный нет никакого признака, почему Вам нужен размер, и что размер может измениться, если стиль окна установлен включать атрибуты изменяемого размера [и пользователь изменяет размер использования окна, минимизируют/максимизируют/восстанавливают, или перетаскивает край окна], Ваш самый безопасный выбор состоит в том, чтобы включать обработчика сообщений для WM_SIZE и использовать wparam и lparam значения параметров для определения размеров окна. Таким образом, Вы будете всегда знать текущий размер. WM_SIZE называют в последовательности создания окна сообщения сообщений.