تسجيل الدخول | التسجيل | الأسئلة المتكررة
Anonymous

Daten in einer mySQL-Tabelle mittels PHP aktualisieren

+ إضافة رد

3 مشاركة صفحة 1 من 1


Daten in einer mySQL-Tabelle mittels PHP aktualisieren

بواسطة fwp » الأحد يونيو 22, 2014 8:42 pm

Hallo,

ich habe folgendes Problem.

Es gibt eine Tabelle in einer mySQL-Datenbank, die mittels PHP ausgelesen und auf einer Webseite als Tabelle angezeigt wird. Nun soll eine Spalte der Tabelle über die Webseite aktualisiert werden können.

Dazu habe ich die Tabellenanzeige in ein Formular umgewandelt, in dem die gewünschte Tabelle als Input-Feld dargestellt wird und einen Button zum Abschicken des Formulars erstellt.

Leider funktioniert es nicht. Die Seite wird aktualisiert angezeigt, allerdings stehen dann wieder die alten Werte in den Eingabefeldern und die Datenbank wurde nicht aktualisiert. Auch wird der Kontrollstring in der Abfrage
CODE: تحديد الكل
    if (isset($_POST["gespeichert"]))

nicht ausgegeben. Ich weiß, dass hier auch keine SQL-Injection-Behandlung stattfindet, aber die kann auch keine Ursache dafür sein, dass beim Klick auf den Speichern-Button nichts passiert.

CODE: تحديد الكل
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
   <link rel="stylesheet" type="text/css" href="db1112.css">
   <meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<form name="upd" action="Auflistung3.php" method="post" >
<?php
   /* Verbindung aufnehmen und Datenbank auswählen */
   include "db1112.inc.php";
   if(!isset($LKreis))
      {
      $LKreis = $_POST["LKreis"];
      }
   if(!isset($LKreis))
      {
      $LKreis = $_GET["LKreis"];
      }

   if(!isset($Hierarchie))
      {
      $Hierarchie = $_POST["Hierarchie"];
      }
   if(!isset($Hierarchie))
      {
      $Hierarchie = $_GET["Hierarchie"];
      }
   echo "<input type='hidden' name='LKreis'     value='".$LKreis."' />";
   echo "<input type='hidden' name='Hierarchie' value='".$Hierarchie."' />";
   $sql1   = "  SELECT a.Landkreis, MIN(a.PLZ) PLZ, a.Ort, SUM(a.Anzahl) Anzahl, Zaehlerstart, Normiert ".
             "    FROM (   SELECT Landkreis, PLZ, Ort, IFNULL(Anzahl, 0) Anzahl, Ort_Norm ".
             "               FROM (   SELECT Landkreis, PLZ, Ort, Anzahl, Ort_Norm ".
             "                          FROM PLZ_Orte ";
   if($Hierarchie=="Kreis")
      {
         $sql1   = $sql1.
             "                         WHERE Landkreis_Norm LIKE UPPER('%" . TRIM($LKreis) . "%') ";
      }
   if($Hierarchie=="Ort")
      {
         $sql1   = $sql1.
             "                         WHERE Ort_Norm LIKE UPPER('%" . TRIM($LKreis) . "%') ";
      }
   if($Hierarchie=="Stadt")
      {
         $sql1   = $sql1.
             "                         WHERE Ort_Norm LIKE UPPER('%" . TRIM($LKreis) . "%') ".
             "                           AND Kreisfrei = 1 ";
      }
   if($Hierarchie=="PLZ")
      {
         $sql1   = $sql1.
             "                         WHERE PLZ LIKE UPPER('" . TRIM($LKreis) . "%') ";
      }
   $sql1   = $sql1.
             "                    ) Kombi ".
             "         ) a ".
             "LEFT OUTER JOIN Suchorte  ON Suchorte.Normiert     LIKE a.Ort_Norm ".
             "GROUP BY a.Landkreis, a.Ort ".
             "ORDER BY a.PLZ, a.Ort";
   /*
   echo $sql1;
   */

   $res1   = mysql_query($sql1);

   echo "<table border='1' cellspacing='0' cellpadding='3' width='875px' class='schrift_mi' >";
   echo "  <tr> <th width='150'> <font class='name_gr' >Landkreis</font></th>";
   echo "       <th width='50'><font class='name_gr' >PLZ</font></th>";
   echo "       <th width='200'><font class='name_gr' >Ort</font></th>";
   echo "       <th width='50'><font class='name_gr'>Aufrufe</font></th>";
   echo "       <th width='50'><font class='name_gr'>Plus</font></th>";
   echo "       <th width='50'><font class='name_gr'>Gesamt</font></th>";
   echo "  </tr>";
   while ($dsatz = mysql_fetch_array($res1))
   {
     echo "<tr>";
     echo "  <td>              <font class='ort_kl' >" . $dsatz["Landkreis"] . "</font></td>";
     echo "  <td align='right'><font class='ort_kl' >" . $dsatz["PLZ"] . "</font></td>";
     echo "  <td>              <font class='ort_kl' >" . $dsatz["Ort"] . "</font></td>";
     echo "  <td align='right'><font class='ort_kl' >" . $dsatz["Anzahl"] . "</font></td>";
     echo "  <td align='right'><font class='ort_kl' ><input name='ZStart' value='" . $dsatz["Zaehlerstart"] . "'></font></td>";
     echo "  <td align='right'><font class='ort_kl' >" . ($dsatz["Anzahl"] + $dsatz["Zaehlerstart"]) . "</font></td>";
     echo "</tr>";
   }
   echo "</table>";
   echo "<input type='button' name='gepeichert' value='Speichern'>";

   if (isset($_POST["gespeichert"]))
   {
     echo $sql2 . "<br>";
     echo "Hierarchie ".$Hierarchie."<br>"."Wert       ".$LKreis."<br>";
     $sql2 = "UPDATE Suchorte SET Zaehlerstart = " . $dsatz["Zaehlerstart"] . " WHERE Normiert = '" . $dsatz["Normiert"] . "'";
     $res2 = mysql_query($sql2);
   }
