Skip to content

Свой сайт знакомств #15: реализуем симпатии (лайки) и просмотры анкет на PHP, HTML, SQL, Bootstrap

Разработка сайта знакомств на PHP с реализацией лайков и просмотров анкет, используя Bootstrap и SQL.

Key Takeaways

  • Использование папочной структуры для роутинга упрощает организацию проекта.
  • Собственные скрипты Bootstrap позволяют контролировать внешний вид без сторонних зависимостей.
  • Функционал лайков и просмотров анкет повышает интерактивность сайта знакомств.
  • Правильное подключение хедера и футера улучшает поддержку и масштабируемость кода.
  • Ранжирование пользователей по последнему времени активности делает сервис более релевантным.

What the video covers

  • Автор показывает процесс разработки дейтинг-сервиса на PHP, HTML, SQL и Bootstrap в реальном времени.
  • Реализуется система роутинга с использованием папок для скриптов без отдельного маршрутизатора.
  • Добавляется функционал просмотра анкет и перехода по ним с корректным подключением стилей и скриптов.
  • Переход на собственные скрипты Bootstrap без внешних подключений.
  • Реализуется возможность ставить лайки (симпатии) другим пользователям с хранением данных в базе.
  • Обсуждается структура базы данных и подход к проектированию для удобства и расширяемости.
  • Добавляется подсчет просмотров анкет и возможность ранжирования пользователей по активности.
  • Исправляются ошибки с кодировкой и оптимизируется подключение хедера и футера на страницах.
  • Автор делится своими подходами и советами по созданию функционала для сайта знакомств.
  • В конце видео подводятся итоги и призывы к подписчикам оставлять комментарии и идеи.

Answers

Questions about this video

Как реализован роутинг в проекте?

Роутинг реализован через организацию скриптов в отдельных папках без использования отдельного маршрутизатора, что упрощает структуру проекта.

Как добавляются лайки (симпатии) пользователям?

Лайки реализуются через кнопку на странице анкеты, данные о лайках сохраняются в таблице базы данных с идентификаторами пользователей, ставящих и получающих симпатию.

Почему важно ранжировать пользователей по времени последнего захода?

Ранжирование по последнему времени активности позволяет показывать актуальных пользователей, что повышает эффективность взаимодействия и снижает вероятность контакта с неактивными аккаунтами.

Full Transcript — Download SRT & Markdown

