Radio-Button Auswahl überprüfen.


Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

DerTrojaner

Mitglied
Hallo zusammen,

ich habe ein kleines Problem, und zwar habe ich eine Tabelle und möchte nun dank der Radio-Buttons einen Bestimmten Datensatz bearbeiten.
Das Problem ist aber Wenn ich den gewünschten Datensatz durch den Radio-Button anklicke, kriege ich die Fehlermeldung "Es wurde kein Datensatz ausgewählt."

Vielleicht könnt ihr mir sagen wo der Fehler liegt. Ich habe einmal zulauf.php und einmal bearbeiten.php

Code:
                <table>
                    <tr>
                        <th>Tag</th>
                        <th>Wochentag</th>
                        <th>Uhrzeit</th>
                        <th>Wert</th>
                        <th>Lufttemp. in °C</th>
                        <th>Abwassertemp. in °C</th>
                        <th>pH-Wert</th>
                        <th>Flotation</th>
                        <th>Zulauf</th>
                  </tr>

                    <?php
                        while ($dsatz = $result->fetch_assoc()) {
                    ?>
                        <tr>
                          <td><?php echo $dsatz['Tag']; ?></td>
                            <td><?php echo $dsatz['Wochentag']; ?></td>
                            <td><?php echo $dsatz['Uhrzeit']; ?></td>
                            <td><?php echo $dsatz['Wert']; ?></td>
                            <td><?php echo $dsatz['Lufttemperatur']; ?></td>
                            <td><?php echo $dsatz['Abwassertemperatur']; ?></td>
                            <td><?php echo $dsatz['pH_Wert']; ?></td>
                            <td><?php echo $dsatz['Flotation']; ?></td>
                            <td><?php echo $dsatz['Zulauf']; ?></td>
                            <td><input type='radio' name='auswahl' value='$Tag'></td>
                        </tr>
                    <?php
                    }
                    ?>
                </table>
Code:
  if( isset( $_POST["auswahl"]) )
 {
        $con = mysqli_connect($servername, $username, $password, $dbname);
    // 3. Datenbankabfrage starten
        $Tag = $_POST["Tag"];
        $abfrage = "SELECT * FROM zulauf WHERE Tag = $Tag";
        $result = mysqli_query($con, $abfrage);
 

merzi86

Erfahrenes Mitglied
Hallo Trojaner,
dein Fehler ist an dieser Stelle:
HTML:
<td><input type='radio' name='auswahl' value='$Tag'></td>
Du hast hier
1. den öffnenden PHP-Tag vergessen
2. dadurch auch das Echo vergessen
3. eine Variable genutzt, die nicht existiert (zumindest hier in dem Code Teil den du uns gepostet hast)
4. Beim Zusammensetzen des Queries nutzt ein Element aus dem Post, was nicht existiert (das Feld Tag), du übergibst aber kein Element außer "auswahl" mit in das Post

Du kannst den Fehler so beheben
HTML:
<td><input type='radio' name='auswahl' value='<?= $dsatz['Tag']; ?>'></td>
Du könntest das dir solche fehler weniger passieren weniger PHP und Html-Code mischen, das wäre z.B. mit printf bzw sprintf möglich.

z.b. so:

PHP:
$output = <<<EOL
        <table>
                    <tr>
                        <th>Tag</th>
                        <th>Wochentag</th>
                        <th>Uhrzeit</th>
                        <th>Wert</th>
                        <th>Lufttemp. in °C</th>
                        <th>Abwassertemp. in °C</th>
                        <th>pH-Wert</th>
                        <th>Flotation</th>
                        <th>Zulauf</th>
                  </tr>
EOL;

$buffer = <<< EOL
                        <tr>
                          <td>%s</td>
                            <td>%s</td>
                            <td>%s</td>
                            <td>%s</td>
                            <td>%s</td>
                            <td>%s</td>
                            <td>%s</td>
                            <td>%s</td>
                            <td>%s</td>
                            <td><input type='radio' name='auswahl' value='%s'></td>
                        </tr>
EOL;

$i = 0;
while ($i < 10) {
   $output .= sprintf($buffer, $dsatz['Tag'], $dsatz['Wochentag'], $dsatz['Uhrzeit'], 
                              $dsatz['Wert'], $dsatz['Lufttemperatur'], $dsatz['Abwassertemperatur'],
                              $dsatz['pH_Wert'], $dsatz['Flotation'], $dsatz['Zulauf'], $dsatz['Tag']);
   $i++;
}

$output .= <<<EOL
                </table>
            <input type="submit" />
        </form>
    </body>
</html>
EOL;

echo $output;
Um Allgemeine Fehler in PHP zu finden schau aktiviere mal Xdebug in deiner Entwicklungsumgebung.
Als Tipp hätte ich noch, das du niemals Werte direkt so in ein SQL-Statement übernehmen solltest.

Sonst könnte jemand den Value des Inputs z.B. auf "0; drop database meine_datenbank" und schon ist deine Datenbank futsch oder er kann sich dadurch auch Zugriff auf das System erschleichen.

Stichwort hierbei ist SQL-Injection. Dies kann durch Escapen der Values beim zusammen setzen des Queries entgegen gewirkt werden. Ein moderner Ansatz ist hierfür Prepared-Statements.
Gleich zeitig schau dir mal die Klassenschreibweise von Mysqli an, das macht den Quellcode etwas kürzer. ;)
Das mit Prepared-Statements würde das so aussehen:

