Hallo,
ich bin gearde dabei eine Webapplikation zu erstellen, welche einen Studienplan verwalten soll. Für einen Gast soll es nur möglich sein diesen Studienplan anzuzeigen, für einen Benutzer mit Admin-Rechten, soll das editieren, löschen und hinzufügen von neuen Fächern (subjects), Modulen (modules) und Kursen (courses) möglich sein.
Das Problem ist folgendes:
Wenn ein Admin eingeloggt ist, werden die Inhalte nicht nur angezeigt, sondern über eine xql-Querie in eine Textarea geladen. Hier soll der Benutzer nun Veränderungen vornehmen können und diese wiederum persistent in der Datenbank speichern können (gleiches gilt für löschen und Neuanlage).
Wie bekomme ich also die Formulardaten wieder in die Datenbank? Der Studienplan besteht aus mehreren XML-Dokumenten, wir arbeiten mit einer eXist-DB und die Abfragesprache ist XQL.
Bin für eure Ratschläge sehr dankbar.
LG Roman
Hier meine neuesten Codezeilen:
ich bin gearde dabei eine Webapplikation zu erstellen, welche einen Studienplan verwalten soll. Für einen Gast soll es nur möglich sein diesen Studienplan anzuzeigen, für einen Benutzer mit Admin-Rechten, soll das editieren, löschen und hinzufügen von neuen Fächern (subjects), Modulen (modules) und Kursen (courses) möglich sein.
Das Problem ist folgendes:
Wenn ein Admin eingeloggt ist, werden die Inhalte nicht nur angezeigt, sondern über eine xql-Querie in eine Textarea geladen. Hier soll der Benutzer nun Veränderungen vornehmen können und diese wiederum persistent in der Datenbank speichern können (gleiches gilt für löschen und Neuanlage).
Wie bekomme ich also die Formulardaten wieder in die Datenbank? Der Studienplan besteht aus mehreren XML-Dokumenten, wir arbeiten mit einer eXist-DB und die Abfragesprache ist XQL.
Bin für eure Ratschläge sehr dankbar.
LG Roman
Hier meine neuesten Codezeilen:
Code:
xquery version "1.0"; declare namespace transform="http://exist-db.org/xquery/transform"; declare namespace xdb="http://exist-db.org/xquery/xmldb"; declare option exist:serialize "method=xhtml media-type=text/html indent=yes"; declare variable $database-uri as xs:string { "xmldb:exist:///db" }; let $pass := session:get-attribute("pass") let $user := session:get-attribute("user") let $login := xdb:authenticate($database-uri, $user, $pass) return <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Fächer</title> <script type="text/javascript"> <!-- function updateDB() { if ($login) { var form = document.formular; var sub_f_workload = form.sub_f_workload.value; var sub_f_studiensemester = form.sub_f_studiensemester.value; } for $chSubject in concat("//db/winfbac/subjects/", request:get-parameter("link",""),".xml"){ update replace doc($chSubject)/subject/workload[. = $chSubject/subject/workload] with <workload>{sub_f_workload}</workload>, update replace doc($chSubject)/subject/suggested_semester[. = $chSubject/subject/suggested_semester] with <suggested_semester>{sub_f_studiensemester}</suggested_semester> } } --> </script> </head> <body> <h2>SUBJECT</h2> { let $chSubject := concat("//db/winfbac/subjects/", request:get-parameter("link",""),".xml") for $subject in doc($chSubject)/subject return <h2>{$subject/name}</h2> } <h3>Details</h3> { (: I) Eigener Aufbau wenn eingeloggt :) if ($login) then ( <form name="formular" method="get" onsubmit="return updateDB()"> <table border="1"> <tr bgcolor="#9acd32"> <th>Details</th> <th>Beschreibung</th> </tr> (: Ab hier beginnen Felder :) <tr><td>Workload: </td> <td> <textarea name="sub_f_workload"> {for $subject in doc(concat("//db/winfbac/subjects/", request:get-parameter("link",""),".xml"))/subject/workload return data($subject)}</textarea> </td></tr> <tr><td>Studiensemester: </td> <td> <textarea name="sub_f_studiensemester"> {for $subject in doc(concat("//db/winfbac/subjects/", request:get-parameter("link",""),".xml"))/subject/suggested_semester return data($subject)}</textarea> </td></tr> (: Submit und Reset Button :) <input type="submit" value="Update"> <input type="reset" value="Felder leeren"> ) (: II) Aufbau wenn nicht eingeloggt :) else ( <table border="1"> <tr bgcolor="#9acd32"> <th>Details</th> <th>Beschreibung</th> </tr> (: Ab hier beginnen Felder :) <tr><td>Workload: </td> <td> for $subject in doc(concat("//db/winfbac/subjects/", request:get-parameter("link",""),".xml"))/subject/workload return data($subject)</td></tr> <tr><td>Studiensemester: </td> <td> for $subject in doc(concat("//db/winfbac/subjects/", request:get-parameter("link",""),".xml"))/subject/suggested_semester return data($subject)</td></tr> </table> )} </body> </html>
Comment