• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Feedback gewünscht Datum in HTML-Tabelle ändern und in mariaDB speichern?

anbad

Neues Mitglied
Hallo,
ich will mir eine Art Vokabeltrainer bauen. Soweit habe ich es geschafft, dass mir meine Homepage die Vokabel/Regeln aus mariaDB anzeigt, welche <= heutiges Datum fällig sind.
Jetzt müsste ich natürlich auch das Datum anpassen können, aka wann erneut gezeigt werden soll. Ich würde nicht einmal sagen, dass eine Datumsauswahl angezeigt werden soll. Sondern vielmehr eine Auswahl zwischen "Zeige: heute, morgen, in drei Tagen, in einer Woche, in einem Monat, in drei Monaten, nie".

Wie macht man sowas? HTML in Verbindung PHP?

Wo sollte ich anfangen zu denken, zu suchen und zu lernen, wie man sowas macht?

Ich brauche mal Ansätze, bevor ich mich von vorneweg verrenne.

Ich kann nur ein bißl html und php. Braucht man java dazu?

Anbei Beispiel meiner Abfragetabelle (noch nicht wirklich formatiert).

Viele Grüße
 

Anhänge

  • beispiel.png
    beispiel.png
    31,5 KB · Aufrufe: 5

m.scatello

Senior HTML'ler
HTML in Verbindung PHP?
Ja
Wo sollte ich anfangen zu denken, zu suchen und zu lernen, wie man sowas macht?
Du solltest die Grundlagen in Sachen PHP und MySQL lernen
Ich brauche mal Ansätze, bevor ich mich von vorneweg verrenne.
Ohne zu wissen, wie deine Datenbanktabellen aussehen und wie die Auswahl des Datums getätigt werden soll, kann man dazu nichts sagen.
Ich kann nur ein bißl html und php. Braucht man java dazu?
Wie schon erwähnt, Grundlagen lernen. Und Java brauchst du sowieso nicht, du meinst JavaScript. Aber das brauchst du auch nicht unbedingt.
 

anbad

Neues Mitglied
Meine Probleme:
1) Na ja, ich denke, in die Tabelle beim Datum müsste jeweils ein Button, der dann ein Auswahlmenü öffnet: Heute, Morgen, nächste Woche. Die Tabelle kann aber je nach Tag verschieden viele Zeilen haben. Also muss die Buttonerstellung, wie auch ja bereits die Zeilen der Tabelle, dynamisch erfolgen.
Ich habe schon mal einfache Buttons genutzt, aber noch nicht in eine Tabelle eingefügt.
2) Ich kann mir im Moment nicht vorstellen, wie dann der php-Code im Zusammenspiel mit den Buttons in den Zeilen mit dem gerade gedrückten Zeileantrag verknüpft wird.
Schreiben in sql-Datenbank ist dann kein Problem, wenn die Variablen Werte erhalten haben.

zu 2) Und damit ich jetzt nicht ewig mit einer Buttonlösung arbeite, die für mein Vorhaben ungeeignet ist, dachte ich, ich frage gleich mal, um den richtigen Start zu schaffen: Wie löst man 1) damit 2) dann später 1) nutzen kann?

Das ist mein jetziger .php-Code, den ich per include auf meine Webseite einbinde. Ich denke, hier müsste der Button wohl dazu. Vlt. müsste der jeweilige Button jeweils den key aus der sql-Datenbank zugewiesen werden, Damit später php weiß, Welcher sql-Eintrag gemeint ist, d.h. geändert werden soll?:

