Beiträge von Sempervivum

    Zitat

    "Ich würde am liebsten die Tabelle noch responsive machen. Ich habe mir das so vorgestellt, dass über Media Queries alles ausgeblendet wird außer die Spalte "Thema" und dann bei einem Klick auf das jeweilige Thema die anderen Informationen wie bei einem Dropdownmenü nach unten aufklappen oder so. Wie könnte ich das am besten Umsetzen?"

    Das lässt sich relativ leicht mit der jQuery-Funktion slideDown() machen. Ich nehme an, Du meinst diese zweite Tabelle, in der nur der nächstliegende Termin angezeigt wird?


    "Und ich hätte noch die Frage zum PHP mach ich dann einfach in der Sidebar das Include ohne was anderes rein oder muss die Tabelle da bleiben oder wie ist das? Wie wird das angezeigt dann?"
    Nein, die Tabelle brauchst Du dort nicht. Das include wirkt genau so, als wenn Du den Inhalt der Datei in die Zwischenablage kopierst und an der Stelle, wo das include steht, einfügst. Probiere es einfach aus, dann wirst Du es in der Quelltext-Ansicht deines Browser sehen.

    Diese Frage wird häufig gestellt und die Antwort ist einfach: Lagere den Inhalt, der auf allen Seiten gleich ist, in eine Datei aus und binde diese mit PHP-Include ein:

    PHP
    <?php include('deine-include-datei.html'); ?>

    Dein Webspace muss PHP unterstützen und Du musst den Dateien, die auf diese Weise includieren, die Endung PHP geben. Füge den Code dort ein, wo der Inhalt auf der betr. Seite sichtbar sein soll.

    Zitat

    Und Dw gibt beim JavaScript die Fehlermeldung bei var s = data; ('s' is defined but never used) aus


    Das kannst Du ignorieren. Wie die Fehlermeldung sagt, ist es lediglich eine Warnung, weil die Variable s definiert aber nie benutzt wird. Ich habe das nur zu Testzwecken eingefügt, Du kannst den Callback auch weg lassen:


    $.post("sidebar-schreiben.php", params);

    Das ist relativ einfach, wenn man weiß, wie es geht.

    Zunächst das Javascript, am Ende des bisherigen Codes einfügen:


    var params = {
    sThema: rows[rowIdx].cells[0].innerHTML,
    sDatum: rows[rowIdx].cells[1].innerHTML,
    sUhrzeit: rows[rowIdx].cells[2].innerHTML,
    sOrt: rows[rowIdx].cells[3].innerHTML
    };
    $.post("sidebar-schreiben.php", params, function (data) {
    var s = data;
    });

    Dann das PHP, dieses musst Du in eine Datei sidebar-schreiben.php einfügen:


    <?php
    $thehtml = ' <div id="sidebar">
    <h4>Neue Termine:</h4>
    <table id="sidebartabelle">
    <tr>
    <td id="sThema">' . $_POST['sThema'] . '</td>
    </tr>
    <tr class="zweitezeile">
    <td id="sDatum">' . $_POST['sDatum'] . '</td>
    </tr>
    <tr>
    <td id="sUhrzeit">' . $_POST['sUhrzeit'] . '</td>
    </tr>
    <tr class="zweitezeile">
    <td id="sOrt">' . $_POST['sOrt'] . '</td>
    </tr>
    </table>
    </div>';
    file_put_contents("sidebar.html", $thehtml);
    echo $thehtml;
    ?>

    Dann wird eine Datei sidebar.html angelegt. Damit es funktioniert, muss PHP verfügbar sein. Wenn Du es lokal testen willst, musst Du einen Server mit PHP auf deinem Computer installieren. XAMPP ist ein verbreitetes Paket. Auf jeden Fall zu empfehlen, wenn Du PHP lernen willst.

    Die Datei sidebar.html kannst Du dann in deine anderen Seiten mit PHP-Include einbinden:
    <?php include('sidebar.html'); ?>


    Viel Erfolg!

    Das lässt sich leicht beheben:

    var terminauswahl = document.getElementById("terminauswahl");
    terminauswahl.innerHTML = "";
    for (var i = 0; i < rows.length; i++) {
    var currentTime = myParseDate(rows, i).getTime();
    if (currentTime > now || i == 0) {
    var timeStr = rows[ i ].cells[1].innerHTML + " " + rows[ i ].cells[2].innerHTML;
    var opt = document.createElement("option");
    opt.value = timeStr;
    opt.innerHTML = timeStr;
    terminauswahl.appendChild(opt);
    }
    }

    Zitat

    Und mir ist noch ein anderes Problem aufgefallen die Sidebar funktioniert nicht auf anderen Seiten...

    Das liegt daran, dass alles, was man mit Javascript macht, auf die aktuelle Seite beschränkt ist. Will man die Sidebar auf allen Seiten haben, muss man PHP einbeziehen: Mit Ajax die Daten an den Server übertragen; das PHP-Skript generiert das HTML und trägt es in eine Datei ein; diese kannst Du dann auf allen Seiten mit PHP-Include einbinden. Wenn Du das brauchst, kann ich es für dich programmieren.

    Zitat

    Dann muss ich die Options aber noch mit: ... füllen, oder?

    Das tut das Script schon, siehe am Ende des Javascript-Abschnitts.

    Zitat

    Aber dann wenn nur z.B. 2 Termine aktuell sind, sind auch 3 Felder leer...

    Das kann man leicht vermeiden, indem man die options nicht nur mit Inhalt füllt, sondern auch automatisch anlegt:


    var terminauswahl = document.getElementById("terminauswahl");
    terminauswahl.innerHTML = "";
    for (var i = 0; i < rows.length; i++) {
    var time = rows[ i ].cells[1].innerHTML + " " + rows[ i ].cells[2].innerHTML;
    var opt = document.createElement("option");
    opt.value = time;
    opt.innerHTML = time;
    terminauswahl.appendChild(opt);
    }

    Da Du den Zellen IDs gegeben hast, ist es noch einfacher:


    rows[rowIdx].style.backgroundColor = "lightblue";
    rows[rowIdx].style.border = "thin solid blue";
    document.getElementById("sThema").innerHTML = rows[rowIdx].cells[0].innerHTML;
    document.getElementById("sDatum").innerHTML = rows[rowIdx].cells[1].innerHTML;
    document.getElementById("sUhrzeit").innerHTML = rows[rowIdx].cells[2].innerHTML;
    document.getElementById("sOrt").innerHTML = rows[rowIdx].cells[3].innerHTML;