За последние 24 часа нас посетили 17664 программиста и 1711 роботов. Сейчас ищут 1588 программистов ...

Система друзей и ее реализация php mysql

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

  1. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Ну так и сделайкак там. В чём проблема то?
     
  2. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Проблема в том я не знаю а что с таблицей users делать?
    Если я сейчас создам 2 таблицы, то таблица users не будет что ли задействована?
     
  3. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Ничего не делать. Так и оставь
    --- Добавлено ---
    Что значит не задействована?А откудова ты тогда будешь пользователей брать? Куда регистрировать? Откуда аутентифицировать?
     
  4. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @SamyRed
    Ах ну да) Слушай создаю таблицы сейчас в базе requests и friends не знаю в каком типе хранить данные, от таблицы friends, случайно не в int?
    Если что уже разобрался в каком типе хранить)
    Теперь надо запросы придумать, если получится их создать я буду рад, что хоть что то получилось!
    --- Добавлено ---
    @SamyRed
    У меня еще вопрос, а через switch стоит писать запросы? То-есть все запросы в одном файле?
    И сразу второй, как после того когда пользователь принял заявку, удалять из таблицы requests и подставлять в таблицу friends данные? Тут просто я в тупике, сейчас.
     
    #54 _ne_scaju_, 16 мар 2017
    Последнее редактирование: 16 мар 2017
  5. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    Не стоит. Потом вообще не понять будет, что куда и откуда. Единая точка входа по-другому делается. Функциями и/или классами
     
  6. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mkramer
    Мне даешь совет, функциями писать?
    А можно запросы сделать все в одном файле, это хочу узнать?
    В одной функции, и добавления, и удаления и подтверждения?
    --- Добавлено ---
    @mkramer @SamyRed
    Посмотрите пожалуйста, делаю запрос на добавления в друзья:
    PHP:
    1. <?php
    2. $sql  = 'INSERT INTO `requests`(`sender_id`, `receiver_id`, `accept`) VALUES(:sender_id,  :receiver_id,  0)';
    3. $stmt = $pdo->prepare($sql);
    4. $stmt->bindParam(':sender_id', $sender_id);
    5. $stmt->bindParam(':receiver_id', $receiver_id);
    6. $sender_id = (int)$_SESSION['user_id'];
    7. $receiver_id = (int)$_GET['add_friend']; //Подскажите что я вот тут не так сделал, что от принимателя заявки подставлять, какие данные???
    8. if($stmt->execute()){
    9.     echo '<br>Вы подали заявку в друзья';
    10. }
    11. }
    12. ?>
    И как этот запрос можно запихнуть в function?
    Спасибо всех кто помогает)
     
  7. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    @_ne_scaju_, ты задаёшь вопросы, будто не читал ссылки, которые я тебе давал
    PHP:
    1. function addRequest($sender_id, $receiver_id)
    2. {
    3.     $sql  = 'INSERT INTO `requests`(`sender_id`, `receiver_id`, `accept`) VALUES(:sender_id,  :receiver_id,  0)';  
    4.     $stmt = $pdo->prepare($sql);
    5.     $stmt->bindParam(':sender_id', $sender_id);
    6.     $stmt->bindParam(':receiver_id', $receiver_id);
    7.     return $stmt->execute();
    8. }
    И такие вещи надо не GET-ом, а post-ом делать. Хотя пока и так сойдёт, в принципе, но на будущее
    --- Добавлено ---
    PHP всё равно, сколько ты строк в одном файле запихаешь. Можно хоть весь код vk.com сделать в одном файле. Одно но - потом ни один человек, включая тебя, не поймёт, что там к чему и зачем.
     
  8. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mkramer
    Не много понял с функциями) так и знал что преобразовать можно именно как то так, вопрос еще один.
    Если правильно я понял функции, то пишу запрос на подтверждение дружбы:
    PHP:
    1. <?php
    2. function requests(){
    3. $sql ="UPDATE `requests` SET `accept`= '1' WHERE `id`='".(int)$_GET['add_friend']."'";
    4.     $stmt = $pdo->prepare($sql);
    5.     return $stmt->execute();
    6. }
    7. ?>
    Правильно ли функция написана, и эту функцию можно записать под той которую вы написали, то-есть одним файлом, друг под другом?
     
  9. acho

    acho Активный пользователь

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    не лучший вариант. Дело даже не в интерпретаторе PHP десериализует массив просто. А вот допустим задача:
    - Найти всех, у кого %name% есть в друзьях
    как реализовать при таком подходе?

    @_ne_scaju_
    - не подставляй данные напрямую. Пусть сейчас это типо и обучался, но не привыкай к таким вещам сразу. Ты же сам в добавлении правильно делал, через bindParam. Делай и тут также.
    - Я не видел весь код, как что у тебя там работает, но есть прям дикое предположение. Вот запрос на обновление реквеста, как он должен работать? ищется в таблице запись с id-таким_то. А айди то ты как узнаёшь? Мож ты конечно и сделал это, но если нет - вот тебе пища для размышлений.

    И не гнушайся ссылками, что дают ребята. Если они их дают - значит они полезные. Будешь отпираться - все просто забьют на помощь тебе, посчитав её бессмысленной. И программист всегда должен читать документацию. Ребята с 20-30-летним стажем читают документацию. Все, без исключения. А когда научишься её читать и использовать - считай просто огромный скачок совершил в мир разработки.
     
  10. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @acho
    А на счет function я правильно решил, эти запросы в функцию записать?
     
  11. acho

    acho Активный пользователь

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    @_ne_scaju_, давай-ка я по-простому объясню, чтобы ты понимал вообще, что происходит.
    Функции придуманы для того, чтобы упростить жизнь разработчику.
    У тебя в коде часто происходят такие действия? Если да - мы пишем функцию. И в коде уже вызываем её. Вызов функции - одна строчка. Вот допустим, вся функция занимает 500 строк. Такое действие на странице надо произвести 10 раз.
    А теперь два варианта:
    1. Без использования функции.
    10 раз мы написали на странице 500 строк. В итоге получилось 5000 строк.

    2. С использованием функции.
    Один раз написали 500 строк в функции.
    Потом 10 раз вызвали функцию.
    В итоге получилось 510 строк.

    Разница очевидна. Читать проще? да. Поддерживать проще? да.

    А насчёт правильно/нет, если я сейчас начну говорить, как бы сделал я, ты пока что всё равно не поймёшь. Поэтому пытайся сам подумать о целесообразности любого своего кода
     
  12. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    То-есть тот код сделал через bindparam
    PHP:
    1. function requests($add_friend){
    2. $sql ='UPDATE `requests` SET `accept`= '1' WHERE `id`= "$add_friend"';
    3.     $stmt = $pdo->prepare($sql);
    4.     $stmt->bindParam(':id', $add_friend);
    5.     $receiver_id=(int)$_GET['add_friend'];
    6.     return $stmt->execute();
    7. }
    Я правильно тебя понял?
     
    #62 _ne_scaju_, 17 мар 2017
    Последнее редактирование: 17 мар 2017
  13. acho

    acho Активный пользователь

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    @_ne_scaju_, понял правильно, а сделал не до конца
     
  14. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @acho
    Не до конца, не может быть, где я ошибся, или не дописал?
     
  15. acho

    acho Активный пользователь

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    @_ne_scaju_, ну сравни же свои два запроса. инсерт и апдейт. Посмотри на данные в биндПарам, потом на запрос.
     
  16. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @acho
    Ты сейчас говоришь посмотреть на функцию апдейт? или просто запрос апдейт?
    Вот так?
    PHP:
    1. function requests($add_friend){
    2. $sql ='UPDATE `requests` SET `accept`= '1' WHERE `id`= "$add_friend"';
    3.     $stmt = $pdo->prepare($sql);
    4.     $stmt->bindParam(':id', $add_friend);
    5.     $add_friend=(int)$_GET['add_friend'];
    6.     return $stmt->execute();
    7. }
     
  17. acho

    acho Активный пользователь

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    Ох, извини. Так много времени уделять такой глупости у меня нет. Ты не хочешь читать документацию, ты не можешь сравнить два запроса, которые якобы написал сам. Ты даже, кажется, не понимаешь, как они работают.
    Тебе нужно учить азы.
    $sql='UPDATE `requests` SET `accept`= '1' WHERE `id`= "$add_friend"';
    $sql='UPDATE `requests` SET `accept`= '1' WHERE `id`= :id';
     
  18. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @acho
    Ай ты за это :id говоришь, понял, я и так азы знаю запросов sql.
    Например: update обновить, insert вставить вроде, delete понятно удалить, select выбрать
    И так далее если есть еще.
    Ну понятно с id накрутил, теперь выглядит так:
    PHP:
    1. function assume($add_friend){
    2.     $sql="UPDATE `requests` SET `accept`= '1' WHERE `id`= :id";
    3.     $stmt = $pdo->prepare($sql);
    4.     $stmt->bindParam(':id', $add_friend);
    5.     return $stmt->execute();
    6. }
    Да извини за мою глупость) бывает я вообще восстанавливаюсь что изучал раньше, вспоминаю!
     
    #68 _ne_scaju_, 17 мар 2017
    Последнее редактирование: 17 мар 2017
  19. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Почему такая ерунда между запросами этот срабатывает а этот нет?
    Этот срабатывает запрос
    PHP:
    1. $sql  = 'INSERT INTO `requests`(`sender_id`, `receiver_id`, `accept`) VALUES(:sender_id,  :receiver_id,  0)';
    2. $stmt = $pdo->prepare($sql);
    3. $stmt->bindParam(':sender_id', $sender_id);
    4. $stmt->bindParam(':receiver_id', $receiver_id);
    5. $sender_id = (int)$_SESSION['user_id'];
    6. $receiver_id = (int)$_GET['add_friend'];
    7. $stmt->execute();
    А этот нет(
    PHP:
    1. function addRequest($sender_id, $receiver_id)
    2. {
    3.     $sql  = 'INSERT INTO `requests`(`sender_id`, `receiver_id`, `accept`) VALUES(:sender_id,  :receiver_id,  0)';
    4.     $stmt = $pdo->prepare($sql);
    5.     $stmt->bindParam(':sender_id', $sender_id);
    6.     $stmt->bindParam(':receiver_id', $receiver_id);
    7.     $sender_id = (int)$_SESSION['user_id'];
    8.   $receiver_id = (int)$_GET['add_friend'];
    9.     return $stmt->execute();
    10. }
    В чем причина?
     
  20. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    это не глупость, а отсутствие понимания/опыта.
    это приходящее. Все когда-то чего-то не знали.

    Просто когда знаешь - кажется, что это просто.
    Поэтому удивляешься, как этого можно не понимать.

    Эту особенность своей психологии не все учитывают в общении с менее опытными товарищами.

    На самом же деле у него самого несколько лет назад кипели мозги от подобного простого вопроса.
    Просто он об этом уже забыл. :)
     
  21. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @TeslaFeo
    ))) Это конечно хорошо, так а в чем проблема, то? Да опыта у меня мало, да и навыков, учу же просто.
     
  22. acho

    acho Активный пользователь

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    ага. кипели. и до сих пор у меня бывают затыки на оооочень простых вопросах, в то время как сложные как-то легко обрабатываются. Но с самого начала у меня была какая-то предрасположенность к документации. Этим можно считать, что мне было гораздо проще.
    Всё придёт, конечно. Если не лениться.

    @_ne_scaju_,
    давай я тебе дам одно небольшое задание, и если ты его выполнишь прям в точности, как я скажу, то и сам поймёшь, как работают функции, и к тому же найдёшь пару лишних строк у себя в коде. Идёт?
     
  23. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @acho
    Буду рад, кидай задание попробую выполнить, только легкое)))
     
  24. acho

    acho Активный пользователь

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    @_ne_scaju_
    Вот твой код, я добавил после него ещё одну строчку. (использовать его не пытайся, там пока не всё рабочее.)

    PHP:
    1. function addRequest($sender_id, $receiver_id)
    2. {
    3.     $sql  = 'INSERT INTO `requests`(`sender_id`, `receiver_id`, `accept`) VALUES(:sender_id,  :receiver_id,  0)';
    4.     $stmt = $pdo->prepare($sql);
    5.     $stmt->bindParam(':sender_id', $sender_id);
    6.     $stmt->bindParam(':receiver_id', $receiver_id);
    7.     $sender_id = (int)$_SESSION['user_id'];
    8.   $receiver_id = (int)$_GET['add_friend'];
    9.     return $stmt->execute();
    10. }
    11.  
    12. addRequest();
    Напиши по пунктам, что происходит в каждой строчке этого куска кода. Прям в каждой. По-русски. Просто человеческим языком то, что делает компьютер.
     
  25. acho

    acho Активный пользователь

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    куда ты там стёр то всё