Ankündigung

Einklappen
Keine Ankündigung bisher.

SQL Befehl per Button innerhalb Tabelle

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • SQL Befehl per Button innerhalb Tabelle

    Hallo zusammen,
    ich habe mich nun auch mal an mein erstes php Projekt gewagt.
    Nun stagniert mein Fortschritt seit ein paar Tagen und ich glaube, dass ich ein bisschen Hilfe benötige.

    Ich habe mir eine SQL Datenbank für Toner-Inventar erstellt mit folgenden Spalten: Modell (Primarykey), Schwarzweiß, Farbe, Cyan, Magenta, Yellow, Black, Wartungskit, Transportband, Heizung.
    Farbe und Schwarzweiß kann momentan 0 oder 1 enthalten, ich muss diese später noch auf typ boolean ändern. Dies ist nur dazu da, um zu hinterlegen, ob der Drucker ein Schwarzweiß- oder Farbdrucker ist.
    Ziel ist eine Dropdown-Liste am Anfang der Seite, die alle Drucker enthält. Wählt man Einen aus, dann sollen alle Verbrauchsmaterialien des Druckers als Tabelle aufgeführt werden.
    Vorab Prüfung, ob Farbe = 1 => Tabelle enthält Modell, Cyan, Magenta, Yellow, Black, Wartungskit, Transportband, Heizung
    Prüfung Schwarz-weiß = 1 => Tabelle enthält Modell, Black, Wartungskit, Transportband, Heizung.
    in der untersten der 3 Zeilen befinden sich je 2 Button (+ und -) für jedes Verbrauchsmaterial.
    Mit diesen Buttons möchte ich die bisherige Anzahl des jeweiligen Verbrauchsmaterial +1 oder -1 rechnen.
    Bei meiner bisherigen Lösung funktioniert alles, aber die Anzahl in der Tabelle verändert sich nicht live. Drücke ich den + Button wird die Anzahl in der Datenbank erhöht, aber in der Tabelle ist es erst ab dem nächsten Refresh sichtbar.

    Bisher habe ich mich um die Funktion des Button ganz links gekümmert, also für Cyan + bei Farbdruckern und bei schwarz-weiß Druckern für Black +.

    1. Möglichkeit:

    Hier der Code index.php:

    PHP-Code:

    <?php
    session_start
    ();
    require 
    'inc/db.php';
    ?>
    <style><?php include 'inc/css/main.css'?></style>
    <?php
    $daten 
    = array();
    if (
    $erg $db->query("SELECT * FROM Printer")) {
        if (
    $erg->num_rows){
            while(
    $datensatz $erg->fetch_object()) {
                
    $daten[] = $datensatz;
            }
            
    $erg->free();
        }
    }
    if (!
    count($daten)) {
        echo 
    "<p>Es liegen keine Daten vor :(</p>";
    } else {
    ?>
            <form method="post">
                <section class="container">
                    <div class="dropdown dropdown-dark">
                        <select name="printer" class="dropdown-select">
                        <option value="">Select…</option>
                            <?php
                            
    foreach ($daten as $inhalt) {
                            
    ?>
                            <option><?php echo $inhalt->Modell?></option>
                            <?php
                            
    }
                            
    ?>
                        </select>
                    </div>
                    <button class="submit-dark" onclick="<?php
                            
    //Drucker aus Dropdownliste
                            
    $selected_printer $_POST["printer"];
                            
    // SQL Abfrage mit selektiertem Drucker
                            
    $erg $db->query("SELECT * FROM `Printer` WHERE `Modell` = '$selected_printer' ")
                                            or die (
    $db->error);
                            
    $tonerbestand $erg->fetch_assoc();
                        
    ?>">
                            Toner Abfragen
                    </button>
                </section>
            </form>
    <?php
    }

    if (isset(
    $tonerbestand)){
        
    $_SESSION["modell"] = $tonerbestand['Modell'];
        
    $_SESSION["sw"] = $tonerbestand['Schwarzweiß'];
        
    $_SESSION["color"] = $tonerbestand['Farbe'];
        
    $_SESSION["cyan"] = $tonerbestand['Cyan'];
        
    $_SESSION["magenta"] = $tonerbestand['Magenta'];
        
    $_SESSION["yellow"] = $tonerbestand['Yellow'];
        
    $_SESSION["black"] = $tonerbestand['Black'];
        
    $_SESSION["wartungskit"] = $tonerbestand['Wartungskit'];
        
    $_SESSION["transportband"] = $tonerbestand['Transportband'];
        
    $_SESSION["heizung"] = $tonerbestand['Heizung'];

    }
        
    // Prüfung ob Farbdrucker
        
    if($_SESSION["color"] == 1){
        
    ?>
        <!--
        Tabelle Tonerbestand Farbe
        -->
        <body>
            <div class="table-title">
                <h3>Tonerbestand</h3>
            </div>
            <table class="table-fill">
                <thead>
                    <tr>
                        <th class="text-left" colspan="2">Modell</th>
                        <th class="text-left" colspan="2">Cyan</th>
                        <th class="text-left" colspan="2">Magenta</th>
                        <th class="text-left" colspan="2">Yellow</th>
                        <th class="text-left" colspan="2">Black</th>
                        <th class="text-left" colspan="2">Wartungskit</th>
                        <th class="text-left" colspan="2">Transportband</th>
                        <th class="text-left" colspan="2">Heizung</th>
                    </tr>
                </thead>
            <tbody class="table-hover">
                <tr>
                    <td colspan="2"><?php print_r ($_SESSION["modell"]) ?></td>
                    <td colspan="2"><?php print_r ($_SESSION["cyan"]) ?></td>
                    <td colspan="2"><?php print_r ($_SESSION["magenta"]) ?></td>
                    <td colspan="2"><?php print_r ($_SESSION["yellow"]) ?></td>
                    <td colspan="2"><?php print_r ($_SESSION["black"]) ?></td>
                    <td colspan="2"><?php print_r ($_SESSION["wartungskit"]) ?></td>
                    <td colspan="2"><?php print_r ($_SESSION["transportband"]) ?></td>
                    <td colspan="2"><?php print_r ($_SESSION["heizung"]) ?></td>
                </tr>
                <form method="post">
                <tr>
                    <!--Spalte Modell -->
                    <td colspan="2"></td>
                    <!--Spalte Cyan -->
                    <td>
                        <input type="submit" name="cyan+" class="btn" value="+" />
                        <?php
                            
    if(isset($_POST['cyan+'])){
                                
    $modell $_SESSION["modell"];
                                
    $cyan $_SESSION["cyan"] + 1;
                                
    $sql "Update Printer Set Cyan = '$cyan' Where Modell = '$modell'";

                                if (
    mysqli_query($db$sql)) {
                                
    //bei erfolgreichem Update nichts machen
                                
    header("Refresh:0");
                                }
                                else {
                                echo 
    "Error: " $sql "<br>" mysqli_error($db);
                                }
                            }
                        
    ?>
                    </td>
                    <td><button class="btn">-</button></td>
                    <!--Spalte Magenta -->
                    <td><button class="btn">+</button></td>
                    <td><button class="btn">-</button></td>
                    <!--Spalte Yellow -->
                    <td><button class="btn">+</button></td>
                    <td><button class="btn">-</button></td>
                    <!--Spalte Black -->
                    <td><button class="btn">+</button></td>
                    <td><button class="btn">-</button></td>
                    <!--Spalte Wartungskit -->
                    <td><button class="btn">+</button></td>
                    <td><button class="btn">-</button></td>
                    <!--Spalte Transportband -->
                    <td><button class="btn">+</button></td>
                    <td><button class="btn">-</button></td>
                    <!--Spalte Heizung -->
                    <td><button class="btn">+</button></td>
                    <td><button class="btn">-</button></td>
                </tr>
                </form>
            </tbody>
            </table>
        </body>

        <?php
        
    }

        else {
            
    ?>

            <!--
            Tabelle Tonerbestand Schwarz-weiß
            -->
            <body>
            <div class="table-title">
                <h3>Tonerbestand</h3>
            </div>
            <table class="table-fill">
                <thead>
                    <tr>
                        <th class="text-left" colspan="2">Modell</th>
                        <th class="text-left" colspan="2">Black</th>
                        <th class="text-left" colspan="2">Wartungskit</th>
                        <th class="text-left" colspan="2">Transportband</th>
                        <th class="text-left" colspan="2">Heizung</th>
                    </tr>
                </thead>
            <tbody class="table-hover">
                <tr>
                    <td colspan="2"><?php print_r ($_SESSION["modell"]) ?></td>
                    <td colspan="2"><?php print_r ($_SESSION["black"]) ?></td>
                    <td colspan="2"><?php print_r ($_SESSION["wartungskit"]) ?></td>
                    <td colspan="2"><?php print_r ($_SESSION["transportband"]) ?></td>
                    <td colspan="2"><?php print_r ($_SESSION["heizung"]) ?></td>
                </tr>
                <form method="post">
                <tr>
                    <!--Spalte Modell -->
                    <td colspan="2"></td>
                    <!--Spalte Black -->
                    <td>
                    <input type="submit" name="black+" class="btn" value="+" />
                        <?php
                            
    if(isset($_POST['black+'])){
                                
    $modell $_SESSION["modell"];
                                
    $black $_SESSION["black"] + 1;
                                
    $sql "Update Printer Set Black = '$black' Where Modell = '$modell'";

                                if (
    mysqli_query($db$sql)) {
                                
    //bei erfolgreichem Update nichts machen
                                
    header("Refresh:0");
                                }
                                else {
                                echo 
    "Error: " $sql "<br>" mysqli_error($db);
                                }
                            }
                        
    ?>
                    </td>
                    <td><button class="btn">-</button></td>
                    <!--Spalte Wartungskit -->
                    <td><button class="btn">+</button></td>
                    <td><button class="btn">-</button></td>
                    <!--Spalte Transportband -->
                    <td><button class="btn">+</button></td>
                    <td><button class="btn">-</button></td>
                    <!--Spalte Heizung -->
                    <td><button class="btn">+</button></td>
                    <td><button class="btn">-</button></td>
                </tr>
                </form>
            </tbody>
            </table>
        </body>
            <?php
        
    }

        
    /* Alle Variablen löschen*/
        
    $vars array_keys(get_defined_vars());
        for (
    $i 0$i sizeOf($vars); $i++) {
            unset($
    $vars[$i]);
        }
        unset(
    $vars,$i);

        
    // DB Verbindung schließen
        
    mysql_close($db);

    ?>

    2 Möglichkeit:

    Ich habe die Lösung etwas modifiziert, vielleicht komme ich dem Problem damit näher ? Nun weiß ich leider überhaupt nicht, wie ich mit den Buttons fortfahren muss. Hinterlege ich eine Funktion, passiert einfach nichts.
    index.php:

    PHP-Code:

    <?php
    session_start
    ();
    require 
    'inc/db.php';
    ?>
    <style><?php include 'inc/css/main.css'?></style>
    <?php
    $daten 
    = array();
    if (
    $erg $db->query("SELECT * FROM Printer")) {
        if (
    $erg->num_rows){
            while(
    $datensatz $erg->fetch_object()) {
                
    $daten[] = $datensatz;
            }
            
    $erg->free();
        }
    }
    if (!
    count($daten)) {
        echo 
    "<p>Es liegen keine Daten vor :(</p>";
    } else {
    ?>
    <html>
        <script>
            function inventory_table(str) {
            if (str == "") {
                document.getElementById("inventory_table").innerHTML = "";
                return;
            } else {
                var xmlhttp = new XMLHttpRequest();
                xmlhttp.onreadystatechange = function() {
                if (this.readyState == 4 && this.status == 200) {
                    document.getElementById("inventory_table").innerHTML = this.responseText;
                }
                };
                xmlhttp.open("GET","inc/inventory_table.php?printer=" + str, true);
                xmlhttp.send();
            }
            }
        </script>
            <form method="post">
                <section class="container">
                    <div class="dropdown dropdown-dark">
                        <select name="printer" class="dropdown-select" onchange="inventory_table(this.value)">
                        <option value="">Select…</option>
                            <?php
                            
    foreach ($daten as $inhalt) {
                            
    ?>
                            <option><?php echo $inhalt->Modell?></option>
                            <?php
                            
    }
                            
    ?>
                        </select>
                    </div>
                </section>
            </form>
            <div id="inventory_table"></div>
    </html>
    <?php

    }

        
    /* Alle Variablen löschen*/
        
    $vars array_keys(get_defined_vars());
        for (
    $i 0$i sizeOf($vars); $i++) {
            unset($
    $vars[$i]);
        }
        unset(
    $vars,$i);

        
    // DB Verbindung schließen
        
    mysql_close($db);

    ?>

    Table_inventory.php:

    PHP-Code:
    <?php

    require 'db.php';
    // get the q parameter from URL
    //Drucker aus Dropdownliste
    $selected_printer $_REQUEST["printer"];
    // SQL Abfrage mit selektiertem Drucker
    $erg $db->query("SELECT * FROM `Printer` WHERE `Modell` = '$selected_printer' ")
                    or die (
    $db->error);
    $tonerbestand $erg->fetch_assoc();


        
    // Prüfung ob Farbdrucker
        
    if($tonerbestand["Farbe"] == 1){
            
    ?>
            <!--
            Tabelle Tonerbestand Farbe
            -->
    <body>
            <div class="table-title">
                <h3>Tonerbestand</h3>
            </div>
            <table class="table-fill">
                <thead>
                    <tr>
                        <th class="text-left" colspan="2">Modell</th>
                        <th class="text-left" colspan="2">Cyan</th>
                        <th class="text-left" colspan="2">Magenta</th>
                        <th class="text-left" colspan="2">Yellow</th>
                        <th class="text-left" colspan="2">Black</th>
                        <th class="text-left" colspan="2">Wartungskit</th>
                        <th class="text-left" colspan="2">Transportband</th>
                        <th class="text-left" colspan="2">Heizung</th>
                    </tr>
                </thead>
            <tbody class="table-hover">
                <tr>
                    <td colspan="2"><?php print_r ($tonerbestand["Modell"]) ?></td>
                    <td colspan="2"><?php print_r ($tonerbestand["Cyan"]) ?></td>
                    <td colspan="2"><?php print_r ($tonerbestand["Magenta"]) ?></td>
                    <td colspan="2"><?php print_r ($tonerbestand["Yellow"]) ?></td>
                    <td colspan="2"><?php print_r ($tonerbestand["Black"]) ?></td>
                    <td colspan="2"><?php print_r ($tonerbestand["Wartungskit"]) ?></td>
                    <td colspan="2"><?php print_r ($tonerbestand["Transportband"]) ?></td>
                    <td colspan="2"><?php print_r ($tonerbestand["Heizung"]) ?></td>
                </tr>
                <tr>
                    <!--Spalte Modell -->
                    <td colspan="2"></td>
                    <!--Spalte Cyan -->              
                    <form method="post">
                    <td><input type="submit" class="btn" name="cyan+" value="+"/></td>
                    </form>
                    <?php
                        
    if(isset($_POST['cyan+'])){
                            
    $modell $tonerbestand["Modell"];
                            
    $cyan $tonerbestand["Cyan"] + 1;
                            
    $sql "Update Printer Set Cyan = '$cyan' Where Modell = '$modell'";
                            if (
    mysqli_query($db$sql)) {
                            
    //bei erfolgreichem Update nichts machen
                            
    header("Refresh:0");
                            }
                        else {
                            echo
    "Error: ".$sql."<br>".mysqli_error($db);
                        }
                        }  
                    
    ?>
                    <td><button class="btn">-</button></td>
                    <!--Spalte Magenta -->
                    <td><button class="btn">+</button></td>
                    <td><button class="btn">-</button></td>
                    <!--Spalte Yellow -->
                    <td><button class="btn">+</button></td>
                    <td><button class="btn">-</button></td>
                    <!--Spalte Black -->
                    <td><button class="btn">+</button></td>
                    <td><button class="btn">-</button></td>
                    <!--Spalte Wartungskit -->
                    <td><button class="btn">+</button></td>
                    <td><button class="btn">-</button></td>
                    <!--Spalte Transportband -->
                    <td><button class="btn">+</button></td>
                    <td><button class="btn">-</button></td>
                    <!--Spalte Heizung -->
                    <td><button class="btn">+</button></td>
                    <td><button class="btn">-</button></td>
                </tr>
            </tbody>
            </table>
        </body>
        <?php
        
    }

        if(
    $tonerbestand['Black'] == 1){
            
    ?>

            <!--
            Tabelle Tonerbestand Schwarz-weiß
            -->
            <body>
                <div class="table-title">
                    <h3>Tonerbestand</h3>
                </div>
                <table class="table-fill">
                    <thead>
                        <tr>
                            <th class="text-left" colspan="2">Modell</th>
                            <th class="text-left" colspan="2">Black</th>
                            <th class="text-left" colspan="2">Wartungskit</th>
                            <th class="text-left" colspan="2">Transportband</th>
                            <th class="text-left" colspan="2">Heizung</th>
                        </tr>
                    </thead>
                    <tbody class="table-hover">
                        <tr>
                            <td colspan="2"><?php print_r ($tonerbestand["Modell"]) ?></td>
                            <td colspan="2"><?php print_r ($tonerbestand["Black"]) ?></td>
                            <td colspan="2"><?php print_r ($tonerbestand["Wartungskit"]) ?></td>
                            <td colspan="2"><?php print_r ($tonerbestand["Transportband"]) ?></td>
                            <td colspan="2"><?php print_r ($tonerbestand["Heizung"]) ?></td>
                        </tr>
                        <tr>
                            <!--Spalte Modell -->
                            <td colspan="2"></td>
                            <!--Spalte Black -->
                            <form method="post">
                                <td><input type="submit" class="btn" name="black+" value="+"/></td>
                            </form>
                                <?php
                                
    if(isset($_POST['black+'])){
                                    
    $modell $tonerbestand["Modell"];
                                    
    $black $tonerbestand["Black"] + 1;
                                    
    $sql "Update Printer Set Black = '$black' Where Modell = '$modell'";
                                    if (
    mysqli_query($db$sql)) {
                                    
    //bei erfolgreichem Update nichts machen
                                    
    header("Refresh:0");
                                    }
                                else {
                                    echo
    "Error: ".$sql."<br>".mysqli_error($db);
                                }
                                }  
                                
    ?>
                            <td><button class="btn">-</button></td>
                            <!--Spalte Wartungskit -->
                            <td><button class="btn">+</button></td>
                            <td><button class="btn">-</button></td>
                            <!--Spalte Transportband -->
                            <td><button class="btn">+</button></td>
                            <td><button class="btn">-</button></td>
                            <!--Spalte Heizung -->
                            <td><button class="btn">+</button></td>
                            <td><button class="btn">-</button></td>
                        </tr>
                    </tbody>
                </table>
            </body>
            <?php
        
    }



    ?>


    Ich wäre über jegliche Hilfe sehr dankbar.
    Bitte seid nicht zu streng mit mir, ich bin ein absoluter Anfänger.

    ​​​​​​​Liebe Grüße

  • #2
    moin IP-fan,
    bitte passedie farben in den Code Blöcken irgendwie lesbar an.

    Kommentar


    • #3
      Hallo tomBuilder,
      danke für den Hinweis.
      Ich habe den Quelltext einfach aus visual Studio Code rauskopiert und dann als code deklariert und nicht als php...
      Ich hoffe, jetzt ist es besser zu lesen.

      Kommentar


      • #4
        Ich hoffe ihr könnt es nun noch besser lesen.
        Ich habe noch einige "Verbesserungen" vorgenommen.

        Kommentar


        • #5
          ja man kann es jetzt lesen

          der zweite versuch geht in die richtige richtung, wenn du ein reload verhindern willst.

          allerdings blicke ich da nicht so recht durch:

          Code:
           <select name="printer" class="dropdown-select" onchange="inventory_table(this.value)">
          damit hohlt du doch nur die daten des printers ?
          um die zahl zu ändern, musst du doch das formular auslesen, und die werte - wie im formular -mit POST übrtragen.

          Kommentar


          • #6
            Also das war meine 2. Idee, wie man das Problem lösen könnte, aber die stellt bisher nur die Tabelle dar. Es wird nur der selektierte Wert der Dropdown Liste ausgelesen und an die zweite PHP Datei übergeben, weiterverarbeitet und die Tabelle dargestellt, aber dadurch, dass es ein einmaliges laden der Tabelle ist, kann es nicht funktionieren, dass die Daten aktuell gehalten werden (neue Erkenntnis).
            Ich müsste im Prinzip, wenn ich es wie Version 2 lösen will, sekündlich ein Refresh der Funktion machen (denke ich).

            Kommentar


            • #7
              Ich bin auf folgendes gestoßen, welches mein Problem lösen könnte, wenn man beim Aufruf der PHP Datei auch eine Variable übertragen könnte.

              HTML-Code:
                <div id="refresh">;  // Hier wird Dein Inhalt angezeigt.  </div>; 
              
              Code:
              $(document).ready(function() {
                       $("#refresh").load("db_laden.php");
                       var refreshId = setInterval(function() {
                          $("#refresh").load("db_laden.php");
                       }, 7000);// Intervall in ms
                    });
              Weiß jemand wie man beim Aufrufen einer PHP Datei mittels javascript eine variable "mitgeben" kann oder ob dies überhaupt funktioniert?

              Kommentar


              • #8
                ich habe wenig ahnung was du versuchst oder im internet suchst.

                mach doch ein post request bei welchen du die daten änderst und passe nach erfolgreichen request die daten auf der seite an.

                post request:
                https://www.w3schools.com/js/tryit.a...yjs_ajax_post2

                die seite mit setIntervall alle 7 sekunden neu zu laden ist einfach nicht das was du willst denke ich.

                Kommentar


                • #9
                  Halte dich mal an das EVA-Prinzip, DB-Abfragen haben inmitten der HTML-Ausgabe nichts zu suchen.
                  Danach schaust du dir mal das Affenformular an und baust dein Script entsprechend um.

                  Und bitte beachte das Folgende:
                  Warum sollte SELECT * in SQL-Abfragen vermieden werden?

                  Wenn du alles umgesetzt hast, kommst du wieder, zeigst deinen Code und die DB Struktur mit einigen Testdaten als Text, damit man das nachvollziehen kann. Du kannst mit phpMyAdmin oder einem anderen Client dazu einen Export deiner DB machen.

                  Kommentar


                  • #10
                    Danke euch beiden für die guten Tipps.
                    Ich werde mich mal weiter ransetzen und mich dann melden.
                    Vielen Dank !

                    Kommentar

                    Lädt...
                    X