Lieber Tobias,
gut, wenn du für das Mail-Feld auf not Null umgestellt hattest, dann ergibt sich jetzt sogar ein ziemlich konsistentes Bild.
Ich habe in Visforms eingebaut, dass, wenn das Formular verschickt wird, dort auch ein Parameter "Postid" mitgeschickt wird, der die Id des Formulars enthält. An der Stelle, an der ich den Wert setze, der später in der Datenbank gespeichert wird, prüfe ich, dass dieser Paramaeter Postid gesetzt ist und den richtigen Wert hat.
Offensichtlich ist dieser Parameter Postid bei den Übertragungen, die leere Datensätze erzeugen aber entweder leer oder hat den falschen Wert. Wie das zustande kommt ist mir nicht ganz klar, aber es ist die Ursache des Problems.
In dem Codeteil, der letztlich insgesamt steuert, was passiert, wenn das Formular abgeschickt wurde, frage ich aber nicht noch einmal ab, ob diese Postid gesetzt ist und den richtigen Wert hat. Deshalb läuft das alles durch und es wird ein leerer Datensatz gespeichert.
D.h. wir bauen jetzt diese Abfrage auch im controller ein und geben ein Fehlermeldung aus, wenn die Postid nicht passt und zeigen das Formular wieder an.
Du musst die Datei components/com_visforms/controllers/visforms.php öffnen.
Zeile 82 - 86 haben folgenden Code
Code:
$fields = $model->getValidatedFields();
if (!(isset($visform->errors)))
{
$visform->errors = array();
}
Direkt dahinter fügst du folgenden neuen Code ein
Code:
if ((!(count($_POST) > 0)) || (!isset($_POST['postid'])) || ($_POST['postid'] != $visform->id))
{
array_push($visform->errors, 'Hier kommt deine Fehlermeldung rein.');
//Show form again, keep values already typed in
if ($url != "" )
{
$this->setRedirect(JRoute::_($url));
return false;
}
else
{
$this->display();
return false;
}
}
Ersetze
Hier kommt deine Fehlermeldung rein.
Mit einer passenden Fehlermeldung deiner Wahl. Achte darauf, dass du nur den Text austauschst und die Anführungszeichen stehen bleiben. Evtl. kannst du die Benutzer ja bitten, wenn der Fehler bestehen bleibt, mit dir Kontakt aufzunehmen....
Bitte mach vor der Änderung ein Sicherungskopie der Datei und teste nachdem du die Änderungen gamcht hast, dass das Formular noch normal funktioniert!
Die alten Änderungen ($dbfieldvalue = $field->dataSource) an der components/com_visforms/models/visforms.php kannst du dann wieder rückgängig machen ($dbfieldvalue = "") , das war ja nur, um den Fehler genauer eingrenzen zu können.
Zuletzt könntest du noch probieren, ob du mit dem einen Bild, das 2 x einen leeren Datensatz erzeugt hat, den Fehler reproduzieren kannst. Aber eigentlich glaube ich, dass da noch mehr als nur das Bild eine Rolle spielt und es irgendwie eine Kombination aus Device und Benutzerverhalten und evtl. auch Bild ist.
Liebe Grüße,
Aicha