$l_SQL = "SELECT * FROM `tbl_ad` WHERE `tipo`='ads' AND `plan` > `members` AND `vip` ='1' ORDER BY id DESC";
$links_array_db = mysql_query($l_SQL);
// + всего 1 дополнительный запрос:
$K_SQL = "SELECT `ident` FROM `tbl_ad` WHERE `tipo`='v' AND `user`='$us_l'";
$ident_db = mysql_query($K_SQL);
$ident_arr = mysql_fetch_array($ident_db);
if(mysql_num_rows($links_array_db) > 0)
{
$links_array = mysql_fetch_array($links_array_db);
do{
<div id="d">
<table border="0" cellpadding="0" cellspacing="1" width="100%">
<tr>
<td>
</td>
<td align="center">
// и проверяем, нет ли в массиве такого ident
if(in_array(''.$links_array['ident'].'', $ident_arr)) { echo "делаем то что нужно...";}
что я делаю неправильно?
Спустя 8 минут, 14 секунд (6.05.2011 - 09:11) Renden написал(а):
vagon
не уверен но мб кавычки и точки не нужны тут?
И зачем тебе do {} ?
не уверен но мб кавычки и точки не нужны тут?
if(in_array($links_array['ident'], $ident_arr))
echo "делаем то что нужно...";
И зачем тебе do {} ?
Спустя 5 минут, 4 секунды (6.05.2011 - 09:16) linker написал(а):
Да всё неправильно.
Спустя 1 час, 41 минута, 23 секунды (6.05.2011 - 10:57) Rand написал(а):
mysql_fetch_array возвращает только одну строку, при каждом вызове следующую. Логика полностью не верна.
Итого:
$links_array содержит по одному элементу на каждое поле. Значения каждого элемента - это значение соответствующего поля из первой строки.
$ident_arr содержит только один элемент - $ident_arr['ident']
Ты ищещь $links_array['ident'], в котором хранится значение поля ident первой строки из первого запроса, в масииве из одного элемента $ident_arr, в котором хранится значение поля ident первой строки второго запроса. Все равно что написать if($links_array['ident'] == $ident_arr['idnet']).
И ещё. Если ты используешь ассоциативные индексы, то тогда нужно использовать mysql_fetch_assoc или mysql_fetch_array($result, MYSQL_ASSOC).
Итого:
$links_array содержит по одному элементу на каждое поле. Значения каждого элемента - это значение соответствующего поля из первой строки.
$ident_arr содержит только один элемент - $ident_arr['ident']
Ты ищещь $links_array['ident'], в котором хранится значение поля ident первой строки из первого запроса, в масииве из одного элемента $ident_arr, в котором хранится значение поля ident первой строки второго запроса. Все равно что написать if($links_array['ident'] == $ident_arr['idnet']).
И ещё. Если ты используешь ассоциативные индексы, то тогда нужно использовать mysql_fetch_assoc или mysql_fetch_array($result, MYSQL_ASSOC).
Спустя 1 час, 20 минут, 50 секунд (6.05.2011 - 12:18) vagon написал(а):
Renden, все работает если запрос поместить внутрь цикла, тогда и поиск по массиву не нужен в принципе, но это не подходит, будет слишком много запросов. Поэтому решил сделать так...
через do while выводится контент, код привел не весь.
Rand, про первую строку из первого запроса я уже догадался...
mysql_fetch_assoc пробовал использовать, то же самое, не работает...
это вроде правильно, разве что еще внешнее условие проверки на пустоту нужно добавить.
Как же запрос то правильно сделать?
через do while выводится контент, код привел не весь.
Rand, про первую строку из первого запроса я уже догадался...
mysql_fetch_assoc пробовал использовать, то же самое, не работает...
if(in_array($links_array['ident'], $ident_arr))
это вроде правильно, разве что еще внешнее условие проверки на пустоту нужно добавить.
Как же запрос то правильно сделать?
Спустя 6 часов, 53 минуты, 21 секунда (6.05.2011 - 19:12) vagon написал(а):
Как по всему массиву то искать? Кто-нибудь подскажет?
Спустя 28 минут, 5 секунд (6.05.2011 - 19:40) kovaldm написал(а):
В данном контексте циклом, наверное.
Спустя 39 минут, 50 секунд (6.05.2011 - 20:19) vagon написал(а):
Цитата |
В данном контексте циклом, наверное. |
Я же писал, в цикле сделать не проблема, но будет запросов слишком много... Можно же как-то вынять одним доп. запросом ВСЕ, а уже потом проверять равно-неравно...
Спустя 33 минуты, 3 секунды (6.05.2011 - 20:52) kovaldm написал(а):
А вы попробуйте код привести в порядок - гораздо проще будет разобраться.
Спустя 1 час, 5 минут, 4 секунды (6.05.2011 - 21:58) vagon написал(а):
Цитата |
А вы попробуйте код привести в порядок - гораздо проще будет разобраться. |
Вот об этом я и пишу здесь, хотелось бы понять что не так с кодом.
Спустя 2 часа, 28 минут, 13 секунд (7.05.2011 - 00:26) sergeiss написал(а):
vagon - прочитай вот эту тему: http://phpforum.ru/index.php?showtopic=21916 и ты поймешь, что у тебя сделано не верно в логике получения данных.
Спустя 11 часов, 53 минуты, 44 секунды (7.05.2011 - 12:20) vagon написал(а):
Заменил array на assoc, do while на while. Что еще нужно сделать? Перебор массива?
foreach($array as $key => $value)
{
// Если есть 0 в запросе отсеиваем его
if(!empty($value))
$sql_where[] = $key." = ".intval($value);
}
foreach($array as $key => $value)
{
// Если есть 0 в запросе отсеиваем его
if(!empty($value))
$sql_where[] = $key." = ".intval($value);
}
Спустя 3 часа, 11 минут, 35 секунд (7.05.2011 - 15:31) sergeiss написал(а):
Цитата (vagon @ 7.05.2011 - 13:20) |
Заменил array на assoc, do while на while. Что еще нужно сделать? |
Ты тему прочитал, что я ссылку дал? Там явно и четко показано, что ДО НАЧАЛА цикла while не надо ничего читать!!! Только в цикле.
Ты же сначала читаешь одну строку, а потом идешь в цикл. Вот у тебя кривизна и получается.
Спустя 7 часов, 8 минут, 59 секунд (7.05.2011 - 22:40) vagon написал(а):
Это все понятно. Вывод какой следует? Запрос повторять в цикле? Я уже писал что это не годится. Другое решение есть?
Спустя 49 минут, 15 секунд (7.05.2011 - 23:29) sergeiss написал(а):
Основной вопрос, заданный тобой - как искать в массиве, который ты создаешь в результате своих запросов. Я тебе ответил, что есть ошибка в коде... Но суть задачи от этого яснее не стала
Поэтому сложно дать тебе совет.
Опиши задачу, т.е. что ты хочешь сделать. Выбрать данные из 2-х разных таблиц и связать их по какому-то ключу? Тогда используй JOIN. Что-то другое? Тогда опиши.

Опиши задачу, т.е. что ты хочешь сделать. Выбрать данные из 2-х разных таблиц и связать их по какому-то ключу? Тогда используй JOIN. Что-то другое? Тогда опиши.
Спустя 20 часов, 7 минут, 44 секунды (8.05.2011 - 19:37) vagon написал(а):
sergeiss, эх, попробую...
Первым запросом из таблицы базы вынимается несколько строк где `tipo`='ads' - (это контент) который через while выводится на страницу. В каждой из этих выводимых строк таблицы есть поле `ident`, в котором записано какое-то целое число, например 12345.
Вторым (и единственным) запросом я пытался вынять все вспомогательные строки. -
В той же таблице базы есть еще много вспомогательных строк, где `tipo`='v' и `user`='$us_l' и в некоторых из них в поле `ident` записано такое же число как и в поле `ident` одной из строк контента.
Так вот, нужно: если в поле `ident` какой-либо из вспомогательных строк находится то же число, где `tipo`='v' AND `user`='$us_l' AND `ident`=' ident такой же как в одной из строк 1 запроса' - в этой строке контента ставилась какая-либо пометка.
Первым запросом из таблицы базы вынимается несколько строк где `tipo`='ads' - (это контент) который через while выводится на страницу. В каждой из этих выводимых строк таблицы есть поле `ident`, в котором записано какое-то целое число, например 12345.
Вторым (и единственным) запросом я пытался вынять все вспомогательные строки. -
В той же таблице базы есть еще много вспомогательных строк, где `tipo`='v' и `user`='$us_l' и в некоторых из них в поле `ident` записано такое же число как и в поле `ident` одной из строк контента.
Так вот, нужно: если в поле `ident` какой-либо из вспомогательных строк находится то же число, где `tipo`='v' AND `user`='$us_l' AND `ident`=' ident такой же как в одной из строк 1 запроса' - в этой строке контента ставилась какая-либо пометка.
Спустя 2 дня, 16 часов, 24 минуты, 54 секунды (11.05.2011 - 12:02) vagon написал(а):
Ни у кого нет идей? Как с помощью in_array найти в массиве
совпадение?
совпадение?