将特定字母替换为范围编号,并使用php在数据库中搜索

时间:2014-05-19 12:14:20

标签: php mysql sql arrays loops

请帮忙。

<form name="main" method="POST">                    
<input name="search" type="text">
<input name="submit" type="submit" value="Go">
</form>

每当用户输入X或Y或Z时,该值将读作范围0-9

我需要使用php和mysql

捕获数据库中的值

当用户在搜索输入文本ex中输入值时。 &#34; XX1YYZ&#34;

我需要阅读这封信&#34; X&#34;等于范围&#34; 0,1,2,3,4,5,6,7,8,9&#34;

我需要阅读这封信&#34; Y&#34;等于范围&#34; 0,1,2,3,4,5,6,7,8,9&#34;

我需要阅读这封信&#34; Z&#34;等于范围&#34; 0,1,2,3,4,5,6,7,8,9&#34;

其中&#34; X&#34;不等于&#34; Y&#34;和&#34; Z

其中&#34; Y&#34;不等于&#34; X&#34;和&#34; Z

其中&#34; Z&#34;不等于&#34; X&#34;和&#34; Y

数据库中的示例数据

1233557

1255661

1288119

7711458

666788

3344556

例如,我输入&#34; 12XXYYZ&#34;在文字输入

输出应为&#34; 1233557&#34;和&#34; 1255661&#34;和&#34; 1288119&#34;

因为它等于数据库值

它有点复杂的ryt?请帮忙

这是我到目前为止,但数字不应该等于每个结果,应该搜索到数据库值

if(isset($_POST['submit']))
{
$searchtext = $_POST['search'];
foreach (range(0, 9) as $n) {

$trans = array("X" => $n, "x" => $n, "Y" => $n, "y" => $n, "Z" => $n, "z" => $n);
if (strtr($searchtext, $trans)){

echo '<br>' . strtr($searchtext, $trans);       
}
}
}       

1 个答案:

答案 0 :(得分:0)

这可能是一个解决方案:

首先从数据库中获取基本选择的数字,将XYZ替换为???

select * from [table] where [field] like '12_____';

这应该限制您的选择。

下一步是PHP,下面是psuedo代码:

foreach ($row)
  $i = 0;
  foreach ($char in $filter) {
    $i++;
    if ($char == 'Z')
      if ($Z == empty) 
        $Z = $field[$i]
      else
        if ($field[$i] != $Z)
          break;
     // repeat for Y
     // repeat for x
   }
   if (x == y or y == z or x == z)
     continue;
   addtoresult($row);
 }