#1 2009.10.31 21:01

DarkDaNTe
Участник
Откуда: Украина
Зарегистрирован: 2009.01.08
Сообщений: 574
Карма: 11
Профиль

Поиск в массиве

Например у нас есть массив $clicks. Как проверить есть ли содержимое переменной, допустим, $var в нём?

Неактивен

#2 2009.10.31 21:25

AND
Участник
Зарегистрирован: 2009.01.23
Сообщений: 87
Карма: 11
Профиль Веб-сайт

Re: Поиск в массиве

Код:

1
2
3
if(in_array($var, $clicks)) {
echo 'Значение "'.$var.'" присутствует в массиве';
}

Неактивен

#3 2009.10.31 21:33

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Поиск в массиве

еще isset

Активен

#4 2009.11.01 16:53

DarkDaNTe
Участник
Откуда: Украина
Зарегистрирован: 2009.01.08
Сообщений: 574
Карма: 11
Профиль

Re: Поиск в массиве

спс. А я писал if(in_array($var, $clicks) == false)

Неактивен

#5 2009.11.01 17:18

DarkDaNTe
Участник
Откуда: Украина
Зарегистрирован: 2009.01.08
Сообщений: 574
Карма: 11
Профиль

Re: Поиск в массиве

Я вот ничего не пойму. По моему все написано правильно.
Массив $clicks_arr1:

Код:

1
2
3
4
5
Array
(
[0] => 2
[1] => 5
)

Массив $clicks_arr2:

Код:

1
2
3
4
5
Array
(
[0] => 2
[1] => 1
)

Код:

Код:

1
span style="color: #0000BB"><?phpforeach($users as $val){$query = mysql_query('SELECT * FROM `plosh` WHERE `id`='.$val.' AND `id`!='.$user['id'].'');while($ar = mysql_fetch_assoc($query)){if(!in_array($ar['id'], $clicks_arr1) and !in_array($ar['nom'], $clicks_arr2)){echo 'ЕСТЬ';}}else{echo 'НЕТ';}}?>

Добавлено спустя   2 минуты  10 секунд:
В первом массиве - ИД пользователей, во втором - ИД их площадок

Неактивен

#6 2009.11.01 18:23

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Поиск в массиве

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$in = '';
foreach ($users as $val) {
if ($val != $users['id']) {
$in .= $val . ',';
}
}
 
$q = mysql_query('SELECT * FROM `plosh` WHERE `id` IN (' . rtrim($in, ',') . ')');
 
while ($arr = mysql_fetch_assoc($q)) {
if (isset($clicks_arr1[$arr['id']]) || isset($clicks_arr2[$arr['nom']])) {
echo 'ЕСТЬ';
} else {
echo 'НЕТ';
}
}

Активен

#7 2009.11.01 20:44

DarkDaNTe
Участник
Откуда: Украина
Зарегистрирован: 2009.01.08
Сообщений: 574
Карма: 11
Профиль

Re: Поиск в массиве

А что значит этот запрос?

Код:

1
$q = mysql_query('SELECT * FROM `plosh` WHERE `id` IN (' . rtrim($in, ',') . ')');

Добавлено спустя   3 минуты  39 секунд:
Что-то как-то оно не так работает)
Добавлено спустя   5 минут  8 секунд:
Меня вот это:

Код:

1
if ($val != $users['id'])

смущает. Какое содержимое $users['id']?

Неактивен

#8 2009.11.01 20:53

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Поиск в массиве

Без понятия, брал на основе твоего

`id`!='.$user['id']

А запрос значит что долбить запросы в цикле большой грех. Собери все нужные айдишники вместе и отправь 1 запрос в БД.

Активен

#9 2009.11.01 21:11

DarkDaNTe
Участник
Откуда: Украина
Зарегистрирован: 2009.01.08
Сообщений: 574
Карма: 11
Профиль

Re: Поиск в массиве

ааа) Там просто users, а у меня user, понял. Ошибочко). Понял

Неактивен

#10 2009.11.01 21:23

DarkDaNTe
Участник
Откуда: Украина
Зарегистрирован: 2009.01.08
Сообщений: 574
Карма: 11
Профиль

Re: Поиск в массиве

Короче это все дело должно выводить ссылку или не выводить в зависимости от того кликали ли по ней.
При клике в базу записывается ID того юзера, по чьей ссылке ты нажимал и ID его площадки.
Извлекаем все наши клики:

