marfra
Goto Top

Kleines PHP SQL Projekt Terminanzeige Probleme

Hallo,

ich beschreibe kurz was ich machen will. Wir haben ein Display stehen an dem ich einen RasPi laufen habe auf dem DietPi laäuft und diesen benutze ich zum Darstellen verschiedenster Inhalte. Um flexibel zu bleiben und auch weil ich einfach Bock drauf habe mal wieder ein bisschen zu Programmieren, erstelle ich die Inhalte selbst und lasse ich das alles über einen Browser laufen auf dem ein Tab Rotator läuft. Das alles hat nichts mit dem eigentlichen "Problem" zutun, nur "Nice2Know".

Jetzt bin ich gerade dabei eine "Terminänderung" Seite zu erstellen. Diese muss so benutzerfreundlich wie möglich sein, da ich diese der Verwaltung zur Verfügung stellen will damit die die Termine selbst verwalten können. Das ganze sieht z.Zt. so aus.

Die Anzeige die auf dem Display zu sehen ist. Funktioniert super

termine01

Die Seite zum erstellen, löschen und ändern der Termine

termine_aenderung


Es funktioniert soweit auch gut, die DB wird ausgelesen und dargestellt. Wenn auf das "Plus" gedrückt wird, wird ein neuer Eintrag in der Datenbank erstellt. Mit vordefinierten Einträgen.


Jetzt komme ich aber nicht mehr weiter und auch Google kann mir nicht helfen da ich die Frage nicht richtig formulieren kann, denke ich.


1. Ich möchte das wenn auf ändern geklickt wird dann auch die Änderungen in dieser Zeile der DB durchgeführt werden. Wie kann ich denn hinterlegen das die Eingaben geändert werden. Wie kann ich die Zeile identifizieren und und die Werte die ja als String eingetragen sind wieder in das DB Format umwandeln?

2. Wie kann ich das mit dem Eintrag löschen am schlausten umsetzen? Ich denke man kann hier viel über die ID machen. Ich habe nur keine Ahnung wie ich die "hinterlege".

Ich habe hier auf mal den Code angehangen damit ihr überhaupt seht was passiert. Code sagt mehr als 1000 Worte. face-wink

Ich hoffe ihr habt hier ein paar Anreize für mich.

<!DOCTYPE html>
<html lang="de">  
    <head>
        <meta charset="utf-8"/>  
        <meta http-equiv="X-UA-Compatible" content="IE=edge"/>  
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>  
        <title>Änderungen-Termine</title>
        <style>
            table, th, td{
                padding: 10px;
                border: 1px solid;
                border-color: #593535;
                border-collapse: collapse;
            }
        </style>
    </head>
    <body>

    <div class="container">  
            <h1 style="font-family: dancing script; font-size: 6rem; color: #593535; text-align:center;">Terminänderungen</h1>  
            
        <!--ABFRAGE DATENBANK-->                
        <?php

        $connect = mysqli_connect("localhost", "test", "test","test");  
        $query = "SELECT *, DATE_FORMAT(datum, '%d.%c.%Y') AS datum,TIME_FORMAT(zeit, '%H:%i Uhr') AS zeit FROM termine";  

        $result = mysqli_query($connect, $query);
        

        if(mysqli_num_rows($result) > 0)
        {
          $table = '  
           <table style="margin-left: auto; margin-right: auto;">  
              <tr>
                <th scope="col" style="font-size: 2.5rem; font-family: dancing script; color: #593535;"> ID </th>  
                <th scope="col" style="font-size: 2.5rem; font-family: dancing script; color: #593535;"> Bezeichnung </th>  
                <th scope="col" style="font-size: 2.5rem; font-family: dancing script; color: #593535;"> Datum </th>  
                <th scope="col" style="font-size: 2.5rem; font-family: dancing script; color: #593535;"> Uhrzeit </th>  
                <th scope="col" style="font-size: 1.5rem; color: orange;"> Ändern </th>  
                <th scope="col" style="font-size: 1.5rem; color: red;"> Löschen </th>  
              </tr>
          ';  

          while($row = mysqli_fetch_array($result))
          {           
            //Variable zum Speichern der ID
            $id = $row["id"];  

            $table .='  
              <tr style="text-align:center; font-size: 2.0rem; font-family: dancing script;">  
                <td>'.$row["id"].'</td>  
                <td><input type="text" name="row_bezeichnung" value="'.$row["bezeichnung"].'"></td>  
                <td><input type="text" name="row_datum" value="'.$row["datum"].'"></td>  
                <td><input type="test" name="row_zeit" value="'.$row["zeit"].'"></td>  

                <td><button name="buttonAendern" type="submit"><img src="Images\change.png" width="20px"></button></td>  
                <td><button name="buttonLoeschen" type="submit"><img src="Images\erase.png" width="20px"></button></td>  
              </tr>
            ';  
          }
        $table .= '</table>';  
        
        echo $table;

        }
    ?>                    
        </table>

    <form method="post">  
        <div style="text-align: center; padding-top: 5%;">  
            <button name="buttonPlus" type="submit"><img src="Images\plus.png" width="50px"></button>  
        </div>
    </form>

    <!--neue Zeile in Datenbank anlegen-->
    <?php
        if(isset($_POST['buttonPlus'])){  
            
            $connect = mysqli_connect("localhost", "test", "test", "test");  
            $query = "INSERT INTO termine (bezeichnung, datum, zeit) VALUES ('neu', CURRENT_DATE, CURRENT_TIME)";  
            mysqli_query($connect, $query);

        }
    ?>

    </body>
</html>


Ich bedanke mich schon einmal und wünsche euch einen tollen Tag.


Grüße
MarFra

Content-ID: 5452111959

