За последние 24 часа нас посетили 17729 программистов и 1712 роботов. Сейчас ищут 1604 программиста ...

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

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

  1. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @acho
    Да блин, их было 2 думал одно удалю( а оно 2 удалило, переписывать еще раз?
    --- Добавлено ---
    @acho
    1. Пункт: Создаем функцию даем ей название в ней объявляю 2 переменых
    2. Пункт: Подготавливаю запрос
    3. Пункт: Подставляю переменную вместо поля в запросе, типа делаю защиту
    4. Пункт: То же что и 3
    5. Пункт: В объявленную переменную подставляем сесию пользователя, который онлайн одним словом
    6. Пункт: В объявленную переменную подставляем get параметр, ввод данных, ну или что то типа, точно не знаю
    7. Пункт: return делаем задержку, $stmt->execute(); выполняем запрос
    8. Пункт: addRequest(); в объявленной функции выводим результат наверное.
    Проверьте и укажите ошибки еще раз)
    --- Добавлено ---
     
  2. acho

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

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    Ладно, хрен с ним.
    Вот и твоё непонимание. Смотри:
    нет, не объявляешь. Ты передаёшь в функцию два параметра, внутри функции они будут под этими именами.

    Следовательно, две строчки с
    PHP:
    1. $sender_id = (int)$_SESSION['user_id'];
    2. $receiver_id = (int)$_GET['add_friend'];
    внутри функции - лишние. Их не должно быть в функции. они должны передаваться в функцию.

    PHP:
    1. return $stmt->execute();
    Вот говорил же я, азы учить надо. Тупо видно, что по функция ты прочитал ровно, или даже меньше, чем ничего.
    return - не задержка, а возврат результата. И это, ну ёбана, написано в первых строчках в документации по функциям.
    Ты сам не понимаешь, как трудно что-то объяснять человеку, который вообще не понимает, что он делает. Не ленись, ну почитай элементарное. Такие простые вещи тебе тут никто объяснять не будет. Я щас должен писать проект, а занимаюсь, мягко говоря, какой-то хернёй. Вместо того, чтобы ты потратил 10 минут, прочитал про функции, и задавал действительно какие-то стоящие вопросы. А их, кстати говоря, могло бы и даже не быть, ибо сам бы уже понял.

    Дальше. Будем считать, что функцию ты описал (если доделать вышесказанное). НО! Это просто описание функции. Она не работает. Тут написано только как она должна работать, а не указание работать.

    Последняя строчка как раз вызывает функцию. Говорит ей работать. Но, в таком виде она тоже не будет работать. Потому что в вызове функции ты должен передать ей два параметра, как сказано в описании этой функции.

    PHP:
    1. addRequest($_SESSION['user_id'], $_GET['add_friend']);
    В общем я и так уже расписался. Не обижайся, но будут такие же азовые вопросы - может поможет кто-то другой. У меня нет столько времени
     
  3. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @acho
    Понял, тупо почитать что такое функции в php прочитаю, дальше что с чего двигаться дальше?
    Огромное спасибо за помощь. Может быть я и знал но уже вообще забыл)
    За return в других языках это задержка результата идет. Ну теперь буду знать что это возврат результата)
     
  4. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    Я тебе давал ссылку на мануал, а ты прочёл две строчки, и сказал: "ну переменные я знаю", поэтому читать не надо. Там минимальный объём php, который необходимо знать.
     
    acho нравится это.
  5. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mkramer
    перехожу по ссылке) Спасибо.
     
  6. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mkramer @acho
    Ну что сказать прочитал я про функции, и многое понял, что и как они объявляются, как пользоваться ими.
    Можете мне дать задание, я попробую написать его, и вы мне потом проанализируете, что я не так сделал.
     
  7. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mkramer
    У меня запрос происходит но, как сделать, чтобы в базу от одного пользователя к другому можно было делать один раз? А то после запроса на добавление в друзья, если обновлять страницу, не выходя из нее в базу будут записываться опять те данные, от кого и кому.
    Код такой:
    PHP:
    1. $user_id = (int)$_GET['add_friend'];
    2.  
    3. try {
    4.     //Заявочка в друзья!
    5.     $sql  = 'INSERT INTO `requests`(`sender_id`, `receiver_id`, `accept`) VALUES(:sender_id,  :receiver_id,  0)';
    6.     $stmt = $pdo->prepare($sql);
    7.     $stmt->bindParam(':sender_id', $sender_id);
    8.     $stmt->bindParam(':receiver_id', $receiver_id);
    9.     $sender_id = (int)$_SESSION['user_id'];
    10.     $receiver_id = (int)$_GET['add_friend'];
    11.     if($stmt->execute()){
    12.         if ($stmt) {
    13.             echo '<br>Вы подали заявку в друзья';
    14.         } else
    15.             header('Refresh: 5; url=?index.php'. HOST);
    16.             exit;      
    17.     }
    18.  
    19. //Подтверждения дружбы думаю сделаю здесь
    20. }
    21. catch(PDOException $e) {
    22.     echo $e->getMessage();
    23. }
     
  8. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    Уникальный ключ в базе. И не передавать через get. И использовать header("location")
     
  9. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mkramer
    Есть такой, ключ в базе)
    header('location:'.HOST.'?mode=friends ');
     
  10. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    Видимо нету. Я о составном ключе `sender_id`, `receiver_id`
    --- Добавлено ---
    Добавление друзей должно быть POST-запросом, а не get. Get - только на получение.
     
  11. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
  12. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mkramer
    Ты мне предлагаешь вместо get написать post словами?
    Одним словом, вот так: $receiver_id=(int)$_POST['add_friend'];
     
  13. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Кто мне может объяснить, как обращаться к зарегистрированным пользователям, то есть если ты обращаешься в запросе к себе ну если онлайн, ты используешь SESSION['id'], а для пользователя который с другой стороны, как к нему обратится переменную для них создавать или как. Помогите разобраться пожалуйста с этим, а то я могу месяц писать эту систему друзей и с места не сдвинутся((((((( А то пишу и не пойму пишу и не пойму пишу и не пойму, кааааааак оно делается(
    Пример:
    Обращение к пользователю через сессию
    $sender_id = (int)$_SESSION['user_id'];
    Обращение к пользователю через пост параметр, а от куда мы будем брать значение, что бы подставить в скобки!
    $receiver_id = (int)$_POST['Сюда'];
     
  14. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    Нет, я тебе предлагаю делать POST-запросы. Загугли, что-ли, что это такое... Форум - это не замена учебнику веб-программирования.
     
  15. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mkramer
    Я примерно знаю что такое пост запросы
    HTML:
    1. <form action="" methot="POST">
    2. здесь поля и кнопки ввода.
    3. </form>
    И выше можно делать проверку.
    PHP:
    1. if(isset($_POST['user'])){
    2. ну и тут проверка идет
    3. }
     
  16. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    Угу. Вот добавление юзера должно быть таким post-запросом. А если внешне это должно выглядеть как ссылка - javascript в помощь. Но опять же, мне тоже тут уже надоедает. Ты взялся за сложную задачу с недостаточными знаниями по стеку технологий, это бесполезная трата времени.
     
  17. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mkramer
    Объясни мне просто от куда я должен узнать какие данные надо подставить для пользователя с другой стороны, со стороны принять заявку)
     
  18. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    Напиши за меня просто программу... Не тот раздел форума.
     
  19. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mkramer
    Давай напишу, думаю я смогу если не тяжелую)
     
  20. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Рукалицо
     
  21. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @SamyRed
    Рука лицо)
    И дальше что?
     
  22. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Забей, это я "мысли в слух"
     
  23. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @SamyRed
    Понятно, почти почти разобрался, если получится отпишусь!
     
  24. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Ура народ не поверите, не разобрался, думал уже все понял, а нет не понял, может есть добрые люди поправят меня а, удалено, через комп?
     
  25. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @SamyRed
    Я не удержался пишу, помогите пожалуйста ошибку дает, делаю запрос на добавления в друзья
    PHP:
    1. //запрос в друзья
    2. $sql_friend_add = 'INSERT INTO `requests`(`sender_id`, `receiver_id`, `accept`) VALUES(:sender_id,  :receiver_id,  0)';
    3. $stmt = $pdo->prepare($sql_friend_add);
    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['reseiver_id'];
    8. if($stmt->execute()){
    9.         echo 'Вы подали заявку в друзья';
    10.     }
    Ругается на: Notice: Undefined index: reseiver_id in
    Ссылку в html указываю такую, у пользователей такую:
    echo '<a href="?mode=friend&friend_add='. $val['user_id'] .'">Добавить в друзья</a>';
    Но почему ругается, как исправить?