За последние 24 часа нас посетили 20569 программистов и 1008 роботов. Сейчас ищут 373 программиста ...

Как реализовать смс переписку между авторизованными пользователями сайта PHP MySQL

Тема в разделе "PHP для новичков", создана пользователем _ne_scaju_, 11 май 2017.

  1. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mkramer
    И все же я выбираю prepare так как в принципе мне сейчас без разницы как вытащить данные главное чтобы корректно работал запрос, и лишняя строка $blabla->execute мне не мешает, ну честное слово, @mkramer без обид.
    Да и я думаю еще так, что query что prepare по скорости будут одинаковыми) И вообще не буду спорить ты же лучше знаешь, а я новичек в этом деле.
     
    #301 _ne_scaju_, 23 июн 2017
    Последнее редактирование: 23 июн 2017
  2. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
    Ну и нахрен тогда мнения спрашиваешь? Делай как знаешь. Если бы я проводил собеседование, и ты мне такой код на собеседовании написал, я бы тебя сразу послал. Вот в ту же секунду.
     
  3. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mkramer
    это почему, потому что использовал prepare? или так просто по своей инициативе?
     
  4. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
    За prepare без плейсхолдеров
     
  5. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    я в конце мог добавить типа
    PHP:
    1. WHERE du.`user_id` = :user_id');
    2. $all_dialogs->execute(['user_id'=>$user_id]);
    вот тебе и один плейсхолдер :D
    ну а вообще в этот запрос не как не поставить плейсхолдеры, потому что нет переменных которые буду передаваться через execute.
    плюс в запросе идет сравнения полей чтобы поля что в той табл что в той табл совпадали.
    Ну я учту это замечание, переделаю запрос наверно под query а как же данные защитить проэкранировать в запросе?
     
  6. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
    Если бы было так написано, то я бы слова не сказал. Есть люди, которые даже константы так в запрос вставляют. Я к ним не отношусь, но логика видна - если потом вместо константы надо будет подставить переменную, запрос не надо будет менять.
    Как это нет, ты только что написал :)
     
  7. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mkramer
    Так значит если бы я так написал бы раньше, тебя бы на собеседовании это устроило бы, и претензий не было что ли, я правильно понимаю? :) Ты меня обрадовал)
    Так теперь есть переменная чтобы передавать ее через execute, это уже понятно. :)
    Подскажи ка мне если знаешь как можно скорость скрипта или запроса проверить?
     
  8. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
  9. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mkramer
    ага спасибо, почитаю применю, когда надо будет проверить скорость скриптов.
    Как думаешь что можно добавить еще в скрипт вывод диалогов, кроме последнего сообщения и диалогов с логином. ну понятно кнопка на удаления диалога и кнопка на открытие диалога.
     
  10. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
    Добавь поиск по диалогам. Поиск диалога по имени собеседника. Поиск по сообщениям внутри диалога. Диалог между 3-4 пользователями. Да фантазировать долго можно.
     
  11. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mkramer
    ухты не фига себе) точняк я не когда не делал поиск это же будет SELECT запрос, на поиск? А диалог между 2мя тремя пользователями это можно реализовать с моими таблицами или же поля и таблицы надо будет добавлять?
     
  12. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
    Ну вот и подумай, можно или нет.
    Ну а ты как думаешь? Поиск относится к выборке или вставке данных?
     
  13. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mkramer
    конечно выборке, вставка то есть вставка, а выборка относится к поиску.
     
  14. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mkramer
    Привет как можно сделать такое.
    Вот вывожу последние сообщение и мне надо вывести на экран не целое сообщение а лишь часть его, ну а при клике на него открывалось полное сообщение?
     
  15. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
  16. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mkramer
    Нет не забанили просто надо знать чем и какой функцией это делается, спасибо.
     
  17. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
    Не надо знать, надо уметь найти в документации, какой функцией это делается.
    --- Добавлено ---
    Задача может возникнуть любая в процессе работы, и ты должен сам находить решение, а не бегать на форум. Это же долго - написать сообщение, ждать ответа, так ты ни в один дедлайн не уложишься никогда.
     
  18. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mkramer
    Еще раз спасибо, нашел эту функцию что обрезает часть текста)
    Ну и применил ее.
     
  19. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mkramer
    Не могу додуматься как же сделать прочтения диалога. Примерно думаю так: в таблицу dialogs добавить поле status где 0 это будет прочитано, а 1 не прочитано. И вот тут ситуация такая, когда кто то пишет например: юзер1 пишет и в таблицу записывается его id_sender а status какой поставить при вставки диалога 0 или 1, я считаю так для того кто пишет оно считается прочитано то-есть 0 а как буду определять тому кому мы пишет юзер1 что у принимавшего юзера есть не прочитанный диалог если status стоит уже в 0 то-есть прочитано. Или же когда юзер1 пишет записываем его id_sender и status в 1 то-есть не прочитано. Помогите пожалуйста мне не пойму реализацию.
     
    #319 _ne_scaju_, 26 июн 2017
    Последнее редактирование: 26 июн 2017
  20. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
    Тебе надо чтоб диалог отмечался прочитанным, или сообщения? Я через доп. таблицу делал отметку прочитан ли диалог и кем.
     
  21. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mkramer
    Ну логично, если у меня диалог без примочек, от кого и кому. То мне нужно чтобы прочтения было самого диалога, до сообщений позже дойду. Как это можно реализовать? А моя мысль вообще не подходит?
     
  22. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
    А ты как думаешь? Особенно учитывая, что ты взял мою схему связи диалога с пользователем. Одним пользователем прочитано, другим не прочитано. А сама таблица диалог в варианте, который ты с моей подсказки взял, этих пользователей не хранит (и это нам дало определённые преимущества, насколько ты помнишь).
     
  23. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mkramer
    Почему не хранит, все же отправителя хранить, а точнее его id. Походу ты ведёшь к тому что надо ещё одна таблица с тремя полями: sender, poluchatel, status. И эта таблица будет связана с таблицей dialogs. Это лишь предложение. Теперь твоя мысль.
     
  24. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
    Почти. user_id, dialog_id, has_read
    --- Добавлено ---
    Не утверждаю, что это лучшее решение, но самое простое и масштабируемое из тех, что удалось найти мне.
     
  25. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mkramer
    Допустим создаю таблицу dialog_read (user_id, dialog_id, has_read) я так понял в этой таблице не нужен id нумерация.
    user_id - чей сюда будем вставлять
    dialog_id - ну понятно номер диалога
    has_read - будет ли у него по умолчанию стоять значение?