2016-09-09 3 views
0

Es scheint ein Problem mit dem Code, wo das Ergebnis mit einer Zeile übersprungen wird.php csv überspringt eine Zeile beim Senden

Zum Beispiel, wenn ich schreibe: 642.641 das Ergebnis sein sollte: "642641", "testgatan 1" sondern, es zeigt: "762755", "testgatan 2"

Wie kann ich so fix es tatsächlich die Eingabe erhalten?

bekam ich einen Link für Sie zu sehen, was ich meine: http://snaland.com/herestheidnummer/test.html

Hier ist der csv:

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

ich von Find if a value exist in a CSV file with PHP von Fred

-ii- den PHP-Code verwendet und modifizierte es wie folgt:

<?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-Formular:

<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> 

Antwort

0

Ihr Problem ist der Zustand in der While-Schleife. Die Zuweisung zu Schlüssel und Liste wird vor der Überprüfung von! $ Zeilennummer ausgeführt. Es sollte funktionieren Sie tauschen beide Bedingungen wie folgt aus

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

Wow, danke. Es funktionierte, schätzte die Hilfe :) Ich kann nicht + Ihre Stimme abstimmen wegen schlechter Beiträge vor dieser, eigentlich wegen Legasthenie, hoffentlich kann jemand anderes upvote. Nochmals vielen Dank :) –

0

Jeder schreitet den Array-Cursor fort, wenn Sie also das Ergebnis gefunden haben, ist der nächste Wert bereits geladen. Mehr hier http://php.net/manual/en/function.each.php.

Eine einfachere Lösung ist Ihre Schleife zu ersetzen:

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

Und auf das, wenn:

if($line){ 

    echo "Found result: " .$line; 

} 
Verwandte Themen