[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: поиск по циклу
Konsole
Здравствуйте, есть код

$record_numbers = dbase_numrecords($db);
for ($i = 1; $i <= $record_numbers; $i++) {
$row = dbase_get_record_with_names($db, $i);
if ($row['NAME'] = 1 ) {

echo "Member #$i: " . trim($row['NAME_']) . "<br>";

}


}


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

if ($row['NAME_'] == $search)
{
echo "найден";
}


но он почему-то не находит, не подскажете?



Спустя 12 минут, 21 секунда (9.09.2011 - 10:54) Renden написал(а):
Konsole
Проще создать запрос на поиск и искать самим sql..
ЗЫ странный у вас код..

Спустя 9 минут, 4 секунды (9.09.2011 - 11:03) Konsole написал(а):
я беру текст из dbf файла, так я его вытащил, а вот как его в массив и искать так или как-то по-другому можно реализовать?

Спустя 1 минута, 55 секунд (9.09.2011 - 11:05) Winston написал(а):
Так ?
$record_numbers = dbase_numrecords($db);
$members = Array();
for ($i = 1; $i <= $record_numbers; $i++) {
$row = dbase_get_record_with_names($db, $i);
if ($row['NAME'] == 1 ) {

$members[] = "Member #$i: " . trim($row['NAME_']);

}


}

print_r($members);

Спустя 14 минут, 41 секунда (9.09.2011 - 11:20) Konsole написал(а):
спасибо, а как реализовать поиск по этому массиву? просто когда пишу

$search_tov = $_POST['search_tov'];
if ($members['NAME'] = $search_tov)
{
echo "найден";
}
else {
echo "нет";
}

пишет что найден всегда, если вводить любое значение, не подскажите, пожалуйста?

Спустя 1 минута, 28 секунд (9.09.2011 - 11:22) Winston написал(а):
Цитата (Konsole @ 9.09.2011 - 11:20)
if ($members['NAME'] = $search_tov)

Ты $members['NAME'] присваиваешь $search_tov потому всегда найден, напиши так
if ($members['NAME'] == $search_tov)

Спустя 3 минуты, 37 секунд (9.09.2011 - 11:25) Renden написал(а):
Konsole,Winston
Погодите ка, как из этого:

$members[] = "Member #$i: " . trim($row['NAME_']);

Получается это? Ключи тут 0,1,2,3 и тп.

$members['NAME'] = $search_tov

in_array мб лучше всеже воспользоватся?

Спустя 2 минуты, 6 секунд (9.09.2011 - 11:27) Konsole написал(а):
делал так, так пишет ошибку

Notice: Undefined index: NAME in Z:\home\localhost\www\index.php on line 953

Спустя 3 минуты, 54 секунды (9.09.2011 - 11:31) Winston написал(а):
Konsole
У тебя массив с числовыми ключами, а ты обращаешься к символьному ключу из-за этого и notice
Как правильно подметил Renden, используй in_array

$search_tov = $_POST['search_tov'];
if (in_array($search_tov, $members))
{
echo "найден";
}
else {
echo "нет";
}

Спустя 3 минуты, 17 секунд (9.09.2011 - 11:34) Renden написал(а):
Konsole
Я думаю для красоты мона сделать и так) чтоб ключи были именами чтоб там не ботался "Member #$i: "

$record_numbers = dbase_numrecords($db);
$members = Array();
for ($i = 1; $i <= $record_numbers; $i++)
{
$row = dbase_get_record_with_names($db, $i);
if ($row['NAME'] == 1 )
$members[$row['NAME']] = "Member #$i: " . trim($row['NAME_']);
}
// Поиск
$search = $_POST['search_tov'];
if(array_key_exists($search, $members))
echo "Найден";
else
echo "нету";

Спустя 8 минут, 45 секунд (9.09.2011 - 11:43) Konsole написал(а):
пишет что нету..
мне по сути нужно вывести все данные почта это и $row['ARTICLE'],$row['IMAGE'] и другие. но просто надо было чтобы поиск был по dbf файлу, как называются эти переменные я узнал, и как вывел имя, то осталось просто все вывести и чтобы при поиске показывал именно то наименование, а вот как это реализовать все голову ломаю, так вроде понятно что и как, а вот реализовать..
и еще при