PHP:
$tag = $_POST['auswahl'];
$stmt = mysql_prepare($con, "SELECT * FROM zulauf WHERE Tag = ?;");
// Ich habe hier angenommen, dass der Tag eine Zahl ist deshalb ist der Typ hier ein "i", falls es ein String ist müsste es ein "s" sein
mysqli_stmt_bind_param( $stmt, "i", $tag);
$result = mysqli_stmt_execute($stmt);
 

DerTrojaner

Mitglied
Hallo Trojaner,
dein Fehler ist an dieser Stelle:
HTML:
<td><input type='radio' name='auswahl' value='$Tag'></td>
Du hast hier
1. den öffnenden PHP-Tag vergessen
2. dadurch auch das Echo vergessen
3. eine Variable genutzt, die nicht existiert (zumindest hier in dem Code Teil den du uns gepostet hast)
4. Beim Zusammensetzen des Queries nutzt ein Element aus dem Post, was nicht existiert (das Feld Tag), du übergibst aber kein Element außer "auswahl" mit in das Post

Du kannst den Fehler so beheben
HTML:
<td><input type='radio' name='auswahl' value='<?= $dsatz['Tag']; ?>'></td>
Du könntest das dir solche fehler weniger passieren weniger PHP und Html-Code mischen, das wäre z.B. mit printf bzw sprintf möglich.

z.b. so:

PHP:
$output = <<<EOL
        <table>
                    <tr>
                        <th>Tag</th>
                        <th>Wochentag</th>
                        <th>Uhrzeit</th>
                        <th>Wert</th>
                        <th>Lufttemp. in °C</th>
                        <th>Abwassertemp. in °C</th>
                        <th>pH-Wert</th>
                        <th>Flotation</th>
                        <th>Zulauf</th>
                  </tr>
EOL;

$buffer = <<< EOL
                        <tr>
                          <td>%s</td>
                            <td>%s</td>
                            <td>%s</td>
                            <td>%s</td>
                            <td>%s</td>
                            <td>%s</td>
                            <td>%s</td>
                            <td>%s</td>
                            <td>%s</td>
                            <td><input type='radio' name='auswahl' value='%s'></td>
                        </tr>
EOL;

