Radio-Button Auswahl überprüfen.

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);
 
Lösung
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.
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.
 
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
 
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>";
}

?>
 
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
 
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'
 
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.
 
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.
 
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.
 
Lösung
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
 
Zurück