好的,所以我写了这个脚本,但是我发现它无法正常工作。我有一个编程问题 - 编程这个正常工作。它似乎没有正常工作。
此功能在每一行中显示,该数据显示在一个充满银行对帐单付款的数据库中。 $a, $b, $c, $d
只是类型(BAC,TRS等),描述(35 QUEENS ROAD RENT)和金额(£500.00)。
我正在尝试创建一个功能,以便将付款与特定用户进行协调,具体取决于与他们相关的地址/属性,他们的姓名以及他们的租金。
这是我到目前为止所做的:
function reconcile($a,$b,$c,$d) {
//when the user clicks on the text fild, jquery loads the various names needed from the database
//when the user clicks on the selected field, the value is saved via ajax and saved on the server the reconciled field
//break down the inputs into an array
//create SQL query that matches all of these key words
//create keywords database
$keywords = $a . " " . $b . " " . $c . " " . $d;
//remove commas, dashes and other keywords from database that might be a nuisance
//change names like ave to avenue
$keywords = str_replace("'", "", $keywords);
$keywords = str_replace("-", "", $keywords);
$keywords = str_replace(",", "", $keywords);
$keywords = str_replace("A/C", "", $keywords);
$keywords = str_replace("TO", "", $keywords);
$keywords = str_replace("CALL", "", $keywords);
$keywords = str_replace("REF.NO.", "", $keywords);
$keywords = str_replace("TO", "", $keywords);
$keywords = preg_replace("/\s+/", " ", $keywords);
$keywords = str_replace(" ", "", $keywords);
$keywords = addslashes($keywords);
$keywords = mysql_real_escape_string($keywords);
$keywords = explode(" ", $keywords);
//$keywords = remove_from_array($keywords, 2);
//match keywords to keywords database
$matches = array();
//search 5 databases...
$i=0;
foreach($keywords as $keyword) {
//add more fields
//check distinct
//do not allow any keywords that are smaller than 3
if(strlen($keyword) < 3) {
continue;
}
$get = mysql_query("SELECT DISTINCT `users`.`id` FROM `users` LEFT JOIN `addresses` ON `users`.`id` = `addresses`.`user` WHERE (`users`.`fname` LIKE '%$keyword%' OR `users`.`lname` LIKE '%$keyword%') OR (((`addresses`.`flat` LIKE '%$keyword%' OR `addresses`.`address` LIKE '%$keyword%') OR (`addresses`.`district` LIKE '%$keyword%' OR `addresses`.`town` LIKE '%$keyword%')) OR (`addresses`.`county` LIKE '%$keyword%' OR `addresses`.`postcode` LIKE '%$keyword%'));") or die("Error: " . mysql_error());
if(mysql_num_rows($get) > 0) {
while($fetch = mysql_fetch_array($get)) {
list($uid) = $fetch; //$uid = user id
//insert $uid into array
//1 => 3 times
//find number if exists and then add to that number
//search array and echo attempts (if any)
if(in_array($uid, $matches)) {
//add one to the key
$matches[$uid]++;
} else {
array_push($matches, $uid);
}
$i++;
//save search to database
}
//create array for user
//add up relevance for that user
}
}
$relevance = 0;
if($i > $relevance) {
//change javascript function and link with ajax.php
echo "<span onClick=\"javascript:void(0)\" style=\"cursor:pointer;\" class=\"label label-success\">Accept</span>\n\r";
//change to jquery function that allows a drop down of names from the database
echo "<input type=\"text\" style=\"width:140px\" value=\"" . $matches[0] . "\" />\n\r";
}
}
我正在考虑添加一个执行此操作的数组:
[0] (user id) => 3 (how many times that user id is found through one row of a bank statement)
例如,如果用户3在37 Kings Avenue拥有一个属性,并且关键字为'Avenue',则结果为[3] => 1
,依此类推额外用户。
“接受”按钮表示用户将接受系统的对帐,文本输入将显示其他相关名称/所有名称和地址的下拉列表。
答案 0 :(得分:1)
如果要搜索数据库/表格/视图中的某些数据,可以使用SQLyog's Data search功能。它搜索服务器中的数据。它就像Google搜索一样! “数据搜索”功能使您无需实际编写任何SQL即可查找特定数据。您可以按数据类型/数据库或表的子集过滤数据。
您可以尝试下载30-day trial并评估此MySQL GUI。
答案 1 :(得分:1)
还有sphinx(Official site),如果您具有对服务器的root访问权限,请查看它,以便您可以运行所需的服务器进程。它很容易设置,并且非常适合提供相关结果,您可以获得关键字或一组关键字的所有匹配项,因此您基本上可以将所有关键字投入其中,它将为您提供所有结果,并且最佳匹配在上面。
此外它非常快,允许增量索引(添加新数据而无需通过所有数据来重建索引),因此您可以在非高峰时段运行完整的重新索引。
如果你真的很容易,我建议你使用MySQL插件SphinxSE,它允许你像普通的mysql表一样查询它,并且可以连接原始表格以便于访问。
添加mysql与插件