2017-06-01 2 views
0

Ich entwickelte ein Programm - ein Datenabgleicher von zwei CSV-Datei. Beispieleingabe der Daten in CSV-Datei ist unten.Hinzufügen/Aktualisieren von Daten in bestimmten Zeile der CSV-Datei

user_transaction:

Benutzername | E-Mail | Betrag | leer | insgesamt | n/a | ok Bankname | Datum

enter image description here

bank_transaction:

Datum | Transaktionsdetails | n/a | Standort | leer | für Status | betragen

enter image description here

Also, was mein Programm kann für alle Banktransaktionen (Datum und Betrag) Spiel für den Nutzer-Daten suchen.

Hier ist mein Code macht es .. jdoodle.com/a/3Ev

Jede Idee? Beim Klicken auf done einer bestimmten Zeile sollten Daten aus der CSV-Datei bank_transaction zur Statuszeile hinzugefügt werden. Mein Zweck hier ist es, done alles, was ich überprüfen/bestätigen Bank Transaktionsdetails zu markieren.

Beispiel Ausgabe in CSV: enter image description here

+0

Was genau ist Ihr Problem dabei? Bitte teilen Sie ein Beispiel Ihres Versuchs mit. – Cossintan

Antwort

1

Wenn ich von einer bestimmten Zeile getan klicken, Wie kann ich Daten in die Statuszeile

Für das Formular hinzufügen (wo Ihre Schaltfläche „Fertig“) Setzen Sie einfach die Zeilennummer (oder die Dateiposition von ftell; dann fseek auf den Fokus), es wird das Update vereinfachen.

Verwenden Sie auch keine benutzerdefinierten Parser für CSV. Versuchen Sie fgetcsv

// Open file, cursor at the beginning 
$stream = fopen('bank_transaction.csv', 'r+', false); 
// Take focus position 
$idx = filter_input(INPUT_POST, 'ftell', 0, FILTER_VALIDATE_INT); 
if ($idx) { 
    fseek($stream, $idx); 
    // $maxLineLength - define it earlier 
    $data = fgetcsv($stream, $maxLineLength, ',', '"'); 
    ... update required field ... 
    // Set position back after read 
    fseek($stream, $idx); 
    fputcsv($stream, $data, ',', '"'); 
} 
+0

Ich habe Ihren Standpunkt verstanden. Wie kann ich anhand meines Codes die spezifische Zeile und Position des hinzuzufügenden Elements abrufen? –

+0

'Done' Wechsel zu '

"/>' und 'ftell'-Funktion vor' fgetscv' setzen ('for' - ist nicht der richtige Ort ... aber es kann sein' for (; $ ftell = ftell ($ csv_payment_array) , $ depositlist = fgetcsv ($ csv_payment_array);) {... '). – FieryCat

+0

Können Sie sich bitte meinen aktualisierten Code ansehen? Scheint nicht zu funktionieren (es lädt nur die ganze Seite). Oder habe ich hier etwas verpasst? https://www.jdoodle.com/a/3Ev –

Verwandte Themen