$i = 0;
while ($i < 10) {
   $output .= sprintf($buffer, $dsatz['Tag'], $dsatz['Wochentag'], $dsatz['Uhrzeit'],
                              $dsatz['Wert'], $dsatz['Lufttemperatur'], $dsatz['Abwassertemperatur'],
                              $dsatz['pH_Wert'], $dsatz['Flotation'], $dsatz['Zulauf'], $dsatz['Tag']);
   $i++;
}

$output .= <<<EOL
                </table>
            <input type="submit" />
        </form>
    </body>
</html>
EOL;

echo $output;
Um Allgemeine Fehler in PHP zu finden schau aktiviere mal Xdebug in deiner Entwicklungsumgebung.
Als Tipp hätte ich noch, das du niemals Werte direkt so in ein SQL-Statement übernehmen solltest.

Sonst könnte jemand den Value des Inputs z.B. auf "0; drop database meine_datenbank" und schon ist deine Datenbank futsch oder er kann sich dadurch auch Zugriff auf das System erschleichen.

Stichwort hierbei ist SQL-Injection. Dies kann durch Escapen der Values beim zusammen setzen des Queries entgegen gewirkt werden. Ein moderner Ansatz ist hierfür Prepared-Statements.
Gleich zeitig schau dir mal die Klassenschreibweise von Mysqli an, das macht den Quellcode etwas kürzer. ;)
Das mit Prepared-Statements würde das so aussehen:

PHP:
$tag = $_POST['auswahl'];
$stmt = mysql_prepare($con, "SELECT * FROM zulauf WHERE Tag = ?;");
// Ich habe hier angenommen, dass der Tag eine Zahl ist deshalb ist der Typ hier ein "i", falls es ein String ist müsste es ein "s" sein
mysqli_stmt_bind_param( $stmt, "i", $tag);
$result = mysqli_stmt_execute($stmt);

Also ich habe das mal versucht und ich habe dadurch immer noch die Fehlermeldung "Es wurde kein Datensatz ausgewählt. "

hier mein bearbeiten.php
Code:
<title>Betriebstagebuch</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script type='text/javascript' src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="SlideButton.js"></script>
<?php
    require_once("index.php");


    if( isset( $_POST["auswahl"]) )
 {
        $con = mysqli_connect($servername, $username, $password, $dbname);
    // 3. Datenbankabfrage starten
        $Tag = $_POST["Tag"];
        $abfrage = "SELECT * FROM zulauf WHERE Tag = $Tag";
        $result = mysqli_query($con, $abfrage);

        // 4. Datensatz in Variablen speichern
        $dsatz = mysqli_fetch_assoc($result);
        $Tag = $dsatz["Tag"];
        $Wochentag = $dsatz["Wochentag"];
        $Uhrzeit = $dsatz["Uhrzeit"];
        $Wert = $dsatz["Wert"];
        $Lufttemperatur = $dsatz["Lufttemperatur"];
        $Abwassertemperatur = $dsatz["Abwassertemperatur"];
        $pH_Wert = $dsatz["pH_Wert"];
        $Flotation = $dsatz["Flotation"];
        $Zulauf = $dsatz["Zulauf"];

        // 5. Das Bearbeiten-Formular anzeigen
        echo "<form action='bearbeiten.php' method='post'>";
        echo "<input name='Tag' type='hidden' value='$Tag'>";
        echo "<p><input name='Wochentag' value='$Wochentag'> Wochentag</p>";
        echo "<p><input name='Uhrzeit' value='$Uhrzeit'> Uhrzeit</p>";
        echo "<p><input name='Wert' value='$Wert'> Wert</p>";
        echo "<p><input name='Lufttemperatur' value='$Lufttemperatur'> Lufttemperatur</p>";
        echo "<p><input name='Abwassertemperatur' value='$Abwassertemperatur'> Abwassertemperatur</p>";
        echo "<p><input name='pH_Wert' value='$pH_Wert'> pH_Wert</p>";
        echo "<p><input name='Flotation' value='$Flotation'> Flotation</p>";
        echo "<p><input name='Zulauf' value='$Zulauf'> Zulauf</p>";

        echo "<input name='bearbeitungAbschicken' value='Bearbeitung abschließen' type='submit'>";
        echo "</form>";

        echo "<a href='zulauf.php'>zurück zur Übersicht</a>";
    }

