Ответы пользователя по тегу MySQL
  • Как правильно организовать хранение продуктов для доски объявлений?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Вариантов реализации просто неисчислимое множество, все они имеют свои плюсы и минусы, в зависимости от того что и с чем вы будете комбинировать. Конечно, наихудший вариант - одна таблица со всеми свойствами, вам нужно смотреть в сторону решений с максимальной нормализацией (смотрите материал по нормальным формам бд), и создав схему с нормальной формой, уже в нужных местах произвести денормализацию, необходимую для какого-либо особого функционала.
    Проще говоря - (почти)все свойства объявлений должны храниться отдельно от записей объявления, и связываться через промежуточную таблицу по ключам. то же относится и к свойствам пользователей.
    Ответ написан
    Комментировать
  • Как правильно создать список песен для пользователя?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    многие ко многим?
    Ответ написан
    Комментировать
  • Как реализовать систему пользователей php/mysql?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    В mysql есть реализация системы прав пользователей с гибкой настройкой доступа к данным. При регистрации пользователя на сайте, ему присваиваются данные права, т.е. используются именно эти возможности mysql?
    Нет, это пользователи чисто бд, для этого в веб приложениях они не используются.
    Информация об авторизации фиксируется не чьей стороне? При переходах со страницы на страницу каждый раз происходит переконнект к БД, а значит теряется информация о предыдущей сессии?

    Не надо путать авторизацию пользователя на сайте и авторизацию скрипта при доступе к бд. Скрипт имеет единые настройки для подключения к бд, а пользователь взаимодействует со скриптом через вебсервер, напрямую к бд пользователь никак не может обратиться. При авторизации цепочка действий примерно следующая:
    - вводим данные авторизации(браузер) и отправляем на сервер
    - сервер принимает данные, создает соединение к бд, и проверяет запросом правильные ли данные ввел пользователь.
    - Если все ок, создается запись в сессии(читайте про механизм сессий в пхп), и в дальнейшем проверяется при каждом запросе к серверу, есть ли соответствующий ключ в сессии. Если есть - значит пользователь авторизирован.
    Ответ написан
    Комментировать
  • Как исправить сдвиг времени (MySQL запрос)?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    при инициализации соединения выполнить запрос "SET time_zone = '+2:00';" (или другой соответствующий часовой пояс), в пхп соответственно тоже настроить таймзону, чтобы не было расхождения, настройки ОС трогать нет необходимости.
    Ответ написан
  • Выбор формата хранения времени?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Все очень просто - если это дата и/или время - использовать формат datetime, во всех остальных случаях соответствующие хранимым данным типы. Int для timestamp вообще непотребство в чистом виде.
    Дату/время рождения - это DATETIME

    У вас хранится время рождения? Тут можно использовать DATE, но я бы не скупился и поставил DATETIME из соображений единообразности работы с датой и временем.
    Ответ написан
  • Как построить базу данных?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Я правильно понял что лучше сделать разные таблица до разного товара

    Нет, не правильно.
    Вариантов хранения и выборки с таким типом связей много придумано, все они имеют свои достоинства и недостатки, но ни одна не использует хранение атрибутов в "плоской" таблице. Александр Аксентьев вот вам подкинул пару ссылок на варианты связей сущностей, но их в природе гораздо больше. Ищите ту которая подойдет лучше в вашем случае.
    Ответ написан
    Комментировать
  • Как в цикле редактировать БД?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    вариант 1:
    Каждый из блоков заключить в тег <form></form>, внутри создать соответствующие скрытые поля. При субмите будете получать весь набор данных, согласно которым уже можно что-то в базу писать. У вас же судя по всему одна форма на весь список. По этому в обработчик попадают все данные, но та как поля дублируются по имени - учитываются последние полученные данные, то есть самые нижние поля. Что и происходит у вас, последний набор меняет состояние.
    Вариант 2: принцип как у варианта 1, только через яваскрипт отлавливать нажатую кнопку и от этого уже делать субмит нужных полей, например используя аякс. Вариант более сложный для новичка, и в целом не слишком популярный.
    Вариант 3: смесь 1 и 2 - при субмите формы отлавливать событие яваскриптом и отправлять данные аяксом на сервер в виде сериализованных данных. По результату ответа от сервера менять состояние кнопки яваскриптом на "готово", или как там у вас, и кнопку дизэйблить.
    Ответ написан
    Комментировать
  • Как делать INSERT по кнопке?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    чета мало кода, ну да смысл примерно понятен...

    Хинт: инпут вида
    <input type='text' name='username[]' value='somename'>
    вставленный многократно, на стороне сервера будет интерпретирован как массив, который можно перебрать и получить весь список из ваших 100 строк. Если форма методом post, то соответственно на сервере будет $_POST['username'][0] = 'somename';
    Ответ написан
  • Как гарантированно получить новую запись в запросе MySql внутри транзакции?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    после транзакции запросить LAST_INSERT_ID, и его уже использовать для выборки
    Ответ написан
  • SQL LIKE поиск несколько значений?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    1) Код запроса куском, так что в нем может быть другие условия ограничивающие выборку, и соответственно строка будет пустой
    2) Убедитесь что такая строка у вас есть в базе, для начала сделайте запрос проще, уберите все условия кроме like и выполните запрос из пхпмайадмин или другого средства администрирования(консоль, воркбенч...). Для полной уверенности в like можно вставить 1-2 буквы точно попадающие в поле, а не длинную фразу/слово.
    3) Дополнение к 2. Возможно ошибка не на уровне SQL, а в прикладном коде, например неверно указана кодировка подключения к БД.
    Ответ написан
    Комментировать
  • Как сформировать запрос для нескольких таблиц без повторов выводимых данных?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Так как запросы из бд возвращают построковые данные, ни о каких вложенных массивах речи быть не может. Единственный вариант - хранить в поле json, который, уже после получения, средствами языка получать как массив/объект. Или как написал oxidmod - конкатенацией групп, получим строку вместо json, но хранение будет более нормализованным.
    Ответ написан
    Комментировать
  • MySQL - как мне достать из БД из столбца определенное количество символов, но без тегов?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Неправильный ответ: Доставайте больше и обрезайте
    Правильный ответ: При сохранении создавайте в бд дополнительное свойство с уже почищенным текстом нужной длинны.
    Ответ написан
    3 комментария
  • Оптимальна ли реализация чата?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Если это не продакшн, а скажем, учебно-развлекательный проект, то пойдет. Можно увеличить интервал до 5 сек, а в базе выбирать по времени больше времени последнего полученного сообщения, это сократит нагрузку. Время надо отсылать при запросе к серверу. Все прочитанные получателем (т.е. отосланные в ответ на аякс запрос) записи чата помечаются в отдельном поле в таблице(например `readed` = 1), и в дальнейшем не выбираются. В идеале переписать на сокеты, ибо аякс интервалы не лучший способ реализации.
    Ответ написан
    Комментировать
  • Каким образом обновить Id базе данных?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    В любом коде (не зависимо от языка, т.к. в данном случае речь идет о структуре данных) идентификатор записи в таблице БД (при условии что это именно идентификатор, т.е. уникальный автоинкрементный индексный ключ) не должен меняться, и всегда привязан к единственной сущности(читай строке в базе). Вас не должно смущать то что таблица имеет некоторую "разряженность", то есть набор не идущих по порядку идентификаторов, это нормальное состояние бд.
    Ответ написан
    4 комментария
  • Как написать sql?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    https://stackoverflow.com/questions/17942508/sql-s...
    надо же, думал такой изврат может существовать только в 1 экземпляре...
    Ответ написан
    Комментировать
  • Как подставить значение из ТЕЧЕ в sql php?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Юноша, этому коду (ну или источнику кода) лет больше чем вам.
    1) где вы это г откопали?
    2) Зачем вы занимаетесь некрофилиейфигней по древним манускриптам? Что хорошо для магии плохо для программирования.
    Ответ написан
    2 комментария
  • Как осуществить поиск состоящий из 1к слов по таблицам mysql?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    1000 слов во всей базе? Тогда в чем вопрос? Должно быстро гоняться, хотя если это предложения, лучше повесить фуллтекст. И уже им гонять.
    Ответ написан
  • Почему при обновление страницы повторяется запись в базу данных?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    $id = $_COOKIE['user_id'];
    ...
    if ($id) {
      mysql_query("UPDATE `user` SET `bal` = `bal` + $bonus WHERE `part` = $id");
    }

    ничего не кажется странным? )
    Ответ написан
  • Правильно ли хранить данные JSON в MySql, в место создания кучи таблиц?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Читать нормальные формы для РБД. Связи. Коротко - таблицы должно содержать отдельные значимые единицы информации в отдельных полях, если эти информационные блоки относятся к разным сущностям - это должны быть разные таблицы. Связи между сущностями соотносятся через ключи-идентификаторы. Дублирование информации в таблицах в идеале отсутствует, то есть если в таблице А есть значение а, которое может быть связано с таблицей Б, в Б это значение не записывается, а создается связь через ключ с таблицей А, или, если таких связей может быть много - создается отдельная таблица связей(один ко многим или многие ко многим).
    Ответ написан
    Комментировать