2014-02-25 50 views
0

我有一个从文本文件生成的php列表。 而我有一些问题过滤信息的最大值。 这是我的代码:比较列表和表格的值php

<?php 
      $searchReq = $_POST['searchMaximum']; 
      $intValForm = filter_var($searchReq, FILTER_VALIDATE_INT); 

      $f = fopen("info.txt", "r"); 
      while (($line = fgets($f)) !== FALSE) { 
       if (strstr($line, $searchReq)) { 
        list($hPostcode, $hPrice, $hImage, $hViews) = explode(",", $line); 
        $intValFile = filter_var($hPrice, FILTER_VALIDATE_INT); 
        if($intValFile <= $intValForm){  
         print "<hr/>"; 
         print 'Postcode:' . $hPostcode . '<br />'; 
         print 'Price: £' .$hPrice . ",000" . '<br />'; 
         print "<img src=\"$hImage\" />"; 
         print 'Views:' . $hViews . '<br />'; 
         print '<br/>'; 
        } 
       } 

      } 
      fclose($f); 
     ?> 

所以它划分四个场中的每一行,使一个变量out每个字段的。 我的问题是如何比较我从搜索框中获得的值以及仅显示行(打印字段)的页面,其中相应的变量低于搜索到的值。 有人可以帮助我吗? 我真的很感激:)

回答

0

function filter_var返回false,如果过滤器失败。所以你应该在比较值之前检查过滤结果。第二个问题是函数strstr,用于比较字符串,所以如果你想找到价格为9的行,并且你从后期值10得到 - funciton strstr return false。你可以试试这个:

$searchReq = $_POST['searchMaximum']; 
$intValForm = filter_var($searchReq, FILTER_VALIDATE_INT); 

if ($intValForm === false) { 
    die('search maximum is not a number'); 
} 

$f = fopen("info.txt", "r"); 
while (($line = fgets($f)) !== FALSE) { 
    list($hPostcode, $hPrice, $hImage, $hViews) = explode(",", $line); 
    $intValFile = filter_var($hPrice, FILTER_VALIDATE_INT); 
    //omit not valid rows 
    if ($intValFile === false) { 
     continue; 
    } 
    if($intValFile <= $intValForm){  
     print "<hr/>"; 
     print 'Postcode:' . $hPostcode . '<br />'; 
     print 'Price: £' .$hPrice . ",000" . '<br />'; 
     print "<img src=\"$hImage\" />"; 
     print 'Views:' . $hViews . '<br />'; 
     print '<br/>'; 
    } 
} 
fclose($f); 
+0

工程就像一个魅力。非常感谢你@ziollek – jPratas