Поиск с исключением

350
03 сентября 2017, 04:01

Здравствуйте! Я делаю поиск друзей в базе данных) но мне нужно, чтобы в массив не попадали id аккаунтов, которые уже в друзьях

<?php
    require_once("connect.php"); //конект к бд
    $name = mysql_real_escape_string($_GET['name']); //искомое имя профиля
    $youid = mysql_real_escape_string($_GET['youid']); //id аккаунта которые ищет
    $query = mysql_query("SELECT * FROM Users WHERE username LIKE '%$name%'");
    $count = mysql_num_rows($query);
    $sql = mysql_query("SELECT * FROM Users WHERE id = '$youid'");
    $rowid = mysql_fetch_row($sql);
    $friends = stripslashes($rowid[13]);//в 13 столбце соджержится список id друзей через запятую (1,2,3)
    $pieces = explode(",", $friends);//разделяю список
    $arrayresult = array();
    if($count != 0)
    {
        while ($row = mysql_fetch_array($query)) 
        {
            $id = $row['id'];
            if($id != $youid)
            {
                for ($i = 0; $i < count($pieces); ++$i) 
                {
                    if($id != $pieces[$i])
                    {
                        array_push($arrayresult,$id);
                        break;
                    }
                    else
                    {
                        break;
                    }
                }
            }
        }
        print_r($arrayresult);
    }
?>

Я ввожу имя и свой id (например 10), в друзьях у меня id 2,3,4 в базе данных такое имя имеют id 1,2,3,4,5,6 и мне выводится массив 1,3,4,5,6 То есть, первый id который в друзьях проверят, а остальные нет

Answer 1

Уже не стал полностью переписывать Ваш код, т.к. базы нет под рукой, чтобы проверить. Набросал пример того, как стоит проверить наличие id человека в списке друзей.

$users = [1,2,3,4,5,6,7,8]; // все пользователи
$friends = explode(",", "3,5,8");// мои друзья
$arrayNonFriends = array();
foreach ($users as $index=>$value) {
    $user = $users[$index];
    $myFriend = in_array($user, $friends);
    if (!$myFriend) array_push($arrayNonFriends,$user);
    //echo $user . ($myFriend == 'true'? " <- мой друг!" : "") . "\n";
}
print_r($arrayNonFriends);// незнакомые мне люди

Результат:

Array
(
    [0] => 1
    [1] => 2
    [2] => 4
    [3] => 6
    [4] => 7
)
READ ALSO
Вопрос по сессиям php

Вопрос по сессиям php

есть такая функция как session_start(); и если мне надо чтобы сессия длилась в течении перехода по нескольким страницам сайта надо ли эту функцию...

409
Как избежать двойной отправки письма?

Как избежать двойной отправки письма?

Библиотека PHPMailerКод такой:

413
Laravel сортировка товаров

Laravel сортировка товаров

Доброго времени суток, Очень-очень срочноУчусь работать на ларавеле, и вот возникла проблема, у меня есть товары и сортировка продуктов, но это...

648
Webhook в telegram. Как получать сообщения?

Webhook в telegram. Как получать сообщения?

Создал бота в telegram, настроил его на Wehook к моему сайту, он при каждом сообщении делает запрос на сайт, но я не пойму как получить сообщения которое...

501