2016-09-09 4 views
0

結果が1行でスキップされるコードに問題があるようです。例えばPHP csvが1行をスキップして送信する

、私が書く場合: 642641結果は次のようになります。 "642641"、 "testgatan 1" ではなく、それは見せている: "762755"、 "testgatan 2" を

を私は修正することができますどのようにそれは実際に入力を提出しますか?

ID,Gata 
"642641","testgatan 1" 
"762755","testgatan 2" 
"346468","testgatan 3" 
"114564","testgatan 4" 
"758925","testgatan 5" 

私はフレッド-ii-

、変更によってFind if a value exist in a CSV file with PHPからPHPコードを使用:ここで

http://snaland.com/herestheidnummer/test.htmlはCSVです:あなたは私が何を意味するか見るためにため

は、私がリンクを得ましたそれはこのようです:

<?php 
$search  = $_GET['subject']; 
$lines  = file('http://snaland.com/herestheidnummer/anlaggningsnmr.csv'); 
$line_number = false; 

while (list($key, $line) = each($lines) and !$line_number) { 
    $line_number = (stripos($line, $search) !== FALSE); 

} 

if($line_number){ 

    echo "Found result: " .$line; 

} 

else{ 
    echo "Can't find result: " .$search; 
} 

?> 

HTML形式:

<form name="form" action="http://snaland.com/herestheidnummer/verifiera.php" method="get"> 
    <input type="text" name="subject" id="subject" value="000000"> 
    <input type="submit" value="Submit"> 
</form> 

答えて

0

問題はwhileループの状態です。 !$ line_numberのチェックの前に、keyとlistへの代入が実行されます。それはあなたがそれぞれ、配列カーソルを進め、この

while (!$line_number and list($key, $line) = each($lines)) { 
    $line_number = (stripos($line, $search) !== FALSE); 
} 
+0

うわー、ありがとうございました。それは働いて、助けを感謝しました:) 私はあなたの答えを投票することはできませんので、実際にはディスレクシアのため、これ前に悪い投稿のため、うまくいけば誰かがupvoteことができます。 もう一度ありがとうございます:) –

0

のように両方の条件を交換ffを動作するはずですので、あなたが結果をfindeとき、次の値がすでにロードされています。詳細はこちらhttp://php.net/manual/en/function.each.php

簡単な解決策は、あなたとループを交換することである。

for($i = 0; $i<count($lines);$i++){ 
if(stripos($lines[$i], $search) !== false){ 
    $line = $lines[$i]; 
     break; 
    } 
} 

とオンの場合:

if($line){ 

    echo "Found result: " .$line; 

} 
関連する問題