2014-02-25 48 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