?>
</form>
</body>
</html>
صورة العضو الشخصية

fwp

  • مشاركات: 2
  • اشترك في: الأحد يونيو 22, 2014 7:50 pm

Re: Daten in einer mySQL-Tabelle mittels PHP aktualisieren

بواسطة XainPro » الثلاثاء يونيو 24, 2014 6:02 am

echo "<input type='button' name='gepeichert' value='Speichern'>";

if (isset($_POST["gespeichert"]))

spelling mistake

gespeichert
صورة العضو الشخصية

XainPro

  • مشاركات: 3933
  • اشترك في: الجمعة فبراير 17, 2012 8:10 pm

Re: Daten in einer mySQL-Tabelle mittels PHP aktualisieren

بواسطة fwp » الأربعاء يونيو 25, 2014 8:54 pm

Danke für den Hinweis,

ist mir gar nicht aufgefallen, dass ich das beim Übertragen auf die Forums-Seite nicht korrigiert habe.

Allerdings gibt es bei dieser Anordnungsreihenfolge noch ein Problem, was ich gedanklich noch nicht richtig einordnen kann.

Wenn ich die "Speichern-Schleife" am Ende der Seite habe, so wie in obigem Quellcode platziert, dann wird beim Betätigen des Speichern-Buttons kurzfristig der Gesamtwert der korrekten Summe aus den Spalten Aufrufe und Plus in der Spalte Gesamt angezeigt. Anschließend wird die gesamte Seite neu aufgebaut und es werden wieder die alten Werte angezeigt (Spalte Plus hat wieder den Wert VOR dem Eintragen eines neuen Wertes und anschließendem Speichern). Öffne ich dann einen anderen Browser (z. B. IE, wenn im ersten Fall FireFox das Skript "ausgeführt" hat; das gilt auch wenn als zweiter Browser FireFox benutzt wird, wenn das Skript im IE ausgeführt wurde) und verbinde mich dann direkt auf die Datenbank, dann stehen die neuen Werte in der Datenbank und werden auch korrekt angezeigt, wenn ich in dem anderen Browser dann die SQL-Abfrage ausführe.

Platziere ich dagegen die "Speichern-Schleife" direkt am Anfang vor dem Ausführen der SQL-Abfrage, dann wird beim Betätigen des Speichern-Buttons der neue Wert ebenfalls in die Datenbank geschrieben und gleichzeitig zeigt die neu aufgebaute Seite auch an den aktualisierten Stellen die korrekten Werte an.

Ist dieses Verhalten so gewollt, oder habe ich beim Erstellen des PHP-Skript-Codes etwas nicht korrekt beachtet.

Hier der entsprechende Abschnitt aus dem Code, wie er nach dem Speichern der Änderungen in der Datenbank auch die aktualisierten Werte in der neu erstellten Seite anzeigt:
CODE: تحديد الكل
...
...
   if(!isset($Hierarchie))
      {
      $Hierarchie = $_POST["Hierarchie"];
      }
   if(!isset($Hierarchie))
      {
      $Hierarchie = $_GET["Hierarchie"];
      }
   echo "<input type='hidden' name='LKreis'     value='".$LKreis."' />";
   echo "<input type='hidden' name='Hierarchie' value='".$Hierarchie."' />";
   foreach($_POST['ZStart'] as $index => $value)
   {
      $sql2 = "UPDATE Suchorte SET Zaehlerstart = '".mysql_real_escape_string($_POST["ZStart"][$index])."' WHERE Normiert='".mysql_real_escape_string($_POST["Normiert"][$index])."'";
      /*
      echo $sql2 . "<br>";
      */
      $res2 =  mysql_query($sql2);
   };
   /*
   echo "Hierarchie ".$Hierarchie."<br>"."Wert       ".$LKreis."<br>";
   */
   $sql1   = "  SELECT a.Landkreis, MIN(a.PLZ) PLZ, a.Ort, SUM(a.Anzahl) Anzahl, Zaehlerstart, Normiert ".
             "    FROM (   SELECT Landkreis, PLZ, Ort, IFNULL(Anzahl, 0) Anzahl, Ort_Norm ".
             "               FROM (   SELECT Landkreis, PLZ, Ort, Anzahl, Ort_Norm ".
             "                          FROM PLZ_Orte ";
   /*
   echo $sql1."<br>"."$Hierarchie=".$Hierarchie."<br>";
   */
   if($Hierarchie=="Kreis")
      {
         $sql1   = $sql1.
             "                         WHERE Landkreis_Norm LIKE UPPER('%" . TRIM($LKreis) . "%') ";
      }
...
...
صورة العضو الشخصية

fwp

  • مشاركات: 2
  • اشترك في: الأحد يونيو 22, 2014 7:50 pm


+ إضافة رد

صفحة 1 من 1