2016-03-18 6 views
4

übereinstimmen Ich bin etwas neu in PHP, aber habe fast alles, was ich brauche, außer einer Sache, die mich hierher geführt hat. Ich erstelle eine einfache (für Sie wahrscheinlich, aber nicht für mich) Website für einen Freund, damit sie verfolgen können, wann sie Mietzahlungen erhalten, neue Mieter eingeben und die aktuellen Bilanzen prüfen. Ich hatte alles perfekt funktioniert ... dachte ich. Beim Überprüfen der Waage habe ich mit nur einer Worteingabe getestet, um die Textdatei zu lesen und die richtigen Informationen auszugeben. Aber was ich gefunden habe, ist, wenn der Vor- und Nachname mit einem Leerzeichen dazwischen gespeichert wird, bekomme ich keine Übereinstimmung. Ich brauche Code, um den eingegebenen Mieternamen in seiner Gesamtheit mit dem Abstand zwischen zu lesen. Ich habe nichts gefunden, was ich wirklich verstehen konnte, und habe mehrere Nächte gesucht. Hier ist mein vollständiger Code zum Suchen und Abrufen von Ergebnissen.Wie zwei bis drei Wörter in einer Textdatei mit Leerzeichen in PHP

Die Textdatei ist wie folgt gesucht werden:

John Doe,123 Main St,400.00,01/01/2016, 
Jane Doe,124 Main St,300.00,01/01/2016, 
John Doe,123 Main St,,01/03/2016,200.00 
<?php 
$lines = file('data.txt'); //here's the filename 
?> 
<center> 
    <table id="historytable" width="640" border="1"> 
    <caption>Billing & Payment History 
</caption> 
<tbody> 
<tr> 
<td width="40">Tenant</td> 
<td width="40">Address</td> 
<td width="40">Date</td> 
<td width="40">Rent</td> 
<td width="40">Payment</td> 
</tr> 
<?php 
$search = $_POST["name"]; //assigning a string to each piece of input data 
// Store true when the text is found 
$balance = 0; //assign initial value to balance 
$renttotal = 0; //assign initial value to renttotals 
$received = 0; //assign initial value to received 
$found = false; 
foreach ($lines as $line) { //this is the loop to read the txt file 
{ 
    if(strpos($line, $search) !== false) 
    { 
    $found = true; 
list($a,$b,$c,$d,$e) = explode(',', $line); //this assigns a variable name to each data item separated by a comma 
    $renttotal+= $c; //each time it loops, it gathers the value of c adding it to itself same for the two lines below 
    $received+= $e; 
    $balance = $renttotal - $received; //subtracts the final value of renttotal and received assigning the difference to balance 

    $line_array = explode(",", $line); //breaks each piece of data apart to be placed in a table } 
    echo "<tr> 
<td width=40>$a</td> 
<td width=40>$b</td> 
<td width=40>$c</td> 
<td width=40>$d</td> 
<td width=40>$e</td> 
</tr>"; 
}}} 
?> 
</tbody> 
</table> 
</center> 
<BR /> 
<BR /> 
<center> 
    <p>TOTAL RENTS CHARGED $<?php echo "$renttotal"?><br /> 
    TOTAL PAYMENTS RECEIVED $<?php echo "$received"?><br /> 
    BALANCE DUE $<?php echo "$balance"?></p> 

Sie für jede Hilfe im Voraus danken.

+0

Um ehrlich zu sein, ich verstehe Ihr Problem nicht. Welche Saiten müssen verglichen werden? Anstatt die Variablen 'a',' b' und so weiter zu benennen, versuchen Sie, ihnen verständlichere Namen wie '$ name',' $ address', '$ betrag' usw. zu geben. Sie werden das wahrscheinlich verstehen Ihr Code in drei Monaten. – Jan

+0

Danke für die Antwort. Die Variablen waren lediglich, um alles in Ordnung zu bringen, bevor ich die Codierung perfekt anpasste. Soweit Vergleich - der Benutzer sendet ein Formular mit dem vollen Namen des Mieters zu $ ​​search = $ _POST ["name"]; Name. Dieser Name - jetzt $ search - wird nach allen Instanzen in der Datei data.txt durchsucht. Wenn eine genaue Übereinstimmung gefunden wird, sollte der vollständige Name, Adresse, Miete, Datum und Zahlung in der Tabelle zurückgegeben werden. Ich hoffe, ich erkläre das richtig. Ich denke, dass ich hier etwas falsch machen kann - if (strpos ($ line, $ search)! == false). Danke noch einmal. – SharonF

+0

Die Kodierung passt nur dann richtig, wenn "Jane" die Eingabe für $ search war, aber wenn es "Jane Doe" ist, stimmt es nicht überein. – SharonF

Antwort

0

tun einfach ein urldecode() wie so:

$search = urldecode($_POST["name"]); 

Und Sie sollten danach in Ordnung sein.

+0

Vielen Dank. Ich arbeite perfekt! – SharonF

Verwandte Themen