Beiträge von Sempervivum

    Was die Requests betrifft, ist es einfach: Übergib die URL der XML-Datei der Funktion loadData:

    Die interessantere Frage ist, was Du mit den Tabellen machen willst: Soll alles in einer Tabelle zusammen gefasst werden oder für jede XML-Datei eine eigene Tabelle angelegt?

    BTW: Das load-Event brauchst Du in diesem Fall nicht, wenn Du die Aufrufe der Funktion loadData an das Ende des Body schreibst, vor dem schließenden </body>.

    PS: Du hast u. a. gefragt:

    Zitat

    Muss ich dann 5 Funktionen machen, oder gibt es auch eine einfachere Möglichkeit

    Nein, auch wenn Du 5 Request senden willst, brauchst Du nur eine Funktion. Du kannst dieser die URL der XML-Datei als Parameter übergeben. Bleibt die Frage, was Du mit der Response machst: Ist es immer die selbe Aktion, ist es kein Problem. Wenn nicht, könnte man es über eine Callback-Funktion lösen, aber ich fürchte, dann würde es zu kompliziert.

    Zur ersten Frage: Mit XMLHttpRequest ist das sehr einfach und wird hier beschrieben:

    https://developer.mozilla.org/en-US/docs/Web…est/responseXML

    Auf diese Weise bekommst Du ein document-Objekt, auf das Du die einschlägigen Funktionen wie document.getElementById, document.querySelector etc. anwenden kannst.

    Selber bevorzuge ich die fetch-API und wie es damit geht, wird hier sehr schön beantwortet:

    https://www.mediaevent.de/javascript/xml-mit-fetch.html

    Zur zweiten Frage: Wenn es unterschiedliche XML-Dateien sind, wirst Du wohl für jede einen Request an den Server schicken müssen.

    Eine Gruppe von Ingenieuren und eine Gruppe von Mathematikern fahren mit dem Zug zu einer Tagung. Jeder der Ingenieure hat seine eigene Fahrkarte, aber die ganze Gruppe von Mathematikern hat nur eine einzige Karte. Plötzlich ruft einer der Mathematiker "Der Schaffner kommt!", worauf sich alle Mathematiker in eine der Toiletten zwängen. Der Schaffner kommt, kontrolliert die Ingenieure, sieht, dass das WC besetzt ist und klopft an die Tür: "Die Fahrkarte bitte!". Einer der Mathematiker schiebt die Fahrkarte unter der Tür durch und der Schaffner zieht zufrieden wieder ab. Auf der Rückfahrt beschließen die Ingenieure, denselben Trick anzuwenden und sie kaufen nur eine Karte für die ganze Gruppe. Sie sind sehr verwundert, als sie merken, dass die Mathematiker diesmal überhaupt keine Fahrkarte haben ... Wieder ruft einer der Mathematiker "Der Schaffner kommt!". Sofort stürzen die Ingenieure auf das eine WC, die Mathematiker machen sich etwas gemächlicher auf den Weg zum anderen. Bevor der letzte Mathematiker die Toilette betritt, klopft er bei den Ingenieuren an: "Die Fahrkarte bitte!"

    Zitat von Lupus_III

    Muss ich denn nicht irgendwo die Daten des SMTP-Servers und das Passwort in den Code eingeben.

    Das Senden von Emails von PHP aus ist nicht so meine Baustelle, aber dies könnte Licht ins Dunkel bringen:

    https://stackoverflow.com/questions/3902…mail-and-issmtp

    Wenn ich das richtig verstehe, braucht man sich bei IsSmtp(false); nicht zu authentifizieren, bei true jedoch sehr wohl.

    Zitat

    Wenn das ohne gehe sollte, dann könnte ja jeder der meine e-Mailadresse kennt das nachbauen und mich mit Mails vollmüllen.

    Da haben die Betreiber einen Riegel vorgeschoben, indem die Zieladresse für die gesendete Mail auf der eigenen Domain liegen muss. In das Problem bin ich selber mal hinein gelaufen als ich jemand unterstützt habe, ein Kontaktformular zu bauen. Ich weiß allerdings nicht ob das bei allen Providern so ist und ob es zwingend ist.

    Ich hatte so etwas im Hinterkopf, dass es ein mathml.js gibt aber da täusche ich mich anscheinend. Wahrscheinlich war es statt dessen dieses:

    https://www.mathjax.org

    Zitat

    A JavaScript display engine for mathematics that works in all browsers.

    Zitat

    Das Bild der Formel ist innerhalb der Zeile etwas zu hoch.

    Bei mir ist es subjektiv eher zu tief, aber das täuscht wahrscheinlich, da die Formel tiefgestellte Zeichen enthält:

    html-seminar.de/woltlab/attachment/2655/

    Edit: Das lag daran, dass ich das in einer globalen Testdatei hatte, wo dieses CSS auf img lag:

    Code
    img {
        vertical-align: middle;
        border-style: none;
    }

    Deaktiviere ich das, ist die Grafik zu hoch, wie von dir beobachtet. Default für vertical-align ist ja baseline und bei einem Bild ist baseline die Unterkante :)

    Um dir über die Struktur des Endergebnisses einen Überblock zu verschaffen, lässt Du sie am bestem mal in der Console ausgeben:

    Code
    let bestellung = {boxen: boxen, gesamtPreis: gesamtPreis};
    console.log(bestellung);

    Um dann auf den Gesamtpreis und die Einzelheiten einer Box zuzugreifen, kannst Du dann diesen Code benutzen:

    Code
    // den Gesamtpreis ausgeben:
    console.log(bestellung.gesamtPreis);
    
    // den Namen der ersten Box ausgeben:
    console.log(bestellung.boxen[0].name);
    
    // den Preis der ersten Box ausgeben:
    console.log(bestellung.boxen[0].preis;

    Oder alternativ geht auch diese Syntax:

    Code
    console.log(bestellung['gesamtPreis']);

    Ich würde das etwas anders aufziehen:

    Mit diesem CSS kannst Du eine Karte in der Mitte platzieren:

    Code
    <div style="left:50%; top:50%; transform:translate(-50%, -50%); z-index:2;"><img src="PNG/P_02.png"></div>

    Ich habe es mit einer beliebigen Karte im HTML-Inspektor getestet. Mit left:50%; top:50%; wird die linke obere Ecke der Karte in die Mitte gesetzt. Damit das Zentrum der Karte in der Mitte ist, braucht man zusätzlich transform: translate(-50%, -50%); wobei sich die Prozentwerte auf die Karte selber beziehen. Mit transform: translate() kannst Du eine Karte um einen beliebigen Betrag aus der Mitte verschieben.

    Leider kann ich kein Skat :(

    Gruß - Ulrich

    Das verbliebene Problem besteht darin, dass Datatables eine vollständige Definition der Tabelle braucht, mit Kopf und Körper:

    Grafiken oder Fonts braucht man nicht einzubinden.

    Das liegt daran, dass Du body im CSS nicht richtig ansprichst. Im CSS aus Posting #33 steht:

    #body {

    im HTML jedoch:

    <body id="bodypreise">

    Ändere den Selektor im CSS zu body {

    und lösche die ID im HTML, dann wird es mit dem Hintergrundbild funktionieren.

    Ich habe mir das ganze CSS angesehen und mir scheint, Du verstehst das Gridlayout noch nicht richtig. Ich empfehle, kleine Schritte zu machen und mit einem Container zu beginnen. Überlege dir, wie Du die Elemente anordnen willst und versuche es dann umzusetzen. Und arbeite so lange daran, bis es für diesen einen Container funktioniert. Und wenn Du nicht zum Ziel kommst frage hier nach.

    Und nimm das Grid bei den anderen Container zunächst heraus.

    Zunächst das, was sofort ins Auge sticht: In einem HTML-Dokument kann es nur einen body geben, daher macht es keinen Sinn, diesem eine ID zu geben. Beschreibe, was Du mit den beiden bodys vor hast, dann kann man dir eine bessere Lösung vorschlagen. Ich vermute, dass Du für deine verschiedenen Seiten unterschiedliches CSS für body brauchst. Dann wäre es besser, für die seitenspezifischen Definitionen ein individuelles CSS anzulegen.

    Nein, nur mit CSS ist das leider nicht möglich. Wenn ich richtig informiert bin, war es mal angedacht, dass man sich auf den Inhalt eines Elementes beziehen kann, aber das wurde wieder verworfen. Es geht jedoch mit Javascript, indem Du eine Klasse hinzufügst und dann kannst Du mit CSS die Farbe definieren.