//6. Datensatz aktualisieren mit UPDATE
if(isset($_POST["bearbeitungAbschicken"])){
  $Tag = $_POST["Tag"];
  $Wochentag = $_POST["Wochentag"];
  $Uhrzeit = $_POST["Uhrzeit"];
  $Wert = $_POST["Wert"];
  $Lufttemperatur = $_POST["Lufttemperatur"];
  $Abwassertemperatur = $_POST["Abwassertemperatur"];
  $pH_Wert = $_POST["pH_Wert"];
  $Flotation = $_POST["Flotation"];
  $Zulauf = $_POST["Zulauf"];

//String für Update-Anweisung erstellen
  $update = "UPDATE zulauf SET
  Wochentag = '$Wochentag',
  Uhrzeit = '$Uhrzeit',
  Wert ='$Wert',
  Lufttemperatur='$Lufttemperatur',
  Abwassertemperatur='$Abwassertemperatur',
  pH_Wert='$pH_Wert',
  Flotation='$Flotation',
  Zulauf='$Zulauf
  WHERE Tag = $Tag";

//MySQL-Anweisung ausführen
    mysqli_query($con, $update);

    echo "Datensatz bearbeitet.<br>";
    echo "<a href='zulauf.php'>zurück zur Übersicht</a>";
}

//Wenn der Nutzer in buecher.php keine Auswahl getroffen hat:
if(!isset($_POST["auswahl"]) && !isset($_POST["bearbeitungAbschicken"])){
    echo "Es wurde kein Datensatz ausgewählt.<br>";
    echo "<a href='zulauf.php'>zurück zur Übersicht</a>";
}

?>
 

merzi86

Erfahrenes Mitglied
Die Meldung kommt ja nur, wenn weder auswahl noch bearbeitungAbschicken gesetzt ist, das sollte ja nur vorkommen wenn die Datei direkt aufgerufen wird ohne vorher über die andere Seite zu kommen.

Lass dir bitte mal ein var_dump von $_POST ausgeben.
 

DerTrojaner

Mitglied
Die Meldung kommt ja nur, wenn weder auswahl noch bearbeitungAbschicken gesetzt ist, das sollte ja nur vorkommen wenn die Datei direkt aufgerufen wird ohne vorher über die andere Seite zu kommen.

Lass dir bitte mal ein var_dump von $_POST ausgeben.
Okay habe jetzt nicht alles verstanden :D da ich mit PhP noch nicht ganz so vertraut bin. Könntest du mir einmal erklären was ich machen müsste. Und ich habe auf der einen seite einen Button implementiert <button id="button2_bearbeiten" onclick="location.reload();location.href='bearbeiten.php'" >Ausgewählten Datensatz bearbeiten</button> und damit möchte ich wenn ich den drücke zum bearbeiten formular weitergeleitet werden.
 

merzi86

Erfahrenes Mitglied
Ja gut hier sehe ich das Problem du hast bei dem Button den on-Click Handler gesetzt bei dem die Seite neugeladen wird und weitergeleitet wird.

Der reload ist zu 100% Sinnfrei an dieser Stelle und wenn du dem Button sagst er soll einfach nur die bearbeiten.php aufrufen, dann werden keine Daten weiter mit übermittelt, wie z.B. die Auswahl deiner Radios.

Im Prinzip brauchst du hier nicht einmal Javascript du musst nur ein Formular um die Tabelle mit der Auswahl machen und innerhalb des Formulars musst du den button mit dem type='submit' (wenn du den type weglässt nutzt html den Typ automatisch) oder du nutzt ein input mit dem type='submit'.

