Возникла необходимость проверять значение допполя "телефон" на наличие ранее введенных таких-же номеров.
Написал небольшной хак, проверяющий наличие или отсутствие номера (значения допполя):
<script>
$(function(){
$('.find_tel').on('click', function(){
var tel_num = document.getElementById('xf_tel').value; //получаем значение из поля ввода номера
$.post('engine/ajax/[spoiler]find_tel.php[/spoiler]', { xfname: "tel", tel: tel_num }, function(data){
if(data){ $('.tel_nums').html(data); } //выводим ответ
});
return false;
});
});
</script>
<?php
/*
====================================================
Назначение: Поиск наличия телефонного номера в базе
====================================================
*/
@error_reporting ( E_ALL ^ E_WARNING ^ E_NOTICE );
@ini_set ( 'display_errors', true );
@ini_set ( 'html_errors', true );
@ini_set ( 'error_reporting', E_ALL ^ E_WARNING ^ E_NOTICE );
define( 'DATALIFEENGINE', true );
define( 'ROOT_DIR', substr( dirname( __FILE__ ), 0, -12 ) );
define( 'ENGINE_DIR', ROOT_DIR . '/engine' );
include ENGINE_DIR . '/data/config.php';
date_default_timezone_set ( $config['date_adjust'] );
if( $config['http_home_url'] == "" ) {
$config['http_home_url'] = explode( "engine/ajax/find_tel.php", $_SERVER['PHP_SELF'] );
$config['http_home_url'] = reset( $config['http_home_url'] );
$config['http_home_url'] = "http://" . $_SERVER['HTTP_HOST'] . $config['http_home_url'];
}
require_once ENGINE_DIR . '/classes/mysql.php';
require_once ENGINE_DIR . '/data/dbconfig.php';
require_once ENGINE_DIR . '/modules/functions.php';
$xfname = $_POST['xfname'];
$tel = $_POST['tel'];
$stack = array();
$db->query( "SELECT id, title, alt_name, xfields FROM " . PREFIX . "_post WHERE approve=1" );
while( $row = $db->get_row() )
{
$xfields[] = $row;
}
foreach( $xfields as $value )
{
if( $value[xfields] ){
$row = xfieldsdataload( $value[xfields] );
if( $row[$xfname] ){
$rowdata = explode( "~", $row[$xfname] );
foreach( $rowdata as $value ){
if( $value ){
$value = trim( $value );
array_unshift( $stack, $value );
}
}
}
}
}
if(in_array($tel, $stack)) echo "<font color=\"red\">номер уже введен</font>";
else echo "<font color=\"green\">номер ранее не вводился</font>";
Все в принципе работает. Но возникла необходимость выводить в ответе список публикаций, в которых встречается указанный номер...
Заранее спасибо.