Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Как массово стандартизировать записи в mysql
Покинул форум
Сообщений всего: 103
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
Добрый вечер. Есть таблица с киентами, в ней ячейка " телефон"
При оформлении заказа я не ставил в инпуты стандарт ввода телефона и по этому каждый клиент свой телефон записывал как ему вздумается, а именно в международном формате, либо с си мволами скобочками, либо в городском формате или пробелмы ставят и так далее
Записей 3000+ руками очень долго менять все это, каким методом проще привести все телефоны к формату +37529XXXXXXX ?
mysql, php либо exel?
C уважением, Павел
Строитель
Отправлено: 26 Июля, 2017 - 21:25:19
Участник
Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014 Откуда: Украина
Помог: 73 раз(а)
zapatronen пишет:
mysql, php либо exel?
Скорее, regex. Написать пример?
zapatronen
Отправлено: 26 Июля, 2017 - 21:35:08
Гость
Покинул форум
Сообщений всего: 103
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
Строитель пишет:
zapatronen пишет:
mysql, php либо exel?
Скорее, regex. Написать пример?
если не затруднит, то буду признателен
Строитель
Отправлено: 26 Июля, 2017 - 22:31:48
Участник
Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014 Откуда: Украина
Помог: 73 раз(а)
zapatronen, в этом примере из строки удаляются плюсы, пробелы между цифрами, скобки и тире. А так же происходит замена цифр тех номеров, которые начинаются с цифры "8" - замена на +37. Остался только один вопрос - к какому формату приводить короткие номера "2830215"? Или их просто удалять?
Покинул форум
Сообщений всего: 103
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
Строитель пишет:
zapatronen, в этом примере из строки удаляются плюсы, пробелы между цифрами, скобки и тире. А так же происходит замена цифр тех номеров, которые начинаются с цифры "8" - замена на +37. Остался только один вопрос - к какому формату приводить короткие номера "2830215"? Или их просто удалять?
С короткими я просто удаляю их, нужен единый формат номера, чтобы связать заказы вместе одного клиента по номеру, короткие номера я записывал для людей которые приезжали забирали самовывозом товар
Попробовал добавить код
$query="UPDATE orders SET telefon='$string' ";
$data=mysqli_query($dbc, $query) or die('error');
Все телефоны заменились на один и тот же из первой строки, начал делать востановление таблицы, сломал хостинг, терь ошибка 500 выскакивает уже подумываю руками все переделать))))
Строитель
Отправлено: 27 Июля, 2017 - 18:17:18
Участник
Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014 Откуда: Украина
Помог: 73 раз(а)
zapatronen, вручную переписывать не нужно. Я вчера написал пример для строки со списком телефонов, но у вас этот список хранится в массиве же? Если да, то надо обработать этот массив регуляркой, и после этого перезаписать номера телефонов в бд.
zapatronen
Отправлено: 27 Июля, 2017 - 18:36:32
Гость
Покинул форум
Сообщений всего: 103
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
Строитель пишет:
zapatronen, вручную переписывать не нужно. Я вчера написал пример для строки со списком телефонов, но у вас этот список хранится в массиве же? Если да, то надо обработать этот массив регуляркой, и после этого перезаписать номера телефонов в бд.
да руками глупо и долго, сейчас базу востановлю буду опять пробовать, как получится я выложу сюда код (Добавление)
Строитель пишет:
zapatronen, вручную переписывать не нужно. Я вчера написал пример для строки со списком телефонов, но у вас этот список хранится в массиве же? Если да, то надо обработать этот массив регуляркой, и после этого перезаписать номера телефонов в бд.
и да в массиве, только что-то пошло не так (Добавление)
Строитель пишет:
zapatronen, вручную переписывать не нужно. Я вчера написал пример для строки со списком телефонов, но у вас этот список хранится в массиве же? Если да, то надо обработать этот массив регуляркой, и после этого перезаписать номера телефонов в бд.
Пожалуйста проинспектируйт меня, готов нажать на интер)))
Покинул форум
Сообщений всего: 58
Дата рег-ции: Июнь 2017 Откуда: php.ru
Помог: 1 раз(а)
это что за говнокод ?
насиловать Мускуль в цикле обоими
zapatronen пишет:
3000+ руками
(Добавление)
zapatronen пишет:
$masiv[]=$string;
что за бред Киркорова ? Нотис в лицо (Добавление)
работа с циклом не логический абуз с выполнением в 1 циклический обход, Не оправданное говнокодство
zapatronen
Отправлено: 27 Июля, 2017 - 20:12:47
Гость
Покинул форум
Сообщений всего: 103
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
MouseZver пишет:
это что за говнокод ?
насиловать Мускуль в цикле обоими
zapatronen пишет:
3000+ руками
(Добавление)
zapatronen пишет:
$masiv[]=$string;
что за бред Киркорова ? Нотис в лицо (Добавление)
работа с циклом не логический абуз с выполнением в 1 циклический обход, Не оправданное говнокодство
в плане не заработает?
Строитель
Отправлено: 27 Июля, 2017 - 20:19:11
Участник
Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014 Откуда: Украина
Помог: 73 раз(а)
zapatronen пишет:
готов нажать на интер
Не торопитесь (писал только что много текста, и всё сбросилось... сейчас напишу ещё раз по-короче) (Добавление)
У вас все номера сейчас лежат в массиве
Верно? После удаления из массива коротких номеров (2830215) Количество записей в массиве станет меньше количества записей в базе - как вы будете соотносить данные из массива с данными в базе? Вероятно, никак. Вам надо из базы получать ещё и поля id, чтобы результирующий массив имел ассоциативную связь с конкретным номером.
После изменения массива (удаление лишних символов и коротких номеров) вам надо в цикле собрать строку sql-запроса, и потом передать эту строку в функцию mysqli_query(). Т.е., функция mysqli_query() будет вызвана один раз.
zapatronen
Отправлено: 27 Июля, 2017 - 20:39:28
Гость
Покинул форум
Сообщений всего: 103
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
Строитель пишет:
zapatronen пишет:
готов нажать на интер
Не торопитесь (писал только что много текста, и всё сбросилось... сейчас напишу ещё раз по-короче) (Добавление)
У вас все номера сейчас лежат в массиве
Верно? После удаления из массива коротких номеров (2830215) Количество записей в массиве станет меньше количества записей в базе - как вы будете соотносить данные из массива с данными в базе? Вероятно, никак. Вам надо из базы получать ещё и поля id, чтобы результирующий массив имел ассоциативную связь с конкретным номером.
После изменения массива (удаление лишних символов и коротких номеров) вам надо в цикле собрать строку sql-запроса, и потом передать эту строку в функцию mysqli_query(). Т.е., функция mysqli_query() будет вызвана один раз.
примерно понятно, щас попробую это все на практике применить (Добавление)
Строитель пишет:
zapatronen пишет:
готов нажать на интер
Не торопитесь (писал только что много текста, и всё сбросилось... сейчас напишу ещё раз по-короче) (Добавление)
У вас все номера сейчас лежат в массиве
Верно? После удаления из массива коротких номеров (2830215) Количество записей в массиве станет меньше количества записей в базе - как вы будете соотносить данные из массива с данными в базе? Вероятно, никак. Вам надо из базы получать ещё и поля id, чтобы результирующий массив имел ассоциативную связь с конкретным номером.
После изменения массива (удаление лишних символов и коротких номеров) вам надо в цикле собрать строку sql-запроса, и потом передать эту строку в функцию mysqli_query(). Т.е., функция mysqli_query() будет вызвана один раз.
Все верно, только короткие останутся, но суть я уловил, что все сместиться и я так поменяю, чт омама не горюй, все данные сместяться и будет беда
Приступлю тогда к изучениям, отпишу как буду готов
zapatronen
Отправлено: 27 Июля, 2017 - 23:49:14
Гость
Покинул форум
Сообщений всего: 103
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
Вообщем все меняется все обновляется и по своим полям без удаления коротких номеров, они пускай остаются так как не мешают. Если ассоциировать свой каждый номер к айдишнику - это как я понимаю указывать в sql запросе WHERE user_id=$id
Ничерта не понимаю как mysqli_query из цикла достать чтобы вызывать один раз.
Все перезаписывается по своим местам без проблем, единственное о чем я бы хотел покляньчить - это подкоректировать регулярное выражение, чтобы формат телефона 8029 8033 8044 8025
заменялся на +37529, +37533, +37544,+37525
Сейчас тоже меняет, но остается ноль, например, 80447616539 меняется на +370447616539
я как открыл почитать про синтаксис регулярок, так и понял что это отдельный том программирования
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.