Code:
          <table>
              <?php
              echo "<div class='ueberschrift'> <p1>" . $betreff . "</p1></div><br>";
                
                $con = mysqli_connect("localhost","website_mk","Z8yC{b&w)/u4pk","db_website");
                $con -> set_charset("utf8");
                
                //echo"Test2";
                
                if (mysqli_connect_errno()) {
                  echo "Failed to connect to MySQL: " . mysqli_connect_error();
                  exit();
                }

                $sql =  "SELECT * FROM `table_grammatik` WHERE grammatik_faelligkeit <= CURRENT_DATE";

                $result = mysqli_query($con, $sql);
                //Teste ob Abfrage klappte: Achtung, ist schwarze Farbe
                //print_r($result);
                echo "<tr><th>Regel</th><th>Grad</th><th>Fällig</th></tr>";
                while($row = $result-> fetch_assoc()) {
                      if ($row["grammatik_beispiel"] != "") {$Beispieltext = "Beispiel: <br>" . nl2br($row["grammatik_beispiel"]);}
                      echo "<tr><td>" . "[Nr. " . $row["grammatik_key"] . "] " . nl2br($row["grammatik_regel"]) . "<br> <br>" . $Beispieltext;
                      echo "<td>" . $row["grammatik_schwierigkeit"] . "</td>";
                      echo "<td>" . $row["grammatik_faelligkeit"] . "</td></tr>";
                      $Beispieltext = "";
                }
                // Leeren Speicher
                $uebersicht = "";
                mysqli_free_result($result);

                mysqli_close($con);
              ?>
          </table>
 

Sempervivum

Senior HTML'ler
Das ist schon Mal sehr aufschlussreich. Was ich noch nicht verstehe: In dem vorhandenen Code zeigst Du alle Einträge an, wo die Fälligkeit kleiner oder gleich der aktuellen Zeit ist. Was soll jetzt passieren, wenn man z. B. "in drei Tagen" ausgewählt hat? Die Einträge genau für den betr. Tag? Oder wieder alle, wo die Fälligkeit kleiner oder gleich dem betr. Tag ist? Oder möchtest Du die Fälligkeit in der DB auf den betr. Tag ändern?

ein Button, der dann ein Auswahlmenü öffnet: Heute, Morgen, nächste Woche.
Beides ließe sich mit einem Select-Element als Dropdown lösen:
 

anbad

Neues Mitglied
Was soll jetzt passieren, wenn man z. B. "in drei Tagen" ausgewählt hat?
Es sollen immer die Einträge '<= aktuelles Datum' angezeigt werden.

Man ist also gezwungen jeden Tage über z.B. das Dropdown ein neues Datum für jeden gerade gezeigten Eintrag zu vergeben. Also beispielsweise: "zeige in drei Tagen erneut" oder "zeige in 6 Monaten erneute" oder "zeige niemals mehr".
 

Sempervivum

Senior HTML'ler
Denke jetzt verstehe ich es: Damit ein Eintrag z. B. in drei Tagen erneut gezeigt wird, muss man die Fälligkeit auf "heute plus drei Tage" ändern, richtig?

Vlt. müsste der jeweilige Button jeweils den key aus der sql-Datenbank zugewiesen werden, Damit später php weiß, Welcher sql-Eintrag gemeint ist, d.h. geändert werden soll?
Denke, das ist richtig. Den Key kannst Du z. B. als data-Attribut im Select ablegen.
Und dann die Zeitdifferenz in den value-Attributen der Optionen.
 

anbad

Neues Mitglied
Den Key kannst Du z. B. als data-Attribut im Select ablegen.
Hallo, habe jetzt gerade nochmals rumgespielt.

Habe mir überlegt, würde die Eingabe mit mehreren Button machen. Ist im Handling schneller, und da in der Tabellenzelle ohne viel Platz, finde ich es so ganz gut.

Aber wie bekomme ich an "/action_trainer.php" den Key des jeweiligen sql-Eintrags mitübertragen?

Ich glaube, die Buttons funktionieren so. Ich habe noch keine "/action_trainer.php". Nächster Schritt erst.

Das passt natürlich noch nicht von der Formatierung. Wird eine andere Herausforderung für mich..

Schönen Abend!!