Url: https://administrator.de/forum/kleines-php-sql-projekt-terminanzeige-probleme-5452111959.html

Ausgedruckt am: 19.12.2024 um 16:12 Uhr

em-pie
em-pie 18.01.2023 um 12:39:31 Uhr
Goto Top
Moin,

ohne selbst richtiger Entwickler zu sein oder es jemals "von null auf" entwickelt zu haben, musst du im Grunde nur folgendes machen:

  • Schreibe einen Webservice, der eine ID als Parameter entgegennimmt und mit der ID ein Update auf die DB durchführt
  • In deiner WebGUI ermittelst du via JavaScript den Datensatz (dessen ID), den es zu aktualisieren gilt, rufst den Webservice auf, wartest die Rückmeldung ab und aktualisierst dann die Elemente/ die Seite

Weiterer Vorteil hier: sämtliche Zugangsdaten bleiben aus dem PHP-Script raus, welches an den User/ Client ausgeliefert wird. Hier findest du dazu etwas mehr: https://stackoverflow.com/questions/32513480/where-to-safely-store-datab ...
MarFra
MarFra 18.01.2023 um 12:49:36 Uhr
Goto Top
Zitat von @em-pie:

Moin,

ohne selbst richtiger Entwickler zu sein oder es jemals "von null auf" entwickelt zu haben, musst du im Grunde nur folgendes machen:

  • Schreibe einen Webservice, der eine ID als Parameter entgegennimmt und mit der ID ein Update auf die DB durchführt
  • In deiner WebGUI ermittelst du via JavaScript den Datensatz (dessen ID), den es zu aktualisieren gilt, rufst den Webservice auf, wartest die Rückmeldung ab und aktualisierst dann die Elemente/ die Seite

Weiterer Vorteil hier: sämtliche Zugangsdaten bleiben aus dem PHP-Script raus, welches an den User/ Client ausgeliefert wird. Hier findest du dazu etwas mehr: https://stackoverflow.com/questions/32513480/where-to-safely-store-datab ...

Moin und danke für deinen Input.

Leider geht dass mir schon zu weit. Mir geht es auch darum mich mit MySQL vertraut zu machen und daher würde ich dass gern (erst einmal) so umsetzen wie ich mir dass denke. Wenn ich mich jetzt mit dem Webservice beschäftige fange ich wieder von vorne an. face-smile

Ich möchte dass gern alles über SQL Statements und PHP umsetzen. Javascript lasse ich bewusst außen vor. .-)

Trotzdem vielen Dank nochmal.
em-pie
Lösung em-pie 18.01.2023 aktualisiert um 13:22:51 Uhr
Goto Top
Grundsätzlich:
Du musst ein Update auf die Datenbank machen und brauchst dazu die ID des Datensatzes:
UPDATE myTable Set Termin = '18.01.2023 12:58:00' where ID = 3  
ansonsten änderst du ALLE Termine.

Wenn du dem Button eine ID übergibst, wird es klappen:
$table .='  
  ...
  <td><button name="buttonAendern" type="submit" value="' . $row["id"]. '"><img src="Images\change.png" width="20px"></button></td>  
  ...
';  

du müsstest ggf. nur ein anderes php-script aufrufen, dort die ID mit GET... auslesen und dann dein Update-Statement ausführen.

Edit: https://www.w3schools.com/tags/att_button_value.asp


Aber nochmals der Hinweis:
sieh zu, das keinerlei DB-Zugangsdaten im WebRoot liegen...
MarFra
MarFra 18.01.2023 um 13:28:02 Uhr
Goto Top
Zitat von @em-pie:

Grundsätzlich:
Du musst ein Update auf die Datenbank machen und brauchst dazu die ID des Datensatzes:
UPDATE myTable Set Termin = '18.01.2023 12:58:00' where ID = 3  
ansonsten änderst du ALLE Termine.

Wenn du dem Button eine ID übergibst, wird es klappen:
$table .='  
  ...
  <td><button name="buttonAendern" type="submit" value="' . $row["id"]. '"><img src="Images\change.png" width="20px"></button></td>  
  ...
';  

du müsstest ggf. nur ein anderes php-script aufrufen, dort die ID mit GET... auslesen und dann dein Update-Statement ausführen.

Edit: https://www.w3schools.com/tags/att_button_value.asp


Aber nochmals der Hinweis:
sieh zu, das keinerlei DB-Zugangsdaten im WebRoot liegen...

Super, ich danke dir. Das mit den Zugangsdaten mache ich wenn die "Bude" läuft. Das ist gerade nur eine Testkonstruktion. face-smile
evgnbz
evgnbz 21.02.2023 um 12:49:46 Uhr
Goto Top
Zitat von @em-pie:

Grundsätzlich:
Du musst ein Update auf die Datenbank machen und brauchst dazu die ID des Datensatzes:
UPDATE myTable Set Termin = '18.01.2023 12:58:00' where ID = 3  
ansonsten änderst du ALLE Termine.

Wenn du dem Button eine ID übergibst, wird es klappen:
$table .='  
  ...
  <td><button name="buttonAendern" type="submit" value="' . $row["id"]. '"><img src="Images\change.png" width="20px"></button></td>  
  ...
';  

du müsstest ggf. nur ein anderes php-script aufrufen, dort die ID mit GET... auslesen und dann dein Update-Statement ausführen.

Edit: https://www.w3schools.com/tags/att_button_value.asp


Aber nochmals der Hinweis:
sieh zu, das keinerlei DB-Zugangsdaten im WebRoot liegen...

https://www.allphptricks.com/insert-view-edit-and-delete-record-from-dat ... eine gute anleitung wie man die datensätze einträgt, ändert und löscht