За последние 24 часа нас посетили 24335 программистов и 1645 роботов. Сейчас ищут 1294 программиста ...

PHP MyAdmin привести запись в поле к виду*

Тема в разделе "PHP для новичков", создана пользователем BaranPHP, 9 апр 2014.

  1. BaranPHP

    BaranPHP Новичок

    С нами с:
    24 янв 2014
    Сообщения:
    356
    Симпатии:
    0
    Доброго дня.
    Вопрос наверно глупый. Пользуюсь PHP MyAdmin ver. 4.1.8. в нём имеется таблица "Test" с полями "test_id" и "name". Поле "test_id" создано как tinyint(6), UNSIGNED с автоинкрементом. То есть сейчас автоматом проставляются значения 1,2,3,4... и т.д. Мне же надо привести его к значению 000001, 000002, 000003, 000004... и т.д., и уметь задавать начальное значение (чтобы первая запись создавалась не 1 а скажем 000978).
    1) Возможно ли провести такую операцию настройкой поля "test_id" средствами PHP MyAdmin?
    2) Если 1) не возможен: Возможно ли автоматическая генерация значения в поле "name" по схеме ("test_id=1""name=000978", "test_id=2""name=000979", "test_id=3""name=000979") опять же средствами PHP MyAdmin?
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    1) phpMyAdmin - не БД. Это просто пхпшный клиент.
    2) Не трогайте ключи. Пусть они генерятся как есть.
    3) Заведите отдельную колонку под значения, которые вам нужны, либо, что лучше, приводите к желаемому виду руками в пыхе айдишники.
    4) Нахрена, нахрена, нахрена оно надо? Чтобы выглядело солиднее?
     
  3. BaranPHP

    BaranPHP Новичок

    С нами с:
    24 янв 2014
    Сообщения:
    356
    Симпатии:
    0
    Ну в первую очередь для удобства, и понимания как всё работает, ведь там есть поля "Преобразование" и "Параметры преобразований". Я лично не понимаю зачем писать функцию если можно настроить PHP MyAdmin ...... если конечно можно.
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Код (Text):
    1. CREATE TABLE `pun142_categories` (
    2.   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    3. ...
    4.   PRIMARY KEY (`id`)
    5. ) AUTO_INCREMENT=23456;
    а превращать 929 в "000929" лучше в Представлении (т.е. в PHP). так проще: завтра тебе приспичит "-=#$(929)$#=-' и ты с легкостью решишь это.
     
  5. BaranPHP

    BaranPHP Новичок

    С нами с:
    24 янв 2014
    Сообщения:
    356
    Симпатии:
    0
    Я правильно понимаю что это SQL запрос?
    Если так то у меня что то не работает. Ругается:
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.. PRIMARY KEY (`id`) ) AUTO_INCREMENT=23456' at line 3

    я правильно понял?
    Код (Text):
    1. CREATE TABLE `название таблицы` (
    2.   `название поля таблицы` int(10) unsigned NOT NULL AUTO_INCREMENT,
    3. ...что сюда подставить?
    4.   PRIMARY KEY (`название поля таблицы`)
    5. ) AUTO_INCREMENT=число с которого должен начинатся отсчёт;
     
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Понял правильно.

    Многоточие - это другие поля таблицы, какие тебе хочется. У artoodetoo с телепатией туго, вот он и не написал там те строки, которые ты хотел бы там видеть. Бывает такое со всеми порой.
     
  7. BaranPHP

    BaranPHP Новичок

    С нами с:
    24 янв 2014
    Сообщения:
    356
    Симпатии:
    0
    Спасибо пример стал понятен.
    а вот как то организовать замену значений в уже существующей таблице?
     
  8. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Не нужно ничего заменять. Тебе же сказали - храни правильно. А заменяй уже при выводе на страницу. Заменяй то, что видит пользователь, а не то, что хранится на самом деле.
     
  9. BaranPHP

    BaranPHP Новичок

    С нами с:
    24 янв 2014
    Сообщения:
    356
    Симпатии:
    0
    Это Вам спецам ни хрена не нужно )) А мне ой как нужно.
    Постараюсь объяснить у меня есть БД с номерами (id) 637, 638, ........ 978 А автоинкримент в ней начинался с 1. То есть есть более 300 записей со значениями 637-978 а новые пошли с 1. Конечно у вас таких косяков наверно не бывает. Но вот мне чтобы всё заработало надо только заменить текущий автоинкримент на 979. Эти цифры выводят номера накладных в виде 000979 и уж хрен с ними с нулями я их как то присобачу на выходе. Но вот цифры должны идти по порядку.
    Конечно я могу присобачить что то типа IF "test_id"< 637 echo ("test_id"+978) тогда 1 будет равно 979 но эта конструкция не будет работать как только новых записей наберётся более 636.
     
  10. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Пользователь видит не число из БД, а строку, сформированную твоим скриптом. Формируй ее как твоей душе угодно. В пхп, благо, тонна строковых функций. Вплоть до того, что конверти число в строку, считай его длину, если она меньше нужного количества, нарасти слева нужное количество нулей. Простой конкатенацией, через точку.

    Чтобы циклы ради приращивания ноликов не плодить, можешь поставить 5-вариантный свитч. В нем проверяй, сколько не хватает нулей и наращивай, согласно требуемому количеству. У тебя же все равно только 6-значные числа. Один знак всегда занят как минимум. Значит 5 знаков вариативны. 6 вариант в свитче - дефолтный, если не нужно ничего наращивать. Вуаля.

    Не смешивай в своем понимании воедино внешнее представление данных и внутреннее.
     
  11. BaranPHP

    BaranPHP Новичок

    С нами с:
    24 янв 2014
    Сообщения:
    356
    Симпатии:
    0
    Ну не дебил я, понимаю что Вы советуете и что советы ваши правильные. Но меня интерисовала работа PHP MyAdmin.
    В частности
    На этот вопрос мне ответил artoodetoo, он объяснил как задать автоинкримент при создании новой таблицы и порекомендовал не заморачиватся с нулями. Потом я задал вопрос как поменять текущее значение автоинкримента в готовой таблице.

    КОРОЧЕ РЕШЕНИЕ НАЙДЕННО! для этого не надо даже SQL запросов, достаточно зайти в PHP MyAdmin в вкладку "вставить" и задать в поле "test_id" нужное значение (в моём случае 978) после этого нажать "ок" . Важно именно "вставить" а не "изменить". Изначально я именно менял.