PHP:
<table>
  <?php
    echo "<div class='ueberschrift'> <p1>" . $betreff . "</p1></div><br>";
   
    $con = mysqli_connect("localhost","website_mk","Z8yC{b&w)/u4pk","db_website");
    $con -> set_charset("utf8");
   
    if (mysqli_connect_errno()) {
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
      exit();
    }

    $sql =  "SELECT * FROM `table_grammatik` WHERE grammatik_faelligkeit <= CURRENT_DATE";

    $result = mysqli_query($con, $sql);

    echo "<tr><th>Regel</th><th>Grad</th><th>Fällig</th></tr>";
    while($row = $result-> fetch_assoc()) {
          if ($row["grammatik_beispiel"] != "") {$Beispieltext = "Beispiel: <br>" . nl2br($row["grammatik_beispiel"]);}
          echo "<tr><td>" . "[Nr. " . $row["grammatik_key"] . "] " . nl2br($row["grammatik_regel"]) . "<br> <br>" . $Beispieltext;
          echo "<td>" . $row["grammatik_schwierigkeit"] . "</td>";
          echo "<td>" . $row["grammatik_faelligkeit"] . "<br> <br>";
          echo "erneuter Aufruf: <br>";
          echo "<form action='/action_trainer.php' method='post'>";
            echo "<button type='submit' value='2' name='submit'>2 Tage</button>";
            echo "<br>";
            echo "<button type='submit' value='7' name='submit'>1 Woche</button>";
            echo "<br>";
            echo "<button type='submit' value='30' name='submit'>1 Monat</button>";
            echo "<br>";
            echo "<button type='submit' value='180' name='submit'>6 Monate</button>";
            echo "<br>";
            echo "<button type='submit' value='0' name='submit'>nie</button>";
            echo "<br>";
          echo "</form>";
          echo "</td></tr>";

          $Beispieltext = "";
    }

    mysqli_free_result($result);

    mysqli_close($con);
  ?>
</table>
 

Anhänge

  • beispiel.png
    beispiel.png
    80,1 KB · Aufrufe: 3

Sempervivum

Senior HTML'ler
Wenn Du die Sache so aufziehst, kannst Du ein verborgenes Eingabefeld für den Key verwenden, das wird dann mit übertragen wenn Du das Formular abschickst.
Und ein Button mit type="submit" macht nur einmal pro Formular Sinn.
Und für die Buttons würde ich Radiobuttons verwenden mit einem passenden Namen.
Edit: Ich muss mich korrigieren: Dein Verfahren mit den mehrfachen Submit-Buttons ist zwar unkonventionell, funktioniert jedoch :smile:
 
Zuletzt bearbeitet:

anbad

Neues Mitglied
Dein Verfahren mit dmehrfachen Submit-Buttons ist zwar unkonventionell, funktioniert jedoch :smile:
Grund für die Buttons ist, dass ich die Homepage u.a. als Startseite für den Browser meines TV nutze. Und aufgrund dessen muss das Betätigen der Auswahl möglich einfach sein, dh. durch möglichst einen Klick erledigt werden. Und nicht erst Klick für Auswahl und dann zweiter Klick Bestätigen.
 

m.scatello

Senior HTML'ler
Die Values würde ich allerdings anders machen
PHP:
echo "<button type='submit' value='2 DAY' name='submit'>2 Tage</button><br>
      <button type='submit' value='1 WEEK' name='submit'>1 Woche</button><br>
      <button type='submit' value='1 MONTH' name='submit'>1 Monat</button><br>
      <button type='submit' value='6 MONTH' name='submit'>6 Monate</button><br>
      <button type='submit' value='0' name='submit'>nie</button>";
Im Script kannst du dann dies machen:

PHP:
if ($_POST['submit'] != '0')
   $sql = "update `tabelle` set `datum`=DATE_ADD(`datum`, INTERVAL $_POST['submit']) where id=$id";
 

anbad

Neues Mitglied
D. h. sql kennt z.B. den Ausdruck '2 DAY' und kann diese direkt verarbeiten also addieren, korrekt? Leider komme ich heute nicht zum testen..
 
Werbung:

Neueste Beiträge

Oben