Warum gibt mein PHP-Skript beim Hinzufügen dynamischer Zeilen in einem Buchhaltungsjournaleintrag den Fehler „Nicht überHTML

HTML-Programmierer
Guest
 Warum gibt mein PHP-Skript beim Hinzufügen dynamischer Zeilen in einem Buchhaltungsjournaleintrag den Fehler „Nicht über

Post by Guest »

Ich habe ein Buchhaltungssystem mit einem Bildschirm zum Aktualisieren von Journaleinträgen. Wenn ich einen Journaleintrag mit allen Daten aus der Datenbank abrufe, wird er korrekt angezeigt. Wenn ich jedoch versuche, den Journaleintrag durch Hinzufügen neuer dynamischer Zeilen (Kontoname, Debitor, Kreditor, Beschreibung und Kontoseriennummer) zu aktualisieren, werden die dynamisch hinzugefügten Felder während des Iterationsprozesses im Array nicht erkannt.
In den neuen dynamischen Zeilen wird nur das Feld „Kontoname“ erkannt. Wenn der Journaleintrag beispielsweise anfänglich zwei Zeilen enthält und ich eine dritte dynamische Zeile hinzufüge, wird nur der Kontoname aus der neuen Zeile erkannt, während die Werte „Debitor“, „Creditor“, „Beschreibung“ und „Kontoseriennummer“ in der neuen Zeile nicht erkannt werden innerhalb des iterativen Array-Prozesses korrekt gelesen.
Dieses Problem tritt speziell bei den neu hinzugefügten dynamischen Zeilen auf und wirkt sich nicht auf die Zeilen aus, die ursprünglich aus der Datenbank abgerufen wurden.
Wenn ich jedoch hinzufüge eine neue dynamische Zeile und senden Sie das Formular ab, Das Skript gibt einen Fehler aus:

Bei der Datenverarbeitung ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.

Dieses Problem scheint aufzutreten, weil die Arrays in der POST-Anfrage (Konto, Schuldner, Kreditor, Beschreibung und acc_serial) nicht übereinstimmende Zählungen aufweisen .
Was ich versucht habe:
Serverseitige PHP-Validierung
Ich habe einen Validierungsschritt hinzugefügt, um sicherzustellen, dass alle Arrays (Konto, Debtor, Creditor, Description und Acc_Serial) haben die gleiche Anzahl:

Code: Select all

$account = $_POST["account"];
$debtor = $_POST["debtor"];
$creditor = $_POST["creditor"];
$description = $_POST["description"];
$acc_serial = $_POST["acc_serial"];

if (
count($_POST['account']) !== count($_POST['debtor']) ||
count($_POST['account']) !== count($_POST['creditor']) ||
count($_POST['account']) !== count($_POST['description']) ||
count($_POST['account']) !== count($_POST['acc_serial'])
) {
echo 'toastr.error("Mismatched field count. Please verify the data.");';
exit;
}

Dies löst die Fehlermeldung aus, wenn die Zählungen nicht übereinstimmen.
Debuggen von POST-Daten
I var_dump($_POST) verwendet, um die übermittelten Daten zu überprüfen. Hier ist die Ausgabe für eine problematische Anfrage:

Code: Select all

  'account' =>
array (size=3)
0 => string 'd59f127d86' (length=10)
1 => string 'd5a05ca920' (length=10)
2 => string 'd59fb74cb8' (length=10)
'debtor' =>
array (size=2)
0 => string '2000' (length=4)
1 => string '0' (length=1)
'creditor' =>
array (size=2)
0 => string '0' (length=1)
1 => string '1000' (length=4)
'description' =>
array (size=2)
0 => string 'General Expense' (length=19)
1 => string 'General Expense' (length=19)
'acc_serial' =>
array (size=2)
0 => string 'd59f127d86' (length=10)
1 => string 'd59fb74cb8' (length=10)

Konto hat 3 Elemente, während Schuldner, Kreditor, Beschreibung und acc_serial nur 2 Elemente haben.
In diesem Fall enthält jedes der verbleibenden Felder – Schuldner, Gläubiger, Beschreibung, und Kontoseriennummer – sollte drei Eingaben haben, genau wie das Feld „Kontoname“, da ich dem Journaleintrag eine dritte dynamische Zeile hinzugefügt habe. Aus irgendeinem Grund werden jedoch die Eingabewerte der dynamischen Felder in der dritten neu hinzugefügten Zeile nicht gelesen, mit Ausnahme des Felds „Kontoname“. Der folgende Fehler erscheint wie in der Iterationsschleife gezeigt:

Code: Select all

An error occurred while processing data.  Please try again.
PHP-Schleife zur Verarbeitung von Zeilen

Code: Select all

foreach ($_POST['account'] as $index => $value) {
if (isset($_POST['account'][$index], $_POST['debtor'][$index], $_POST['creditor'][$index], $_POST['description'][$index], $_POST['acc_serial'][$index])) {
$account = $_POST['account'][$index];
$debtor = $_POST['debtor'][$index];
$creditor = $_POST['creditor'][$index];
$description = $_POST['description'][$index];
$acc_serial = $_POST['acc_serial'][$index];

if (empty($account) || empty($description) || empty($acc_serial) || $debtor === "" || $creditor === "") {
echo 'toastr.error("Please fill all fields in row ' . ($index + 1) . '");';
exit;
}

if (!is_numeric($debtor) || !is_numeric($creditor)) {
echo 'toastr.error("Debtor and Creditor must be numeric in row ' . ($index + 1) . '");';
exit;
}
} else {
echo 'toastr.error("An error occurred while processing data.  Please try again.");';
exit;
}
}
HTML-Struktur für dynamische Zeilen

Code: Select all





Account
Debit
Credit
Description



[i][/i]

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post