Deine erste Datei müsste so oder in dieser Richtung aussehen:
BTW: nicht wundern in bin ein Freund von inputs, deshalb nutze ich diesen für das absenden man kann aber wie gesagt auch ein button Element nutzen.
HTML:
<form method='post' action='bearbeiten.php'>
   // Code für die Tabelle mit der Auswahl
  <input type='submit' value='Ausgewählten Datensatz bearbeiten' name='button2_bearbeiten' />
</form>
Es wäre vielleicht günstig, wenn du dir mal ein paar Tutorials für PHP anschaust, auch mit Blick in Richtung der von mir angesprochenen Sicherheitsprobleme. Ich weiß ja nicht wie weit du dich mit HTML auskennst, aber scheinbar wäre ein Tutorial in der Richtung auch hilfreich.
 

DerTrojaner

Mitglied
Danke konnte nun was auswählen und habe dann das Formular bekommen. Nur leider wählt er immer den ersten Datensatz aus auch wenn ich den zweiten Datensatz wähle kannst du mir erklären warum ? Und jaa ich werde bezüglich der Sicherheit noch einmal gucken
 

DerTrojaner

Mitglied
PHP:
<!DOCTYPE html>
<html>
    <head>
        <title>Betriebstagebuch</title>
        <link rel="stylesheet" type="text/css" href="style.css">
        <script type='text/javascript' src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
        <script src="SlideButton.js"></script>
    </head>
    <body>
        <!--- Sidebar / Sidenav ------------------------------------------>
        <nav class="sidenav" id="sidebar">
            <a href="#" id="hidebtn" onclick="hide()"> &laquo;</a>
                <ul>
                    <li><b><a href="zulauf.php">Zulauf</a></b></li>
                    <li><b><a href="#abb">ABB</a></b></li>
                    <li><b><a href="#becken2">Becken 2</a></b></li>
                    <li><b><a href="#becken3">Becken 3</a></b></li>
                    <li><b><a href="#teich">Teich</a></b></li>
                </ul>
        </nav>
            <a href="#" id="showbtn" onclick="show()"> &raquo;</a>
        <!---------------------------------------------------------------->
                <?php require_once("index.php");    ?>
        <!--- Button ---------------------------------------------------->
            <button id="button1_anlegen" onclick="location.reload();location.href='eintrag.php'" >Neuen Datensatz anlegen</button>

        <!---------------------------------------------------------------->
        <!--- Tabelle ---------------------------------------------------->
        <form method='post' action='bearbeiten.php'>
                <table>
                    <tr>
                        <th>Tag</th>
                        <th>Wochentag</th>
                        <th>Uhrzeit</th>
                        <th>Wert</th>
                        <th>Lufttemp. in °C</th>
                        <th>Abwassertemp. in °C</th>
                        <th>pH-Wert</th>
                        <th>Flotation</th>
                        <th>Zulauf</th>
                  </tr>

                    <?php
                        while ($dsatz = $result->fetch_assoc()) {
                    ?>
                        <tr>
                          <td><?php echo $dsatz['Tag']; ?></td>
                            <td><?php echo $dsatz['Wochentag']; ?></td>
                            <td><?php echo $dsatz['Uhrzeit']; ?></td>
                            <td><?php echo $dsatz['Wert']; ?></td>
                            <td><?php echo $dsatz['Lufttemperatur']; ?></td>
                            <td><?php echo $dsatz['Abwassertemperatur']; ?></td>
                            <td><?php echo $dsatz['pH_Wert']; ?></td>
                            <td><?php echo $dsatz['Flotation']; ?></td>
                            <td><?php echo $dsatz['Zulauf']; ?></td>
                            <td><input type='radio' name='auswahl' value='<?= $dsatz['Tag']; ?>'></td>
                        </tr>
                    <?php
                    }
                    ?>
                </table>
                <button id="button2_bearbeiten" type='submit' value='Ausgewählten Datensatz bearbeiten' name='button2_bearbeiten' />Auswahl bearbeiten</button>
            </form>
        <!------------------------------------------------------------------>
    </body>