00:00
Speaker A
Добрый день, дорогие подписчики! Рад вас приветствовать на новом выпуске проекта "Свой сайт знакомств", где мы с вами в режиме реального времени разрабатываем и запускаем свой дейтинг-сервис. Я напоминаю, что у нас уже есть, получается, некое подобие сайта знакомств.
00:21
Speaker A
соответственно есть раздел с моими данными есть раздел с поиском анкет м есть возможность просмотреть анкеты каких-то людей и хотелось бы добавить немного функционала Вот ну во-первых как вы помните в прошлом выпуске мы выбрали путь может быть немножечко странный Но мы его уже
00:47
Speaker A
Соответственно, есть раздел с моими данными, есть раздел с поиском анкет, есть возможность просмотреть анкеты каких-то людей, и хотелось бы добавить немного функционала. Вот, ну во-первых, как вы помните, в прошлом выпуске мы выбрали путь, может быть, немножечко странный, но мы его уже выбрали.
01:15
Speaker A
дальше так у нас что то есть первые первый скрипт который я вижу это у нас с вами скрипт анкета значит сейчас что Я создаю папочку анкета вот перемещаю туда соответственно наш скрипт угу он перемещается так дальше я его
01:43
Speaker A
Давайте его придерживаться: роутинг на папках, то есть мы никакого отдельного скрипта для перенаправления страниц не используем. Соответственно, все скрипты размещаем в отдельных папках, которые у нас будут с вами открываться. Я сейчас предлагаю сначала эту работу доделать вот и уже пойдём.
02:10
Speaker A
тут так пролистывании до того места где у нас с вами выводится ссылка То есть хорошо раз используем такую систему роутинг Давайте её использовать везде и доведём до рабочего состояния так вот эту сортировку я пока наверное уберу или же вообще
02:34
Speaker A
Дальше. Так, у нас что? То есть первый скрипт, который я вижу, это у нас с вами скрипт анкета. Значит, сейчас я создаю папочку "анкета", вот, перемещаю туда соответственно наш скрипт. Угу, он перемещается. Так, дальше я его.
02:54
Speaker A
хочет допустим не хочет даже заходить на сайт Зачем ему давать э возможность что-то там найти так вот я вижу Ага То есть Я сейчас убираю с конца PHP скрипт PHP ставлю даже наверное не слеш а просто пускай будет анкета и ID соответственно
03:21
Speaker A
Переименовываю и соответственно ссылку уже на него буду ставить. Так, да, удалить в виде слэша, так. Сейчас у нас где? Давайте посмотрим. Я с какой страницы сейчас? Я со страницы поиск. Так, так, так, поиск, поиск, поиск. Вот он у нас.
03:54
Speaker A
и в самом низу давайте я точно также реализую подключение фай стал так поменялось что-то Да поменялось хорошо а я Напоминаю что мы кстати перешли же полностью на свои скрипты бутстрап то есть мы их больше ниоткуда не подгружает тут вот неплохо было бы
04:23
Speaker A
Тут, так, пролистывании до того места, где у нас с вами выводится ссылка. То есть хорошо, раз используем такую систему роутинга, давайте её использовать везде и доведём до рабочего состояния. Так, вот эту сортировку я пока, наверное, уберу или же вообще.
04:45
Speaker A
можно подключить Вот где-то вот здесь вот нет или кабинет посмотрим а ну мы его можем подключить соответственно вот сразу вот здесь Вот Угу сохраняю обновляю страничку Ага проблема с кодировкой потому что я сохранился неправильно Так скорее всего кодировка была
05:18
Speaker A
Скрою, что мне кажется, что на сайте знакомств ранжировать люди должны лишь по одному параметру — по тому параметру, когда они в последний раз заходили на сайт знакомств. Иначе это вообще никакого смысла не имеет. Потому что если вы пишите человеку, который не.
06:11
Speaker A
создать новая папка Как вы видите соответственно в каждом проекте я использую какие-то свои фишки вот свой свой подход вообще к проектированию базы данных соотвественно файлов и так далее для того чтобы ну во-первых было смотреть Интересно а во-вторых и
06:39
Speaker A
Хочет, допустим, не хочет даже заходить на сайт, зачем ему давать возможность что-то там найти? Так, вот я вижу. Ага, то есть я сейчас убираю с конца PHP скрипт PHP, ставлю даже, наверное, не слэш, а просто пускай будет анкета и ID соответственно.
07:04
Speaker A
сейчас в хедере хедер так тут прописать ссылочку ссылку ссылку на файл с поиском соответственно вот у нас тут будет поиск тут мои данные соответственно мои данные я сейчас такую папочку создам и обязательно переу туда Файлик всё сохранить Давайте посмотрим как оно
07:34
Speaker A
Которые я так изучить анкету. Да, данные подгружаются, но стили никаким образом не подгружаются. Вот, соответственно, я что? Я открываю файлик header. Ой, не файлик, а файлик index и пропишу вот в самом начале подключения хедера. Так, вот он тут.
08:09
Speaker A
Спокойной совестью могу удалить А вот этот переименовать То есть это у нас с вами будет уже index.php всё замечательно открываю дальше точно также ссылают [музыка] так в моих данных что я выводил а идентификатор пользователя это не нужно всё замечательно нажимаю на мои
08:41
Speaker A
Да, он подключился, и в самом низу давайте я точно также реализую подключение файла. Так, поменялось что-то? Да, поменялось, хорошо. А я напоминаю, что мы, кстати, перешли же полностью на свои скрипты Bootstrap, то есть мы их больше ниоткуда не подгружаем. Тут вот неплохо было бы.
09:10
Speaker A
так данные подхватили хорошо дальше Что Дальше неплохо было бы реализовать возможность поставить лайк То есть это будет какая-то кнопочка вот здесь и вопрос что как нам этот раздел назвать либо это у нас с Вами будут симпатии да я думаю это неплохо назвать такой
09:32
Speaker A
Изменить в самом конце, а лучше вообще, наверное, взять и подключить футер, как это сделано на других скриптах у нас. Да, то есть футер с какого момента можем подключить? Ещё раз давайте индекс, вот футер, да, футер в самом конце.
09:56
Speaker A
таблички likes для того чтобы нам её заполнять нам что нам нужен соответственно ID юзера это наверное идентификатор пользователя который хочет поставить проявить кому-то симпатию а ID юзера 2 - это соответственно идентификатор того пользователя кому ставит симпатию вот так тут у нас что тут у нас будет
10:24
Speaker A
Можно подключить вот где-то вот здесь вот. Нет, или кабинет посмотрим. А, ну мы его можем подключить соответственно вот сразу вот здесь. Вот, угу, сохраняю, обновляю страничку. Ага, проблема с кодировкой, потому что я сохранил неправильно.
10:51
Speaker A
сюда мы с вами Давайте пропишет соответственно два значения давайте так доллар ID User 1 это у нас идентификатор пользователя то есть которую мы возьмём с вами откуда которую мы с вами возьмём из сессии То есть это у нас
11:21
Speaker A
Так, скорее всего, кодировка была UTF-8. Так, Ctrl+Z, откат к тому файлу, который у нас был изначально. Давайте я сохраню, вот, раз, всё открывается. Сейчас пролистываю, изучить, я нажимаю. Да, ну то есть всё в порядке, всё открывается.
11:55
Speaker A
запрос использовать Что у нас там в хедере А Или даже не в хедере а посмотрю сейчас скажу где так посмотрю допустим в анкете всё-таки из сессии как он у нас выглядит Нет это не анкета А это другой Файлик так мои данные замечательно
12:20
Speaker A
Так, страницу поиска точно также. Я создаю папочку поиск, файл.
12:41
Speaker A
случае когда на странице произойдёт некое действие то есть допустим нажатие на сердечку Или ссылочку проявить симпатию только в этом случае мы с вами Вот этот код будем вызывать сейчас осталось соответственно придумать что же мы такого будем на этой страничке
13:06
Speaker A
Создать новая папка. Как вы видите, соответственно, в каждом проекте я использую какие-то свои фишки, вот свой подход вообще к проектированию базы данных, соответственно, файлов и так далее, для того чтобы, ну во-первых, было смотреть интересно, а во-вторых и.
13:40
Speaker A
запросе и и вот если она есть то соответственно Давайте заведём переменную Я думаю что если у нас переменная так равняется единички то мы выполним соответственно Вот вот верхний запрос Так давайте если переменная [музыка] так равняется единички то мы с вами
14:20
Speaker A
Познавательно. То есть вы уже, наблюдая за всем этим в режиме реального времени, можете примерно прикидывать, как бы сделали вы при разработке своего такого сервиса. Так, точно также, а футер у нас уже подключён, замечательно. Так, и осталось, наверное, мне.
14:43
Speaker A
плюси то мы добавляем лайк Челове не человеку а пользователю иначе же иначе То есть если у нас лайк равен минуси так отступ перехожу на следующую строчку если лак равен минуси то мы с вами наоборот должны Удалить все записи из
15:12
Speaker A
Сейчас в хедере, хедер, так, тут прописать ссылочку, ссылку, ссылку на файл с поиском. Соответственно, вот у нас тут будет поиск, тут мои данные. Соответственно, мои данные я сейчас такую папочку создам и обязательно перекину туда файлик. Всё сохранить. Давайте посмотрим, как оно.
16:00
Speaker A
потому что два условия у нас с вами всё таким образом у нас с вами будет выглядеть sgl запрос на удаление данных замечательно Ну вроде бы Логика есть да хорошо то есть либо лайк либо поставили лайк либо не ставили
16:33
Speaker A
Вообще поиск. Нет, ещё раз поиск. Поиск открылся. Да, поиск даже функционирует, то есть всё работоспособность есть. И следующий раздел, который нужно сделать, — это мои данные. Сейчас что? Сейчас я создаю папочку "мои данные", "мои данные", да. Ждём, этот файлик я сейчас со.
17:02
Speaker A
вот что принять решение о том соответственно Какой символ мы будем выводить или убирать и так далее так хорошо и так так так таким запрос выглядит следующим образом вот мы берём вот э почивать сразу количество же да да по-моему как-то так
17:35
Speaker A
Спокойной совестью могу удалить, а вот этот переименовать. То есть это у нас с вами будет уже index.php. Всё замечательно, открываю дальше, точно также ссылают. [музыка] Так, в моих данных что я выводил? А идентификатор пользователя это не нужно. Всё замечательно, нажимаю на мои.
18:13
Speaker A
удовлетворяют условия Угу Ну давайте ещё посмотрим как всё-таки на PHP используется этот пример так Select Count пам-пам-пам что нам предлагают нам предлагают Угу Так запрос то есть мы просто присваиваем значение а Ну и в принципе вот оно и должно быть
18:47
Speaker A
Данные, всё, скрипт открылся, все данные подхватил. Так, замечательно, идём снова в поиск. Так, м, давайте пойдём дальше. И сейчас что? Подождите, так нет, мы просто не будем выводить вот это всё добро. Сохранить. Так, снова мои данные, вот, вот.
19:22
Speaker A
неплохо было бы мне аккаунт использовать вот то есть сразу количество то есть не все все данные подтягивать не нужно всё а соответственно и что мы тут делаем вывод если у нас если у нас равняется нет больше нуля то значит у нас к уже стоит
20:00
Speaker A
Так, данные подхватили, хорошо. Дальше. Что?
20:39
Speaker A
тут вот всё то есть Давайте сохраним и посмотрим что у нас вообще выведется на этой страничке так лайка нет хорошо лайк у нас должен добавляться при отправке запроса да заск То есть я сюда добавляю допустим ставлю и пишу
21:06
Speaker A
Дальше неплохо было бы реализовать возможность поставить лайк. То есть это будет какая-то кнопочка вот здесь. И вопрос, что, как нам этот раздел назвать? Либо это у нас с вами будут симпатии. Да, я думаю, это неплохо назвать такой раздел не просто там "любовь", "лайк" что-то такое, а.
21:32
Speaker A
видел поэтому что давайте просто плюс наверно пишем и минус минус плюс смотрим да то есть Р 3 лайкну ра обновляю страниц точно также нету почему-то у нас а второй раз запрос отправился Да второй раз отправился Ну и Давайте минус
22:07
Speaker A
Пускай это у нас с вами будут симпатии, и соответственно также реализовать табличку с просмотрами страничек. Например, мы можем считать количество пользователей, которые посмотрели какую-то анкету пользователя, или так далее. Но начнём соответственно с.
22:45
Speaker A
минус обновляю страничку всё вся таблица очищена хорошо осталось только проработать У нас вот эту штучку ну смотрите У нас вот эта штука не хочет работать а возможно она вот поэтому не работает так Ctrl Z Давайте один знак равно поставим
23:08
Speaker A
Таблички likes. Для того чтобы нам её заполнять, нам что? Нам нужен соответственно ID юзера, это, наверное, идентификатор пользователя, который хочет поставить, проявить кому-то симпатию, а ID юзера 2 — это соответственно идентификатор того пользователя, кому ставит симпатию. Вот так. Тут у нас что? Тут у нас будет.
23:43
Speaker A
запрос идём дальше аэ Да не трансформировались получается во что то есть мы вот только отпра А что если Вот его вывести что у нас будет Какое значение Давайте посмотрим так ошибка да то есть мы не смогли трансформировать это всё Ну хорошо ладно давайте тогда по
24:11
Speaker A
Обычный запрос, он выглядит следующим образом. Вот этот функционал прямо на страничке с анкетой. Так, давайте я открою папочку анкета. Вот она у нас тут есть, замечательно, и неплохо будет добавить, наверное, что сейчас скажу, что добавить. То есть вот.
24:31
Speaker A
этот цикл отработает значит столько записей на страничке есть Так переменную я назову её предварительно неплохо было бы зану так занурили то есть если ла у нас больше нулю больше нуля то лайки есть если минус то лайков нету так ошибка
25:02
Speaker A
Сюда мы с вами давайте пропишем соответственно два значения. Давайте так: доллар ID User 1 — это у нас идентификатор пользователя, то есть которую мы возьмём с вами, откуда? Которую мы с вами возьмём из сессии. То есть это у нас.
25:43
Speaker A
больше нуля лайк есть Если меньше нуля лайков нету не так не работает подсчёт А всё я понял подсчёт не работает знаете почему Потому что вот тут вот мы только отсюда перегнали информацию о данных вот да значит нам нужно вот этот кусочек
26:23
Speaker A
Доллар Session, так, Session ID, по-моему, так он назвался. А следующий идентификатор ID юзера 2 мы возьмём соответственно уже из GET-запроса, который поступает на страницу пользователя вот таким вот образом ID юзера 2. И дальше соответственно мы можем уже вот этот.
26:49
Speaker A
есть он есть и не один Хорошо если мы отправим минус пока лайк есть ного фактически уже нету потому что с торможением Да уводи лайка нету хорошо вот этот кусочек кода мы с вами сейчас что делаем так Ctrl Z лишнего забрал так вот этот
27:13
Speaker A
Запрос использовать. Что у нас там в хедере? А или даже не в хедере, а посмотрю сейчас, скажу где. Так, посмотрю, допустим, в анкете. Всё-таки из сессии, как он у нас выглядит? Нет, это не анкета, а это другой файлик. Так, мои данные, замечательно.
27:41
Speaker A
может же быть такое Да может быть опять же конечно нужно было Э продумать ещё структуру как это всё будет так тут я что тут я сейчас э вставку PHP вставку кода сделаю всё замечательно так страничка у нас с
28:03
Speaker A
Индекс. Тут у нас что? Да, то есть у нас сессия есть такая переменная как ID User, это соответственно именно то, что мы с вами ищем — нынешний идентификатор пользователя. Вот вот этот кусочек кода мы с вами будем вызывать лишь в том.
28:34
Speaker A
ареф потом наверное Ну не слш А знак вопроса лак Так давайте продумаем всё-таки поскольку у нас все адреса будут открываться вот таким вот образом то есть анкета идентификатор анкеты которую мы смотрим правильно то мы можем наверное Нет давайте
29:01
Speaker A
Случае, когда на странице произойдёт некое действие, то есть допустим нажатие на сердечко или ссылочку "проявить симпатию". Только в этом случае мы с вами вот этот код будем вызывать. Сейчас осталось соответственно придумать, что же мы такого будем на этой страничке.
29:40
Speaker A
минус Минус так минус поставим и напишем убрать симпатию убрать симпатию Угу убрать или удалить симпатию как-то так так точка запятая на конце а соответственно если лайков ноль то мы ставим добавить симпатию так Или проявить так убрать симпатию про
30:36
Speaker A
Прописывать. То есть у нас, например, есть ID. Да, так и давайте мы, например, напишем, что ещё. Если у нас так, так, так, если у нас поступил запрос, так, например, да, то есть если у нас существует переменная в GET.
31:01
Speaker A
HTML файлика ой виде HTML символа То есть я его вот так вот ставлю так сохраняю смотрю на страничке что вообще происходит так тут у нас буде вот кнопка появилась проявить симпатию ага посмотрим в базу данных что у нас появился лайк Да лайк появился
31:27
Speaker A
Запросе, и вот если она есть, то соответственно давайте заведём переменную. Я думаю, что если у нас переменная так равняется единичке, то мы выполним соответственно вот вот верхний запрос. Так, давайте если переменная [музыка].
31:55
Speaker A
страниц есть кто заходи кам образом Мы это сделаем у нас с вами есть страничка просмотра то есть принцип будет один и тот же но просто тут если мы отлавливает можно кстати сделать сразу красиво на бутстрапе Вот давайте мы так и сделаем
32:17
Speaker A
Так равняется единичке, то мы с вами будем выполнять вот такой запрос. А если же она равняется, например, нолику, с ми другой запрос. Мы кстати можем плюс или минус ставить. Вот. Нет, давайте даже не так сделаем, мы сделаем это в виде символа. То есть если лайк у нас а равен.
32:53
Speaker A
быть убрать симпатию Вот как-то так и ссылочку Давайте вот так вот мы сделаем раз нет что-то лишнего захватил ещё раз так а нет ссылку Да мы же чисто используем как вот для красоты кнопку на рапе так But идм дальше смотрим на
33:34
Speaker A
Плюси, то мы добавляем лайк человеку, не человеку, а пользователю. Иначе же, иначе. То есть если у нас лайк равен минуси. Так, отступ, перехожу на следующую строчку. Если лайк равен минуси, то мы с вами наоборот должны удалить все записи из.
34:00
Speaker A
раз Красиво или белые вообще можно да белый й мы возьмём и подставим так убрать симпатию это у нас с вами btn так проявить симпатию убрать симпатию д ну же ну прям вообще супер получается супер единственное Я бы тут кнопку
34:34
Speaker A
Таблицы по определённом.
35:08
Speaker A
первую версию проекта Так у нас есть кнопочка проявить симпатию есть кнопочка убрать симпатию это всё работает Кстати вот эта кнопка уже может переместиться куда-то сюда под фотографию и так далее так хорошо я хотел е табличку с просмотрами сделать
35:28
Speaker A
совестно у нас уже есть готовый кусочек кода который отвечает за просмотры Мы кстати можем вообще пойти дальше и подсчитывать сколько раз человек заходил к вам на страничку Вот это пожалуйста такая Киллер фича будет которая в принципе позволяет это всё смотреть вот
35:52
Speaker A
ну с этим конечно попозже замочим я думаю для некоторых людей это будет прям важно Это очень интересная идея хорошо тут Что тут мы только на лайки вызывались значит что значит мы вот этот давайте мы скрипт с просмотрами только вот сюда вот
36:17
Speaker A
вставим так вот тут вот сверху будет дальше что мы е сделаем и нам нужно просто переделать на сейчас скажу на нана другую табличку то есть табличка у нас с Вами будут называться просмотры Вот она то есть тут мы с вами вычисляем
36:53
Speaker A
просмотры И кстати мы можем вернуть количество просмотров аке вот с ходу Ну или Давайте попозже это сделаем Просто я сейчас обновляю страничку и у нас таблица просмотра должна заполнится Да она заполняется соответственно если я ещё раз открываю страницу У нас эта табличка точно также
37:17
Speaker A
заполняется Хорошо давайте посмотрим анкету другой девушки например Маша изучить анкету в таблиц что по информация если я например нажимаю на Машу проявить симпатию то у нас она тоже заполняется замечательно Всё хорошо лайки мы реализовали просмотры тоже У нас
37:46
Speaker A
реализованы вот в принципе наверное на сегодня можно заканчивать этот выпуск большое спасибо что смотрели это виде на канал ставьте лайки Обязательно оставляйте свои комментарии по поводу увиденного можете кстати поделиться идеями по поводу этого проекта других проектов на этом канале или может быть у
38:14
Speaker A
вас есть какая-то своя уникальная идея стартапа тоже напишите мне Возможно мы вместе её реализуем вот Ну и как всегда хочу в конце проми свою страничку на бусте где я с вами делюсь исходными кодами своих разработок с этого канала и
38:37
Speaker A
другим дополнительным контентом вот переходите тоже туда Подписывайтесь все коды и скрипты выложены там и вы сможете их скачать и либо детально посмотреть либо использовать на своих проектах А всё большое спасибо что смотрели а дальше будет только интереснее ведь мы
39:10
Speaker A
на этом канале разрабатываем стартапы в режиме реального времени всё пока-пока
Topics:сайт знакомствPHPBootstrapSQLлайкипросмотры анкетроутингвеб-разработкапроектирование базы данныхдейтинг-сервис

Get More with the SozAI App

Transcribe recordings, audio files, and YouTube videos — with AI summaries, speaker detection, and unlimited transcriptions.

Or transcribe another YouTube video here →