Hallo Freunde der .com-Blase,
folgendes Problem; ich baue mir eine feste Tabellenstruktur auf (mit IDs versehen), und fülle diese Struktur via Ajax bei einer bestimmten Anfrage mit Daten aus einer XML-Datei, wobei die Daten anhand der IDs zugeordnet werden, soweit kein Problem.
Nun kann eine Anfrage aber verschieden viele Ausgabedaten zurückgeben, also passt das mit der festen Tabellenstruktur nicht mehr.
Ich habe mir überlegt, dass ich bei Erzeugung der Anfrage durch Selectboxen zunächst die Anzahl der Knoten in der XML-Struktur zähle und daraufhin eine Schleife starte, die mir die Tabellenstruktur mit den benötigten Zeilen erstellt. Doch wie ist das realisierbar?
Ich poste mal den Code, den ich habe:
Hier wird die feste Tabellstruktur erzeugt:
Alles anzeigen
Hier wird die Anfrage an die Funktion gesendet, die die XML Datei erzeugt
Hier wird die XML-Datei erzeugt, entsprechend werden die Daten in die feste Tabellenstruktur via Ajax zurückgeschrieben:
Alles anzeigen
Wie erzeuge ich die Tabellenstruktur mit den IDs dynamisch entsprechend des Ergebnis-Counts der Anfrage am Elegantesten, was meint Ihr??
Danke vorab!!
folgendes Problem; ich baue mir eine feste Tabellenstruktur auf (mit IDs versehen), und fülle diese Struktur via Ajax bei einer bestimmten Anfrage mit Daten aus einer XML-Datei, wobei die Daten anhand der IDs zugeordnet werden, soweit kein Problem.
Nun kann eine Anfrage aber verschieden viele Ausgabedaten zurückgeben, also passt das mit der festen Tabellenstruktur nicht mehr.
Ich habe mir überlegt, dass ich bei Erzeugung der Anfrage durch Selectboxen zunächst die Anzahl der Knoten in der XML-Struktur zähle und daraufhin eine Schleife starte, die mir die Tabellenstruktur mit den benötigten Zeilen erstellt. Doch wie ist das realisierbar?
Ich poste mal den Code, den ich habe:
Hier wird die feste Tabellstruktur erzeugt:
Quellcode
- // Feste Tabellenstruktur wird erzeugt
- for($i = 1; $i <= 13; $i++) {
- echo "<tr id=\"D".$i."\">\n";
- echo " <th width=\"20\">\n";
- echo " <div class=\"nr\">".$i."</div>\n";
- echo " </th>\n";
- echo " <td class=\"name\">\n";
- echo " <div class=\"name\">--</div>\n";
- echo " </td>\n";
- echo " <td class=\"type\">\n";
- echo " <div class=\"type\">--</div>\n";
- echo " </td>\n";
- echo "</tr>";
- }
Hier wird die Anfrage an die Funktion gesendet, die die XML Datei erzeugt
Hier wird die XML-Datei erzeugt, entsprechend werden die Daten in die feste Tabellenstruktur via Ajax zurückgeschrieben:
Quellcode
- var req;
- var response;
- function RequestXML(overview, name) {
- if (ajax) {
- var url = 'creatorExporter.php?overview='+overview+'&name='+name;
- if (window.XMLHttpRequest) {
- req = new XMLHttpRequest();
- req.onreadystatechange = processReqChange;
- req.open("GET", url, true);
- req.send(null);
- } else if (window.ActiveXObject) {
- req = new ActiveXObject("Microsoft.XMLHTTP");
- if (req) {
- req.onreadystatechange = processReqChange;
- req.open("GET", url, true);
- req.send();
- }
- }
- } else {
- // do something
- }
- }
- function processReqChange() {
- if (req.readyState == 4) {
- if (req.status == 200) {
- response = req.responseXML.documentElement;
- var campaignNames = response.getElementsByTagName('campaign_name');
- for (var j=0; j<campaignNames.length; j++) {
- for (var i=0; i<2;i++) {
- var id = response.getElementsByTagName('campaign_type').item(j).parentNode.getAttribute('id');
- if (document.getElementById(id).getElementsByTagName('td').item(i).className == 'name') {
- document.getElementById(id).getElementsByTagName('td').item(i).innerHTML = GetDepthXmlValue('campaign_name', j, ' ');
- }
- if (document.getElementById(id).getElementsByTagName('td').item(i).className == 'type') {
- document.getElementById(id).getElementsByTagName('td').item(i).innerHTML = GetDepthXmlValue('campaign_type', j, ' ');
- }
- }
- }
- }
- }
- }
- function GetDepthXmlValue(tagName, i, failValue) {
- if (response.getElementsByTagName(tagName)) {
- if (response.getElementsByTagName(tagName).item(i)) {
- if (response.getElementsByTagName(tagName).item(i).firstChild) {
- return response.getElementsByTagName(tagName).item(i).firstChild.data;
- } else {
- return failValue;
- }
- } else {
- return failValue;
- }
- } else {
- return failValue;
- }
- }
- }
Wie erzeuge ich die Tabellenstruktur mit den IDs dynamisch entsprechend des Ergebnis-Counts der Anfrage am Elegantesten, was meint Ihr??
Danke vorab!!