if ($row['NAME'] == 1 )

пишет ошибку что не найден NAME, а когда я ставлю

if ($row['NAME'] = 1 )

то без ошибок..
так-то выводится списком все наименования, а вот поиск не ищет..

Спустя 7 минут, 6 секунд (9.09.2011 - 11:50) Winston написал(а):
Цитата (Konsole @ 9.09.2011 - 11:43)
if ($row['NAME'] == 1 )

Здесь ты ищешь в row['NAME'] 1
А
Цитата (Konsole @ 9.09.2011 - 11:43)
if ($row['NAME'] = 1 )

Ты присваиваешь $row['NAME'] значение 1.
Т.к. присвоение прошло успешно, то это === true, а значит выведет, что найдено

Спустя 3 минуты, 37 секунд (9.09.2011 - 11:54) Konsole написал(а):
когда ставлю ==, то пишет
Notice: Undefined index: NAME in Z:\home\localhost\www\index.php on line 954
как обычно..

$row = dbase_get_record_with_names($db, $i);
if ($row['NAME'] == 1 ) на эту строчку ошибку
$members[$row['NAME']] = trim($row['NAME_']);
}

полный код такой:

$db = dbase_open('PitMosALL_.dbf', 2);
if ($db) {
$record_numbers = dbase_numrecords($db);
$members = Array();
for ($i = 1; $i <= $record_numbers; $i++)
{
$row = dbase_get_record_with_names($db, $i);
if ($row['NAME'] == 1 )
$members[$row['NAME']] = trim($row['NAME_']);
}


// Поиск
$search = $_POST['search_tov'];
if(array_key_exists($search, $members))
echo "Найден";
else
echo "нету";




Спустя 1 минута, 18 секунд (9.09.2011 - 11:55) Winston написал(а):
А ты напиши
print_r($row);

И посмотри имена ключей в массиве $row

Спустя 1 минута, 24 секунды (9.09.2011 - 11:57) Konsole написал(а):
вывелось так
Array ( [NAME_] => ПОРТ_ТАФТА_ГК_280 [SIZE_] => 280 [ARTICLE_] => TA001W [PSIZE_] => 96 [PRCMOS_] => 120 [NUMPIT_] => 60 [NUMMOS_] => 0 [IMAGE_] => TA001W-96.JPG [deleted] => 0 [NAME] => 1 )

Спустя 2 минуты, 47 секунд (9.09.2011 - 11:59) Winston написал(а):
Вот так должно заработать
if (in_array($row, 1))
echo 'есть';
else
echo 'нету';

Спустя 7 минут, 17 секунд (9.09.2011 - 12:07) Konsole написал(а):
это куда именно вставить ? просто нужно же и запрос который ищем

Спустя 9 минут, 53 секунды (9.09.2011 - 12:17) Renden написал(а):
Konsole
Непонятно что у тебя не работает, не ищет, то что вводишь в форму?
ЗЫ судя по твоему выводу массива нужно $members[$row['NAME']] = trim($row['NAME_']);
заменить на $members[$row['NAME_']] = trim($row['NAME_']);
тогда найдет.

Спустя 8 минут, 15 секунд (9.09.2011 - 12:25) Konsole написал(а):

$db = dbase_open('PitMosALL_.dbf', 2);
if ($db) {
$record_numbers = dbase_numrecords($db);
$members = Array();
for ($i = 1; $i <= $record_numbers; $i++)
{
$row = dbase_get_record_with_names($db, $i);
if ($row['NAME'] = 1 )
$members[$row['NAME_']] = trim($row['NAME_']);
}


// Поиск
$search = $_POST['search_tov'];
if(array_key_exists($search, $members))
echo "Найден";
else
echo "нету";



}


вот так? так не находит..

Спустя 18 минут, 3 секунды (9.09.2011 - 12:43) Winston написал(а):
Цитата (Konsole @ 9.09.2011 - 12:25)
for ($i = 1; $i <= $record_numbers; $i++)
{
$row = dbase_get_record_with_names($db, $i); 
    if ($row['NAME'] = 1 ) 
        $members[$row['NAME_']] =  trim($row['NAME_']);   
}

Замени на
for ($i = 1; $i <= $record_numbers; $i++) 
{
$row[] = dbase_get_record_with_names($db, $i);
}
print_r($row);

Спустя 4 минуты, 52 секунды (9.09.2011 - 12:48) Konsole написал(а):
выводит теперь весь список, спасибо большое, а вот с поиском как быть?
// Поиск
$search = $_POST['search_tov'];
if(array_key_exists($search, $row))
echo "Найден";
else
echo "нету";

так не срабатывает

Спустя 6 минут, 45 секунд (9.09.2011 - 12:54) Renden написал(а):
Konsole
а так?

$search = $_POST['search_tov'];
if(in_array($search, $row['NAME_']))
echo "Найден";
else
echo "нету";

Спустя 45 секунд (9.09.2011 - 12:55) Winston написал(а):
Покажи, что находится в
Цитата (Winston @ 9.09.2011 - 12:43)
print_r($row);

Чтобы структуру увидеть

Спустя 1 минута, 2 секунды (9.09.2011 - 12:56) Konsole написал(а):
Array ( [0] => Array ( [NAME_] => БЕЙКА_КОСАЯ [SIZE_] => 15 [ARTICLE_] => STAR15 [PSIZE_] => 6002 [PRCMOS_] => 115 [NUMPIT_] => 93 [NUMMOS_] => 24 [IMAGE_] => STAR-6002.jpg [deleted] => 0 ) [1] => Array ( [NAME_] => БЕЙКА_КОСАЯ [SIZE_] => 15 [ARTICLE_] => STAR15 [PSIZE_] => 6047 [PRCMOS_] => 115 [NUMPIT_] => 20 [NUMMOS_] => 54 [IMAGE_] => STAR-6047.jpg [deleted] => 0 )
и т.д.

Спустя 2 минуты, 1 секунда (9.09.2011 - 12:58) Winston написал(а):
Цитата (Renden @ 9.09.2011 - 12:54)
$_POST['search_tov'];

Что в поиск прописываешь ?

Спустя 32 секунды (9.09.2011 - 12:59) Konsole написал(а):
например БЕЙКА_КОСАЯ

Спустя 3 минуты, 2 секунды (9.09.2011 - 13:02) Renden написал(а):
Konsole
можно и так попробывать наверно

$search = $_POST['search_tov'];
foreach ($row as $v)
{
if($v['NAME_'] == $search)
echo "eсть";
else
echo "нет";
}

Спустя 4 минуты, 14 секунд (9.09.2011 - 13:06) Konsole написал(а):
написал множество "нет"

Спустя 5 минут, 32 секунды (9.09.2011 - 13:12) Winston написал(а):
Вот так должна заработать проверка
Свернутый текст
$row = array_diff(array_map(create_function('$array, $value', 'return array_search($value, $array);'), $row, Array($_POST['search_tov'])), Array(''));

if(!empty($row))
echo 'Есть';
else
echo 'Нету';

Спустя 3 минуты, 3 секунды (9.09.2011 - 13:15) Konsole написал(а):
написала ошибку
Parse error: syntax error, unexpected $end in Z:\home\localhost\www\index.php on line 1038

Спустя 1 минута, 18 секунд (9.09.2011 - 13:16) Winston написал(а):
; не забыл случайно ?

Спустя 2 минуты, 21 секунда (9.09.2011 - 13:18) Konsole написал(а):
скобку забыл, но мне теперь пишет что всегда есть, какой бы запрос не ввел

Спустя 16 минут, 29 секунд (9.09.2011 - 13:35) Winston написал(а):
Запакуй в архив свой скрипт и базу PitMosALL_.dbf и скинь сюда, я посмотрю...

Спустя 5 минут, 41 секунда (9.09.2011 - 13:40) Konsole написал(а):
выслал

Спустя 7 минут, 34 секунды (9.09.2011 - 13:48) Winston написал(а):
Офигеть.... Черт ногу сломит...

Спустя 2 минуты, 59 секунд (9.09.2011 - 13:51) Winston написал(а):
У меня расширения для работы с DBF нету.
Теперь он
Цитата (Konsole @ 9.09.2011 - 13:18)
но мне теперь пишет что всегда есть,

Напиши
print_r($row);

После строки
$row = array_diff(array_map(create_function('$array, $value', 'return array_search($value, $array);'), $row, Array($_POST['search_tov'])), Array(''));

И покажи, что выведет.

Спустя 2 минуты, 53 секунды (9.09.2011 - 13:54) Konsole написал(а):
Array ( [0] => deleted [1] => deleted [2] => deleted [3] => deleted [4] => deleted [5] => deleted [6] => deleted [7] => deleted [8] => NUMPIT_ [9] => deleted [10] => deleted [11] => deleted [12] => deleted [13] => deleted [14] => deleted [15] => deleted [16] => deleted [17] => deleted [18] => deleted [19] => deleted [20] => NUMMOS_ [21] => deleted [22] => deleted [23] => deleted [24] => deleted [25] => deleted [26] => deleted [27] => deleted [28] => deleted [29] => deleted [30] => deleted [31] => deleted [32] => deleted [33] => deleted [34] => deleted [35] => deleted [36] => deleted [37] => deleted [38] => deleted [39] => deleted [40] => deleted [41] => deleted [42] => NUMMOS_ [43] => NUMMOS_ [44] => NUMMOS_ [45] => NUMMOS_ [46] => NUMMOS_ [47] => NUMMOS_ [48] => NUMMOS_ [49] => NUMMOS_ [50] => NUMMOS_ [51] => NUMMOS_ [52] => NUMMOS_ [53] => NUMMOS_ [54] => deleted [55] => deleted [56] => NUMMOS_ [57] => NUMMOS_ [58] => NUMMOS_ [59] => deleted [60] => deleted [61] => deleted [62] => deleted [63] => deleted [64] => deleted [65] => deleted [66] => deleted [67] => deleted [68] => deleted [69] => deleted [70] => deleted [71] => deleted [72] => deleted [73] => deleted [74] => deleted [75] => deleted [76] => deleted [77] => deleted [78] => deleted [79] => NUMPIT_ [80] => deleted [81] => NUMPIT_ [82] => NUMPIT_ [83] => NUMPIT_ [84] => NUMPIT_ [85] и т.д.

Спустя 3 минуты, 24 секунды (9.09.2011 - 13:57) Winston написал(а):
А введи какой-нибудь символ для поиска, тоже будет найдено ?

Спустя 2 минуты, 36 секунд (9.09.2011 - 14:00) Konsole написал(а):
угум-с, тоже есть

Спустя 2 минуты, 38 секунд (9.09.2011 - 14:03) Winston написал(а):
Попробуй так перепиши
Свернутый текст
$row = array_diff(array_map(create_function('$array, $value', 'return (bool)array_search($value, $array);'), $row, Array($_POST['search_tov'])), Array(''));

if($row == TRUE)
echo 'Есть';
else
echo 'Нету';

Спустя 6 минут, 54 секунды (9.09.2011 - 14:09) Konsole написал(а):

$record_numbers = dbase_numrecords($db);
$members = Array();
for ($i = 1; $i <= $record_numbers; $i++)
{
$row[] = dbase_get_record_with_names($db, $i);
}


$row = array_diff(array_map(create_function('$array, $value', 'return (bool)array_search($value, $array);'), $row, Array($_POST['search_tov'])), Array(''));

if($row == TRUE)
echo 'Есть';
else
echo 'Нету';


полный код, пишет что есть во всех случаях...

Спустя 5 минут, 10 секунд (9.09.2011 - 14:15) Winston написал(а):
Тьфу блин... у меня все как надо работает huh.gif

Спустя 10 минут, 9 секунд (9.09.2011 - 14:25) Konsole написал(а):
а вот у меня все пишет что есть и есть))) почему он считает, что все правильно что я ввел хз..

