$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..
ЗЫ странный у вас код..
Проще создать запрос на поиск и искать самим 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
Погодите ка, как из этого:
Получается это? Ключи тут 0,1,2,3 и тп.
in_array мб лучше всеже воспользоватся?
Погодите ка, как из этого:
$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
У тебя массив с числовыми ключами, а ты обращаешься к символьному ключу из-за этого и 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: "
Я думаю для красоты мона сделать и так) чтоб ключи были именами чтоб там не ботался "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 файлу, как называются эти переменные я узнал, и как вывел имя, то осталось просто все вывести и чтобы при поиске показывал именно то наименование, а вот как это реализовать все голову ломаю, так вроде понятно что и как, а вот реализовать..
и еще при
пишет ошибку что не найден NAME, а когда я ставлю
то без ошибок..
так-то выводится списком все наименования, а вот поиск не ищет..
мне по сути нужно вывести все данные почта это и $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
как обычно..
полный код такой:
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 написал(а):
А ты напиши
И посмотри имена ключей в массиве $row
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 )
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_']);
тогда найдет.
Непонятно что у тебя не работает, не ищет, то что вводишь в форму?
ЗЫ судя по твоему выводу массива нужно $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
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 написал(а):
Тьфу блин... у меня все как надо работает
Спустя 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(''));
$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 )
тут массив в массиве может в этом дело?
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 написал(а):
так и не хочет искать...