</html
 

DerTrojaner

Mitglied
Kannst du mir mal dein aktuellen Quellcode der ersten Seite posten?
Wenn es insgesamt zuviel sein sollte, dann zumindest den Teil des Formulars.
irgendwie kommt nun dieser Fehler Warning: mysqli_query(): Couldn't fetch mysqli in C:\xampp\htdocs\Webseite\bearbeiten.php on line 72 .... Diese Fehler verstehe ich nie so ganz auch wenn ich danach google ab und zu schaffe ich die zu lösen aber dann nur durch testen.
 

merzi86

Erfahrenes Mitglied
Du müsstest deine bearbeiten.php mal noch anpassen, da du dort noch auf das $_POST-Feld "Tag" wird.

Das dürfte das Problem mit dem nicht richtig ausgewählten Datensatz beheben.

Es gibt in dieser Datei 1x die Zeile (dürften die Zeilen 13 sein):
PHP:
$Tag = $_POST["Tag"];
Die müsste so geändert werden:
PHP:
$Tag = $_POST["auswahl"];
Für das Problem mit dem SQL-Error:
Ändere mal bitte die Zeile 72 zu:

PHP:
if(!mysqli_query($con, $update))
{
   printf("Error: %s\n", mysqli_error($con)); 
   printf("Statement: %s\n", $update);
}
Und poste mal bitte die Ausgabe.
 

DerTrojaner

Mitglied
Du müsstest deine bearbeiten.php mal noch anpassen, da du dort noch auf das $_POST-Feld "Tag" wird.

Das dürfte das Problem mit dem nicht richtig ausgewählten Datensatz beheben.

Es gibt in dieser Datei 1x die Zeile (dürften die Zeilen 13 sein):
PHP:
$Tag = $_POST["Tag"];
Die müsste so geändert werden:
PHP:
$Tag = $_POST["auswahl"];
Für das Problem mit dem SQL-Error:
Ändere mal bitte die Zeile 72 zu:

PHP:
if(!mysqli_query($con, $update))
{
   printf("Error: %s\n", mysqli_error($con));
   printf("Statement: %s\n", $update);
}
Und poste mal bitte die Ausgabe.
Warning: mysqli_query(): Couldn't fetch mysqli in C:\xampp\htdocs\Webseite\bearbeiten.php on line 70

Warning: mysqli_error(): Couldn't fetch mysqli in C:\xampp\htdocs\Webseite\bearbeiten.php on line 72
Error: Statement: UPDATE zulauf SET Wochentag = 'Sonntag', Uhrzeit = '8:00', Wert ='8', Lufttemperatur='8', Abwassertemperatur='8', pH_Wert='8', Flotation='8', Zulauf='8 WHERE Tag = 2019-09-09
 

DerTrojaner

