Paul Franke: SQL-Statement durchführen

Guten Abend liebe SelfHTML User,

ich habe folgende Frage:
Ich habe eine Datei (mitarbeiter_edit.php), diese Datei, gibt alle zu ändernden Werte des Mitarbeiters an die Datei (mitarbeiter_edit_db.php) weiter.
Die Weitergabe funktioniert problemlos.
Nu n möchte ich die Werte in die Datenbank schreiben. (Der Mitarbeiter existiert bereits, also benutze ich die SQl Funktion "UPDATE").
Nun frage ich mich warum dies nicht klappt ?

Quelltext der mitarbeiter_edit_db.php:

<html>

<head>

<title>Besser Karstadt - Zeiterfassung</title>
<link rel="stylesheet" href="css/styles.css" type="text/css">
<link rel="SHORTCUT ICON" href="img/karstadt_logo.gif">

<meta name="author" content="AG03_OSZIMT">

</head>

<body>

<div id="banner">
<img src="img/karstadt_logo.gif" alt="Karstadt-Logo">
</div>

<div id="navi">
<p><img src="img/verwaltung_logo.jpg" alt="" class="bildnavi"><a href="verwaltung.html">Verwaltung</a></p>
<p><img src="img/mitarbeiter_logo.jpg" alt="" class="bildnavi"><a href="mitarbeiter.html">Mitarbeiter</a></p>
</div>

<div id="inhalt">
<?php

//Passwörter des DB Links, gebe ich im Forum nicht an.

$name = $_POST['NAME'];
$vorname = $_POST['VORNAME'];
$teamnummer = $_POST['TEAMNUMMER'];
$filiale = $_POST['FILIALE'];
$sollstunden = $_POST['SOLLSTUNDEN'];
$id = $_POST['ID'];

$dblink = @mysql_connect($host,$user,$password);
   if (!$dblink) die ("Verbindung zur Datenbank ist nicht möglich.".mysql_error());

@mysql_select_db($db) or die ("Auswahl der DB '$db' nicht möglich.".mysql_error());

$sql      = 'UPDATE T_Mitarbeiter SET Name='.$name.',Vorname='.$vorname.',Teamnummer='.$teamnummer.',Filiale='.$filiale.',Sollstunden='.$sollstunden.' WHERE Mitarbeiter_ID ='.$id.' ';
    if (! @mysql_query($sql,$dblink))
    {
        echo mysql_error()."<br>";
    }

else{
    echo"Mitarbeiter wurde erfolgreich bearbeitet !";
    @mysql_close ($dblink);
    }

?>

</div>

<div id="unten">
<img src="img/oszimt-logo.gif" alt=""> © FS491 - AG03
</div>

</body>
</html>

Danke im voraus.

  1. Hallo Paul,

    <title>Besser Karstadt - Zeiterfassung</title>

    Die folgenden Zeilen sind meiner Meinung nach überflüssig :-)

    $name = $_POST['NAME'];
    $vorname = $_POST['VORNAME'];
    $teamnummer = $_POST['TEAMNUMMER'];
    $filiale = $_POST['FILIALE'];
    $sollstunden = $_POST['SOLLSTUNDEN'];
    $id = $_POST['ID'];

    [...]

    $sql      = 'UPDATE T_Mitarbeiter SET Name='.$name.',Vorname='.$vorname.',Teamnummer='.$teamnummer.',Filiale='.$filiale.',Sollstunden='.$sollstunden.' WHERE Mitarbeiter_ID ='.$id.' ';

    Erstens solltest Du die Eingabedaten mit mysql_real_escape_string() behandeln, dabei in Abhängigkeit von magic_quotes_gpc vorher gegebenenfalls mit stripslashes()  die nicht immer ausreichenden, lästigen, miserablen automatischen Magic Quotes entfernen.

    Zweitens solltest Du Dir den Inhalt Deiner Variablen $sql anschauen. Deinem Statement fehlen diverse Anführungszeichen. Kein Wunder, dass MySQL nicht mag. Im Handbuchkapitel Strings kannst Du nachlesen, was MySQL als Zeichenketten ansieht. Namen und Vornamen sind sicher Zeichenketten, über den Rest Deiner Felder müsste ich spekulieren.

    Eine Frage zum Schluß:
    Bist Du sicher, dass Deine Fehlerbehandlung der Aufgabenstellung gerecht wird?

    Freundliche Grüße

    Vinzenz

    1. Hi Danke

      Eine Frage zum Schluß:
      Bist Du sicher, dass Deine Fehlerbehandlung der Aufgabenstellung gerecht wird?

      Aber wie meinst du die letzte Frage ?

      Den Rest deiner Hilfe werde ich mich erstmal belesen, danke  ;)

      Paul

      1. Mmmh,

        Sorry iaber irgenwie finde ich die Lösung trotz deiner brillianten Tipps nicht heraus ; (.

        Könntest du mir noch irgendwelche Tipps geben ?

        Ich will doch nur einen Datensatz in der DB ändern.

        Paul

        1. Danke,

          nach langem hin und  her habeoich es hinbekommen !!

          Der SQl Befehl musste so,lauten:

          $sql      = "UPDATE T_Mitarbeiter SET Name='$name',Vorname='$vorname',Teamnummer='$teamnummer',Filiale='$filiale',Sollstunden='$sollstunden' WHERE Mitarbeiter_ID ='$id'";

          Gute Nacht
          Paul