Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Проверка допполя на наличия значения в БД при добавлении новости - как выводить список найденного?

Проверка допполя на наличия значения в БД при добавлении новости - как выводить список найденного?


     16.03.2016    Общие вопросы по PHP, Хаки, MySQL    1774

вопрос
Доброго времени!

Возникла необходимость проверять значение допполя "телефон" на наличие ранее введенных таких-же номеров.

Написал небольшной хак, проверяющий наличие или отсутствие номера (значения допполя):



Все в принципе работает. Но возникла необходимость выводить в ответе список публикаций, в которых встречается указанный номер...

И суть вопроса: как получить значения id, title, alt_name найденных результатов?

Заранее спасибо.

Ответа пока нет


7 комментариев

misha-koder
Юзер

misha-koder - 16 марта 2016 12:29 -

Во-первых - если номера храните в едином формате (что очень правильно), можно выборку сократить, используя WHERE `xfields` LIKE '%xfname=79991112233%'
Во-вторых - foreach здесь не к месту, результаты нужно обрабатывать внутри while.
В-третьих - записывайте нужные данные в массив, кодируйте в json и возвращайте, а в запросе используйте функцию $.getJSON

ravchik
Юзер

ravchik - 16 марта 2016 13:18 -

увы, если-бы я обладал такими познаниями в php, я вряд ли задавал-бы здесь вопросы...

P.S.: На счет выборки- понял, спасибо за подсказку.

nowheremany
Эксперт

nowheremany - 16 марта 2016 13:50 -

foreach( $xfields as $row)
{
    if( $row[xfields] ){
        $row[xfields] = xfieldsdataload( $row[xfields] );
        if( $row[xfields][$xfname] ){
            $rowdata = explode( "~", $row[xfields][$xfname] );
            foreach( $rowdata as $value ){
                if( $value ){
                    $value = trim( $value );
                    $stack[$value][] = $config['http_home_url'].'?newsid='.$row['id'];
                }
            }
        }
    }
}
die(json_encode($stack));


и через JS $.getJSON его разбирать

Благодарность принимаю тут Связь

ravchik
Юзер

ravchik - 16 марта 2016 14:07 -

Спасибо! Очень помогли!
А без foreach все-таки никак?

nowheremany
Эксперт

nowheremany - 16 марта 2016 14:17 -

Можно все что внутри foreach закинуть во внутрь while. Ну памяти поменьше будет есть, ну и чуть быстрее стработает

Благодарность принимаю тут Связь

ravchik
Юзер

ravchik - 16 марта 2016 15:14 -

Большое спасибо за помощь! Все получилось.

Вдруг кому понадобится.. Окончательный вариант:



vitnet
PHP-developer

vitnet - 16 марта 2016 15:55 -

+ для защиты
$... = $db->safesql($_POST['...']);

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх