Задать вопрос
Ответы пользователя по тегу MySQL
  • MySQL - Как правильно сформулировать запрос?

    Если я Вас правильно понял:
    нужно получить всех пользователей, у которых есть диалог с данным пользователем

    SELECT u.* 
    FROM users u 
    WHERE 
    (
        u.id IN (SELECT user_one FROM dialogs WHERE user_two=ID_ПОЛЬЗОВАТЕЛЯ) 
        OR 
        u.id IN (SELECT user_two FROM dialogs WHERE user_one=ID_ПОЛЬЗОВАТЕЛЯ) 
    )
    Ответ написан
    Комментировать
  • Как создать и хранить уникальный идентификатор заказа?

    Попробуйте сделать поле с UUID.
    Вот документация
    Оттуда:
    A UUID is designed as a number that is globally unique in space and time. Two calls to UUID() are expected to generate two different values, even if these calls are performed on two separate computers that are not connected to each other.

    Вам должно подойти.

    UPD1. Как хранить:
    Создаем поле типа BINARY( 16 ) (вместо int) и делаем его primary key.
    Это получается потому-что мы из строки
    110E8400-E29B-11D4-A716-446655440000

    удаляем все тире и у нас получается
    110E8400E29B11D4A716446655440000

    Это 32 символа в шеснадцатеричной системе, если хранить в бинарной - получается 16. Преобразовать в бинарную можно с помощью такой конструкции:
    UNHEX("110E8400E29B11D4A716446655440000")
    Обратно:
    HEX(field_binary)

    С производительностью проблем никаких, т.к. храним число в бинарном виде.

    Вот тут более подробно разобрано: stackoverflow
    Ответ написан
    9 комментариев
  • Как правильно вывести записи из бд с оформлением?

    Могу предложить такой вариант: у вас будет код, который будет обрабатывать данные (грубо говоря - контроллер) и шаблон, который будет вставлять готовые данные в html (это называется view).

    Функция рендера такого шаблона может выглядеть так:
    function render($templateName, $templateData)
    {
            extract($templateData,EXTR_SKIP);
            ob_start();
            require($templateName);
            return ob_get_clean();
    }


    В этой функции мы с помощью extract все ключи ассоциативного массива $templateData превращаем в переменные текущей области видимости (они попадут в шаблон). Первый параметр - путь к шаблону.

    Вызываться в контроллере она будет примерно так:
    $templateVars = array();
    $templateVars['data'] = array();
    $templateVars['content'] = array(); // итд
    while ($templateVars['data'][] = mysqli_fetch_assoc($result));
    $html = render('templates/templ1.php',$templateVars);
    echo $html;


    А код шаблона будет выглядеть примерно так (тот самый файл templates/templ1.php, который мы использовали выше):
    <?php for($i = 0; $i != count($data); ++$i) { $row = $data[$i]; ?>
        <div class='panel panel-default'>
            <div class='panel-heading'><h4><?=$row['title']?></h4></div>
            <div class='panel-body story'>
                <?=$content[0]?>
                <div class='clearfix'></div>
                <hr>
                <div class='row'>
                    <p class='col-xs-6 text-left'>
                          <a href='post.php?id=<?=$row['id']?>'>Прочитать</a>
                    </p>
                    <p class='col-xs-6 text-right'>
                          <span class='glyphicon glyphicon-comment'><?=$row['countcomments']?></span>
                    </p>
                </div>
            </div>
        </div>
    <?php } ?>


    Очень желательно ничего с данными в шаблоне не делать.
    Ответ написан