Mitglied
Bearbeiten. php
PHP:
<title>Betriebstagebuch</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script type='text/javascript' src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="SlideButton.js"></script>
<?php
    require_once("index.php");

    if( isset( $_POST['auswahl']))

 {
      $db_con = mysqli_connect($servername, $username, $password, $dbname);

    // 3. Datenbankabfrage starten
        $Tag = $_POST["auswahl"];
        $abfrage = "SELECT * FROM zulauf WHERE Tag = $Tag";
        $result = mysqli_query($db_con, $abfrage);

        // 4. Datensatz in Variablen speichern
        $dsatz = mysqli_fetch_assoc($result);
        $Wochentag = $dsatz["Wochentag"];
        $Uhrzeit = $dsatz["Uhrzeit"];
        $Wert = $dsatz["Wert"];
        $Lufttemperatur = $dsatz["Lufttemperatur"];
        $Abwassertemperatur = $dsatz["Abwassertemperatur"];
        $pH_Wert = $dsatz["pH_Wert"];
        $Flotation = $dsatz["Flotation"];
        $Zulauf = $dsatz["Zulauf"];

        // 5. Das Bearbeiten-Formular anzeigen
        echo "<form action='bearbeiten.php' method='post'>";
          echo "<input name='Tag' type='hidden' value='$Tag'>";
          echo "<p><input name='Wochentag' value='$Wochentag'> Wochentag</p>";
          echo "<p><input name='Uhrzeit' value='$Uhrzeit'> Uhrzeit</p>";
          echo "<p><input name='Wert' value='$Wert'> Wert</p>";
          echo "<p><input name='Lufttemperatur' value='$Lufttemperatur'> Lufttemperatur</p>";
          echo "<p><input name='Abwassertemperatur' value='$Abwassertemperatur'> Abwassertemperatur</p>";
          echo "<p><input name='pH_Wert' value='$pH_Wert'> pH_Wert</p>";
          echo "<p><input name='Flotation' value='$Flotation'> Flotation</p>";
          echo "<p><input name='Zulauf' value='$Zulauf'> Zulauf</p>";
        echo "<input name='bearbeitungAbschicken' value='Bearbeitung abschließen' type='submit'>";
        echo "</form>";
        echo "<a href='zulauf.php'>zurück zur Übersicht</a>";
    }

//6. Datensatz aktualisieren mit UPDATE
if(isset($_POST["bearbeitungAbschicken"])){
  $Tag = $_POST["Tag"];
  $Wochentag = $_POST["Wochentag"];
  $Uhrzeit = $_POST["Uhrzeit"];
  $Wert = $_POST["Wert"];
  $Lufttemperatur = $_POST["Lufttemperatur"];
  $Abwassertemperatur = $_POST["Abwassertemperatur"];
  $pH_Wert = $_POST["pH_Wert"];
  $Flotation = $_POST["Flotation"];
  $Zulauf = $_POST["Zulauf"];

//String für Update-Anweisung erstellen
  $update = "UPDATE zulauf SET
  Wochentag = '$Wochentag',
  Uhrzeit = '$Uhrzeit',
  Wert ='$Wert',
  Lufttemperatur='$Lufttemperatur',
  Abwassertemperatur='$Abwassertemperatur',
  pH_Wert='$pH_Wert',
  Flotation='$Flotation',
  Zulauf='$Zulauf
  WHERE Tag = $Tag";

//MySQL-Anweisung ausführen
if(!mysqli_query($db_con, $update))
{
   printf("Error: %s\n", mysqli_error($db_con));
   printf("Statement: %s\n", $update);
}
}

//Wenn der Nutzer in buecher.php keine Auswahl getroffen hat:
if(!isset($_POST["auswahl"]) && !isset($_POST["bearbeitungAbschicken"])){
    echo "Es wurde kein Datensatz ausgewählt.<br>";
    echo "<a href='zulauf.php'>zurück zur Übersicht</a>";
}

?>
 

DerTrojaner

Mitglied
Neuer Fehler :D
PHP:
Error: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''9 WHERE Tag = 2019-09-09' at line 9 Statement: UPDATE zulauf SET Wochentag = 'Samstag', Uhrzeit = '9:00', Wert ='9', Lufttemperatur='9', Abwassertemperatur='9', pH_Wert='9', Flotation='9', Zulauf='9 WHERE Tag = 2019-09-09
 

merzi86

Erfahrenes Mitglied
Nicht neuer Fehler, es ist die Ausgabe, die ich wollte. :)

Jetzt fällt mir auch der Fehler auf.
In Zeile 66 Fehlt das 2. '.

Du müsstest diese also so ändern:
PHP:
Zulauf='$Zulauf'
 

merzi86

