Sr.No неправильно работает в PHP MYSQL

Я хочу показать список моего продукта, как показано ниже:

Sr.No | Name | Type
--------------------
1     |  aa  | 2
2     |  bb  | 2
3     |  cc  | 3
4     |  dd  | 2
5     |  cc  | 4

Но это идет, как показано ниже

Sr.No | Name | Type
--------------------
3     |  aa  | 2
5     |  bb  | 2
1     |  cc  | 3
4     |  dd  | 2
2     |  cc  | 4

и когда любая новая запись сделана тогда:
Но это идет, как показано ниже

Sr.No | Name | Type
--------------------
4     |  aa  | 2
5     |  bb  | 2
2     |  cc  | 3
6     |  dd  | 2
3     |  cc  | 4
1     |  ec  | 5     // this below are two new entry made
7     |  fc  | 4

выше должно быть как ниже:

Sr.No | Name | Type
--------------------
1     |  aa  | 2
2     |  bb  | 2
3     |  cc  | 3
4     |  dd  | 2
5     |  cc  | 4
6     |  ec  | 5     // this below are two new entry made
7     |  fc  | 4

Дело не в том, что я хочу упорядочить по имени, я просто хочу нормальный Sr.No согласно записи … означает, что если я сначала добавлю какую-либо запись, то Sr.No 1, 2, 3 и так далее

Но когда я добавляю любую новую запись, ее Sr.No меняются, но она должна иметь последний sr.no.

Ниже я попробовал:

SELECT (@cnt := @cnt + 1) AS rowNumber, orn.name, orn.type ,  u.*
FROM  ofr AS u
CROSS JOIN (SELECT @cnt := 0) AS dummy
LEFT JOIN  or_name AS orn ON u.id=orn.id
GROUP BY u.id ORDER BY rowNumber AND u.add_datetime DESC

обратите внимание (@cnt: = @cnt + 1) AS rowNumber генерирует серийный номер, и это значение передается ниже под $ cols «Sr.No» …. Sr.No — это имя столбца и ничего больше … его значение идет по «rowNumber»

Листинг называется ниже:

$result =   get_details()

$cols = array(
_("Sr.No.")=>array('align'=>'center'),
_("Name")=>array('align'=>'center'),
_("Type")=>array('align'=>'center')
);

$table =& new_db_pager('tablename', $result, $cols, 'ofr','id',10);

$table->width = "95%";

display_db_pager($table);

База данных :

id : bigint(20)     UNSIGNED    No  None    AUTO_INCREMENT

Замечания : выше формат от http://frontaccounting.com/
демонстрационная ссылка: http://demo.frontaccounting.eu/

0

Решение

После более внимательного прочтения вопроса я удаляю свой старый ответ и пишу новый.

Похоже, вы пытаетесь автоматически назначить серийный номер каждой новой записи в таблице, и вы хотите, чтобы этот номер был постоянным. Специально для такого рода проблем есть инструмент: автоинкрементное целое число. Вам никогда не нужно устанавливать это поле при вставке записей — база данных автоматически назначит следующий номер.

В вашем DDL вы указываете, что вы хотите, чтобы поле было целым, автоинкрементным, а не нулевым:

CREATE TABLE ofr (
serial MEDIUMINT NOT NULL AUTO_INCREMENT,
... the rest of your fields ...
)

Когда вы запрашиваете таблицу, вам не нужно выполнять какой-либо сложный подсчет строк. Просто выберите серийное поле вместе со всем, что вы хотите.

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]