Datensatzänderung mit PHP funktioiniert nicht

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datensatzänderung mit PHP funktioiniert nicht

    Hallo, ich habe ein PHP Skript, dass Daten in einer Datenbank ändern soll, nachdem ich den Datensatz zurvor in einer Tabelle ausgewählt habe. Leider funktioniert es nicht ganz, wenn ich im Datensatz bin und dort auf ändern klicke wird immer angezeigt "Der Datensatz wurde nicht geändert". Hat jemand eine Idee wo es dran liegen könnte?

    Hier die 3 Skripte:

    PHP Code:
    <html>
    <body>
    Wählen Sie aus, welcher Datensatz geändert werden soll:<p>
    <form action = "change_b.php" method = "post">
    <?php
       $db 
    mysql_connect("localhost""root""root");
       
    $res mysql_db_query("flatbed_rate",
       
    "select * from mileage");
       
    $num mysql_num_rows($res);  
       
       
    // Tabellenbeginn
       
    echo "<table border>";

       
    // Überschrift
       
    echo "<tr><td>Auswahl</td><td>Customer Name</td>";
       echo 
    "<td>Postal Code</td> <td>State</td>";
       echo 
    "<td>Country</td> <td>OZK</td>";
       echo 
    "<td>LAC</td> <td>MGT</td>";
       echo 
    "<td>HCK</td> <td>CHS</td></tr>";


       for (
    $i=0$i<$num$i++)
       {
          
    $Customer_No mysql_result($res$i"Customer_No");
          
    $Customer_Name mysql_result($res$i"Customer_Name");
          
    $ZIP mysql_result($res$i"ZIP");
          
    $State mysql_result($res$i"State");
          
    $Country mysql_result($res$i"Country");
          
    $OZK mysql_result($res$i"OZK");      
          
    $LAC mysql_result($res$i"LAC");      
          
    $MGT mysql_result($res$i"MGT");      
          
    $HCK mysql_result($res$i"HCK");      
          
    $CHS mysql_result($res$i"CHS");      
          
          

          
    // Tabellenzeile mit -zellen
          
    echo "<tr> <td><input type='radio' name='auswahl'";
          echo 
    " value='$Customer_No'></td> <td>$Customer_Name</td> <td>$ZIP</td>";
          echo 
    "<td>$State</td> <td>$Country</td> <td>$OZK</td>";
          echo 
    "<td>$LAC</td><td>$MGT</td><td>$HCK</td><td>$CHS</td></tr>";
       }

       
    // Tabellenende
       
    echo "</table>";

       
    mysql_close($db);
    ?>
       <p>
       <input type="submit" value="Show Dataset">
    </form>
    </body>
    </html>
    ---------------------------------------------------------------------------
    PHP Code:

    <html>
    <body>
    <?php
    if ($auswahl)
    {
       
    $db mysql_connect("localhost""root""root");
       
    $sqlab "select * from mileage where";
       
    $sqlab .= " Customer_No = '$auswahl'";

       
    $res mysql_db_query("flatbed_rate"$sqlab);

       
    $alt_Customer_Name mysql_result($res0"Customer_Name");
       
    $alt_ZIP mysql_result($res0"ZIP");
       
    $alt_State mysql_result($res0"State");
       
    $alt_Country mysql_result($res0"Country");
       
    $alt_OZK mysql_result($res0"OZK");      
       
    $alt_LAC mysql_result($res0"LAC");      
       
    $alt_MGT mysql_result($res0"MGT");      
       
    $alt_HCK mysql_result($res0"HCK");      
       
    $alt_CHS mysql_result($res0"CHS");      
        
      
       echo 
    "Führen Sie die Änderungen durch,<p>";
       echo 
    "betätigen Sie anschließend den Button<p>";

       echo 
    "<form action = 'change_c.php' ";
       echo 
    " method = 'post'>";

       echo 
    "<input name='neu_Customer_Name' value='$alt_Customer_Name'> ";
       echo 
    " Customer Name<p>";
       echo 
    "<input name='neu_ZIP' value='$alt_ZIP'>";
       echo 
    " Postal Code<p>";
       echo 
    "<input name='neu_State' value='$alt_State'>";
       echo 
    " State<p>";
       echo 
    "<input name='neu_Country' value='$alt_Country'>";
       echo 
    " Country<p>";
       echo 
    "<input name='neu_OZK' value='$alt_OZK'>";
       echo 
    " OZK<p>";
       echo 
    "<input name='neu_LAC' value='$alt_LAC'>";
       echo 
    " LAC<p>";
       echo 
    "<input name='neu_MGT' value='$alt_MGT'>";
       echo 
    " MGT<p>";
       echo 
    "<input name='neu_HCK' value='$alt_HCK'>";
       echo 
    " HCK<p>";
       echo 
    "<input name='neu_CHS' value='$alt_CHS'>";
       echo 
    " CHS<p>";
       
       
       echo 
    "<input type='hidden' name='original_Customer_No' ";
       echo 
    " value='$auswahl'>";

       echo 
    "<input type='submit' ";
       echo 
    " value='Änderungen in DB speichern'><p>";
       echo 
    "<input type='reset'>";
       echo 
    "</form>";

       
    mysql_close($db);
    }

    else
       echo 
    "Es wurde kein Datensatz ausgewählt<p>";
    ?>
    </body>
    </html>
    -------------------------------------------------------------------

    PHP Code:
    <html>
    <body>
    <?php
       $db 
    mysql_connect("localhost""root""root");

       
    $sqlab "update mileage set Customer_Name = '$neu_Customer_Name',";
       
    $sqlab .= "ZIP = '$neu_ZIP',";
       
    $sqlab .= "State = '$neu_State',";
       
    $sqlab .= "Country = '$neu_Country'";
       
    $sqlab .= "OZK = '$neu_OZK'";
       
    $sqlab .= "LAC = '$neu_LAC'";
       
    $sqlab .= "MGT = '$neu_MGT'";   
       
    $sqlab .= "HCK = '$neu_HCK'";
       
    $sqlab .= "CHS = '$neu_CHS'";
       
    $sqlab .= "where Customer_No == '$original_Customer_No'";

       
    mysql_db_query("flatbed_rate"$sqlab);

       
    $num mysql_affected_rows();
       if (
    $num>0)
          echo 
    "Der Datensatz wurde geändert<p>";
       else
          echo 
    "Der Datensatz wurde nicht geändert<p>";

       
    mysql_close($db);
    ?>
    Zurück zur <a href="change_a.php">Auswahl</a>

    </body>
    </html>

  • #2
    PHP Code:
    $sqlab .= "where Customer_No == '$original_Customer_No'"
    Syntaxfehler!
    Simploo CMS - das einfache Webseiten-Bearbeitungsprogramm

    Comment


    • #3
      Danke, aber daran lag es leider nicht.

      Comment


      • #4
        poste mal die Fehlermeldung:

        PHP Code:
        mysql_db_query("flatbed_rate"$sqlab) or die(mysql_error()); 

        Comment


        • #5
          Die Fehlermeldung lautet:
          You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OZK = '5'LAC = '5'MGT = '5'HCK = '5'CHS = '5'where Customer_No = '5'' at line 1


          (Die 5en stehen überall für die Testeinträge)

          Comment


          • #6
            Du solltest schleunigst mit Debugging anfangen. Also hinter jeder mysql_query oder sonstige MySql Fkt mal
            PHP Code:
            mysql_db_query() OR die(mysql_error().'<br />'.$sqlab); 
            schreiben und dein Error Reporting schärfer einstellen
            PHP Code:
            error_reporting(E_ALL); 
            als erste Zeile deines Codes.
            Und Vergleiche werden in Mysql mit = und nicht mit == gemacht.

            Gruss

            tobi

            p.s. ich würde dir allgemein empfehlen mal ins Manual zum Thema MySql reinzuschmöckern. Wieso verwendest du eigentlich mysql_num_rows() und eine for Schleife ?
            PHP Code:
            $sql "SELECT * from table";
            $res mysql_query($sql);
            $ret = array();
            while(
            $re=mysql_fetch_array($res,MYSQL_ASSOC){
              
            $ret[] = $re;

            p.s.2. Kennst du && zum Verknüpfen mehrer Bedingungen ???
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Comment


            • #7
              Hallo Tobi,

              ich habe jetzt das debugging mit meinen queeries und funktionen gemacht. Leider kommt keine andere Fehlermeldung. Immer du die eine, die ich schon gepostet habe.


              Zu deiner Frage:
              Ich habe mysql_num_rows() und eine for Schleife verwendet, weil es so in meinem Buch drin stand (ähnliches Beispiel).

              Gruß,
              Kirsten

              Comment


              • #8
                Zu deiner Fehlermeldung siehe mein p.s.2 und ab und zu ein Leerzeichen ist auch nicht schlecht

                Gruss

                tobi
                Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                Comment


                • #9
                  PHP Code:
                  $sqlab "update mileage set Customer_Name = '$neu_Customer_Name',";
                     
                  $sqlab .= "ZIP = '$neu_ZIP',";
                     
                  $sqlab .= "State = '$neu_State',";
                     
                  $sqlab .= "Country = '$neu_Country'";
                     
                  $sqlab .= "OZK = '$neu_OZK'";
                     
                  $sqlab .= "LAC = '$neu_LAC'";
                     
                  $sqlab .= "MGT = '$neu_MGT'";   
                     
                  $sqlab .= "HCK = '$neu_HCK'";
                     
                  $sqlab .= "CHS = '$neu_CHS'";
                     
                  $sqlab .= "where Customer_No == '$original_Customer_No'"
                  $qlab mal komplett anzeigen lassen hätte gezeigt, dass ab der 3. Zuweisung das Komma fehlt.
                  Beispiel: $sqlab .= "Country = '$neu_Country'[COLOR=red],[/COLOR] ";
                  (lvorletzte und letzte natürlich ohne Komma)
                  Und ist man alt wie ein Kuh, lernt man immer noch dazu.
                  THX, LOL, ROFL & Co. -> Netzjargon auf Wikipedia

                  Comment


                  • #10
                    @Husti & Tobi

                    Vielen Dank für eure Hilfe. Es funktioniert jetzt.

                    Grüße,

                    Kirsten

                    Comment

                    Working...