Код:

1
$res1 = mysql_query("SELECT * FROM `clicks` WHERE `who`='$user[id]'");

Потом забиваем все это в массивы.

Код:

1
span style="color: #0000BB"><?phpwhile($click = mysql_fetch_assoc($res1)){$clicks_arr1[] = $click['whom'];$clicks_arr2[] = $click['pl'];}?>

И теперь нам надо все проверить. Но блин, оно не хочет проверять... Все ли правильно делаю?

Неактивен

#11 2009.11.01 21:53

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Поиск в массиве

а в plosh какие данные? подозреваю что тут нужен SQL подзапрос, а не php код.

Активен

#12 2009.11.01 22:33

DarkDaNTe
Участник
Откуда: Украина
Зарегистрирован: 2009.01.08
Сообщений: 574
Карма: 11
Профиль

Re: Поиск в массиве

В plosh такие данные как id юзера, к которому относится площадка, адрес площадки, название ссылки, инфа о модерации площадки, о браузерах, которым доступна.

Неактивен

#13 2009.11.01 22:50

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Поиск в массиве

а откуда берутся данные о том, что этот пользователь уже кликнул по ссылке?

Активен

#14 2009.11.01 23:56

DarkDaNTe
Участник
Откуда: Украина
Зарегистрирован: 2009.01.08
Сообщений: 574
Карма: 11
Профиль

Re: Поиск в массиве

а в посте номер 10 указаны два массива с данными и описано по какому принципу они заданы
Добавлено спустя    2 секунды:
а в посте номер 10 указаны два массива с данными и описано по какому принципу они заданы

Неактивен

#15 2009.11.02 10:38

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Поиск в массиве

хоть застрелись, не понимаю я структубы БД твоей. выгрузи дамп структуры с описаниме полей.
в любом случае, тебе нужно минимум PHP и максимум SQL в данном случае.

Активен

#16 2009.11.02 10:52

DarkDaNTe
Участник
Откуда: Украина
Зарегистрирован: 2009.01.08
Сообщений: 574
Карма: 11
Профиль

Re: Поиск в массиве

ок. да я сам зачудил базу такую, что ппц

Неактивен

#17 2009.11.02 12:27

DarkDaNTe
Участник
Откуда: Украина
Зарегистрирован: 2009.01.08
Сообщений: 574
Карма: 11
Профиль

Re: Поиск в массиве

Кинул в личку дамп

Неактивен

#18 2009.11.02 20:06

DarkDaNTe
Участник
Откуда: Украина
Зарегистрирован: 2009.01.08
Сообщений: 574
Карма: 11
Профиль

Re: Поиск в массиве

Gemorroj, ау))

Неактивен

#19 2009.11.02 21:14

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Поиск в массиве

позже. оч занят. с тоей бд нужно разбираться.

Активен

#20 2009.11.02 21:16

DarkDaNTe
Участник
Откуда: Украина
Зарегистрирован: 2009.01.08
Сообщений: 574
Карма: 11
Профиль

Re: Поиск в массиве

Хорошоsmile Все равно спс

Неактивен

#21 2009.11.03 14:22

DarkDaNTe
Участник
Откуда: Украина
Зарегистрирован: 2009.01.08
Сообщений: 574
Карма: 11
Профиль

Re: Поиск в массиве

Я в дампе все раскомментил

Неактивен

#22 2009.11.03 21:54

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Поиск в массиве

посмотрел, вобщем могу тебе только посоветовать полностью изменить структуру БД.
Еще почитай об индексах, типах данных, нормализации/денормализации структуры.
У тебя даже нету ID площадок.
Добавлено спустя   1 минуту  3 секунды:
P.S. SQL стандарт поддерживает добавление комментариев прямо в таблицы. Пользуйся ими.

Активен

#23 2009.11.04 09:38

DarkDaNTe
Участник
Откуда: Украина
Зарегистрирован: 2009.01.08
Сообщений: 574
Карма: 11
Профиль

Re: Поиск в массиве

Да.. Вчера насчет этого поговорил с морганом. короче решил моддить другой клуб. т.к в этом время генерации при 15 юзерах ~2сек. а что при 1000 будет? и коды встречаются такие, как я показывал. запросы в запросах в циклах

Неактивен

Дополнительно

forum.wapinet.ru

PunBB Mod v0.6.2
0.016 s