Спустя 5 минут, 1 секунда (9.09.2011 - 14:30) Winston написал(а):
Попробуй заменить array_search на in_array

Спустя 5 минут, 12 секунд (9.09.2011 - 14:35) Konsole написал(а):
тоже самое, вообще не понимаю, до обработчика доходит, а вот при сравнении ему все равно что находится.. все пишет есть..

Спустя 1 минута, 15 секунд (9.09.2011 - 14:36) Konsole написал(а):
тут наверно в чем-то ошибка?
$row = array_diff(array_map(create_function('$array, $value', 'return (bool)in_array($value, $array);'), $row, Array($_POST['search_tov'])), Array(''));

Спустя 7 минут, 17 секунд (9.09.2011 - 14:43) Konsole написал(а):

if(in_array("наименование",$row, true))
echo "Найден";
else
echo "нету";


даже так написал, ввел наименование товара и все равно нету

Спустя 15 минут, 50 секунд (9.09.2011 - 14:59) Winston написал(а):
Напиши еще так
$row = array_diff(array_map(create_function('$array, $value', 'return in_array($value, $array);'), $row, Array($_POST['search_tov'])), Array(''));
print_r($row);

Что будет выведено ?

Спустя 7 минут, 41 секунда (9.09.2011 - 15:07) Konsole написал(а):
Array ( [0] => 1 [1] => 1 [2] => 1 [3] => 1 [4] => 1 [5] => 1 [6] => 1 [7] => 1 [8] => 1 [9] => 1 [10] => 1 [11] => 1 [12] => 1 [13] => 1 [14] => 1 [15] => 1 [16] => 1 [17] => 1 [18] => 1 [19] => 1 [20] => 1 [21] => 1 [22] => 1 [23] => 1 [24] => 1 [25] => 1 [26] => 1 [27] => 1 [28] => 1 [29] => и т.д.

Спустя 2 дня, 19 часов, 8 минут, 12 секунд (12.09.2011 - 10:15) Konsole написал(а):
вывод массив, но вот как мне сделать чтобы он искал и находил по наименование не понимаю, почему не работает..
тут массив в массиве может в этом дело?

Array ( [0] => Array ( [NAME] => БАХРОМА_ТРИМЛЭНД [NAME_SHORT] => БАХРОМА [IMAGE] => ххх.jpg [CATEGORY] => АКСЕССУАРЫ [N_PAGE] => 0 [N_PP] => 0 [SIZE] => 12,5 [deleted] => 0 ) [1] => Array ( [NAME] => БЕЙКА_КОСАЯ [NAME_SHORT] => КОСАЯ БЕЙКА [IMAGE] => STAR-6108.jpg [CATEGORY] => АКСЕССУАРЫ [N_PAGE] => 1 [N_PP] => 1 [SIZE] => 15 [deleted] => 0 ) [2] => Array ( [NAME] => КАНТ_ШТОРНЫЙ_ТРИМЛЭНД [NAME_SHORT] => КАНТ ШТОРНЫЙ [IMAGE] => E07-11 .jpg [CATEGORY] => АКСЕССУАРЫ [N_PAGE] => 1 [N_PP] => 2 [SIZE] => 20 [deleted] => 0 )

Спустя 1 час, 47 минут, 23 секунды (12.09.2011 - 12:03) Konsole написал(а):

function search($text, $row)
{
foreach ($row as $val)
{
if (is_array($val) && search($text, $val)) return true;

elseif ($val==$text) return true;
}
return false;
}


echo search();

решил по функции поиска для многомерного массива,, но у меня почему-то пишет
Warning: Missing argument 1 for search(), called in Z:\home\localhost\www\search.php on line 34 and defined in Z:\home\localhost\www\search.php on line 22

Warning: Missing argument 2 for search(), called in Z:\home\localhost\www\search.php on line 34 and defined in Z:\home\localhost\www\search.php on line 22

Warning: Invalid argument supplied for foreach() in Z:\home\localhost\www\search.php on line 24
не подскажете в чем не так, вроде аргументы все правильно ввел

Спустя 2 минуты, 23 секунды (12.09.2011 - 12:05) Winston написал(а):
Цитата (Konsole @ 12.09.2011 - 12:03)
echo search();

Забыл значения передать.

Спустя 24 минуты, 1 секунда (12.09.2011 - 12:29) Konsole написал(а):
а как это сделать? что написано в search() ?

Спустя 5 минут, 54 секунды (12.09.2011 - 12:35) Winston написал(а):
$row = Array('Тест 1', 'Тест 2'); // Массив в котором будет происходить поиск
$text = 'Тест 1'; // Тест для поиска
echo search($text, $row);

Спустя 21 минута, 12 секунд (12.09.2011 - 12:56) Konsole написал(а):
так и не хочет искать...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.