Erfahrenes Mitglied
Du hast als du diesen Teil reinkopiert hast die Erfolgsmeldung überschrieben:
PHP:
if(!mysqli_query($db_con, $update))
{
   printf("Error: %s\n", mysqli_error($db_con));
   printf("Statement: %s\n", $update);
}
Ändere das mal zu diesen, dann bekommst du die Erfolgsmeldung auch.
PHP:
if(!mysqli_query($db_con, $update))
{
   printf("Error: %s\n", mysqli_error($db_con));
   printf("Statement: %s\n", $update);
} else {
    echo "Datensatz bearbeitet.<br>";
    echo "<a href='zulauf.php'>zurück zur Übersicht</a>";
}
Die Änderung müsste aber in der Übersicht auf der ersten Seite sichtbar sein.
 

DerTrojaner

Mitglied
Er zeigt aber die Änderung nicht an das ist leider das Problem der Datensatz bleibt gleich
Du hast als du diesen Teil reinkopiert hast die Erfolgsmeldung überschrieben:
PHP:
if(!mysqli_query($db_con, $update))
{
   printf("Error: %s\n", mysqli_error($db_con));
   printf("Statement: %s\n", $update);
}
Ändere das mal zu diesen, dann bekommst du die Erfolgsmeldung auch.
PHP:
if(!mysqli_query($db_con, $update))
{
   printf("Error: %s\n", mysqli_error($db_con));
   printf("Statement: %s\n", $update);
} else {
    echo "Datensatz bearbeitet.<br>";
    echo "<a href='zulauf.php'>zurück zur Übersicht</a>";
}
Die Änderung müsste aber in der Übersicht auf der ersten Seite sichtbar sein.
 

merzi86

Erfahrenes Mitglied
Es dürfte zwar keine Rolle spielen da hoffentlich der Tag als Date formatiert ist aber du könntest das Update Query mal so abändern:

PHP:
$update = "UPDATE zulauf SET
  Wochentag = '$Wochentag',
  Uhrzeit = '$Uhrzeit',
  Wert ='$Wert',
  Lufttemperatur='$Lufttemperatur',
  Abwassertemperatur='$Abwassertemperatur',
  pH_Wert='$pH_Wert',
  Flotation='$Flotation',
  Zulauf='$Zulauf'
  WHERE Tag = '$Tag'";
Ansonsten sehe ich keinen Grund, dass das Update nicht durchgeführt wird.

Mal abgesehen davon das deine Skripts scheinbar schön zusammengestückelt sind, ist der Aufbau der Tabelle auch ... sagen wir mal nicht Optimal.

Beschäftige dich mal wirklich mit PHP, denn sonst wirst du nicht wirklich auf einen grünen Nenner kommen.
 

DerTrojaner

Mitglied
Es dürfte zwar keine Rolle spielen da hoffentlich der Tag als Date formatiert ist aber du könntest das Update Query mal so abändern:

PHP:
$update = "UPDATE zulauf SET
  Wochentag = '$Wochentag',
  Uhrzeit = '$Uhrzeit',
  Wert ='$Wert',
  Lufttemperatur='$Lufttemperatur',
  Abwassertemperatur='$Abwassertemperatur',
  pH_Wert='$pH_Wert',
  Flotation='$Flotation',
  Zulauf='$Zulauf'
  WHERE Tag = '$Tag'";
Ansonsten sehe ich keinen Grund, dass das Update nicht durchgeführt wird.

Mal abgesehen davon das deine Skripts scheinbar schön zusammengestückelt sind, ist der Aufbau der Tabelle auch ... sagen wir mal nicht Optimal.

Beschäftige dich mal wirklich mit PHP, denn sonst wirst du nicht wirklich auf einen grünen Nenner kommen.
Danke es geht endlich, ich werde mich noch mit PHP beschäftige es ist das erste "Projekt" wo ich viel PhP brauche vielen vielen Dank
 
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…