Felix Riesterer: modulare Liste zum erweitern

Beitrag lesen

Lieber Loïc,

Loïc ist ein männlicher Name.

vielen Dank! Wieder etwas gelernt.

Wo ich genau nicht weiterkomme? Also bei der unendlichen Liste:

Aha. Meine Vorgehensweise bei soetwas ist, dass ich in der letzten Zeile der Liste ein Element mit Formularfeldern einbaue, die alle einen neuen Datensatz erzeugen können. Mit dem Versenden des Formulars wird dieser Datensatz dann tatsächlich in der DB angelegt, die Liste mit dem neuen Datensatz als "offizieller" Listenpunkt ausgegeben und danach wieder das Formular mit den Eingabemöglichkeiten für einen (weiteren) neuen Datensatz.

Das ist die serverseitige Komponente. Das Minimum.

<script language="javascript" type="text/javascript">
var obj = document.getElementById('produkte');
obj.onclick = function(e) {
	if(!e) e = window.event;
	var el = e.target || e.srcElement;
	var neu = document.createElement('li');
	neu.innerHTML = 'dummy';
	el.parentNode.insertBefore(neu, el);
}
</script>`

Dein Thread hatte kein JavaScript-Tag, sondern nur Datenbank, HTML und PHP. Dass Dein Problem eigentlich bei JavaScript liegt, war nicht ersichtlich. OK. Also eine JavaScript-Aufgabe. Nach meiner Vorgehensweise lediglich ein Aufsatz auf das zuvor beschriebene rein serverseitige Vorgehen.

JavaScript kann auch Anfragen an den Server senden. Dazu benutzt man in der Regel asynchrone Requests, die gemeinhin auch als Ajax bezeichnet werden. Mithilfe eines solchen Requests kannst Du nun das Absenden des Formulars nachbilden, indem Du das Absenden des Formulars mittels JavaScript abfängst, um dann die Serverantwort daraufhin zu parsen, wie die Liste momentan auszusehen hätte, um sie dann im Dokument anzupassen.

Entweder Du ersetzt die vorhandenen Listenpunkte komplett mit dem Inhalt der Serverantwort, oder Du prüfst lediglich, ob der neue Punkt korrekt übernommen wurde, um nur ihn in der Liste vor dem Formular einzufügen.

Was Du nicht angemerkt hast, ist die Frage, ob vorhandene Listenpunkte auch wieder entfernt werden können sollen. In einem solchen Fall würde ich an das Ende eines jeden Listenpunktes einen passenden Lösch-Button hinzufügen, dessen Name auf der Serverseite eindeutig beschreibt, welcher Datensatz zu löschen ist. Auch das kann man mit JavaScript abfangen und via Ajax auswerten.

Liebe Grüße,

Felix Riesterer.