Boubou: Daten in eingabefelder klappen nicht

Hallo alle zusammen hab da ein kleines Problem ich habe Inputfelder. Aus der DAtenbank heraus tut er die Daten in die Eingabefelder das klappt super.
So ich will aber nun wenn ich in den Eingabefeldern zb den Namen ändere auf Speichern klicke, dass er das auch in die Datenbank speichert macht er aber nicht. Hier der Code

if(isset($submit)) // Der Submitbutton ist schon da
{

$Anrede=$_POST['Anrede'];
 $Name=$_POST['Name'];
 $Vorname=$_POST['Vorname'];
 $Email=$_POST['EMail'];
 $ID=$_POST['Personalnr'];

Hier der MySQL Befehl:

$update= "Update tabelle SET Anrede ='$Anrede', Name = '$Name',
 Vorname = '$Vorname', EMail = '$Email',
 Personalnr = '$ID' WHERE Personalnr`= '$ID' ";

if (mysql_query($update))
 {
 echo("<script type="text/javascript">
             window.opener.location.reload();self.close();</script>");
 }

  1. Hellihello

    versuch doch schrittweise zu testen.

    if(isset($submit)) // Der Submitbutton ist schon da

    aha, wo ist denn $sumit = $_POST["submit"] und ist der Wert auch "true" nach Typenkonvertierung?

    Dank und Gruß,

    frankx

    --
    tryin to multitain  - Globus = Planet != Welt
    1. Hello,

      versuch doch schrittweise zu testen.

      if(isset($submit)) // Der Submitbutton ist schon da

      aha, wo ist denn $sumit = $_POST["submit"] und ist der Wert auch "true" nach Typenkonvertierung?

      Wäre ungewöhnlich, einen Absendebutton mit "0" zu beschriften, aber nicht unmöglich.
      Es könnte ich schließlich um einen "Taschenrechner" handeln ;-))

      Die Frage ist durchaus berechtigt. Die automatische Typkonvertierung und Validierung in PHP schickt einen manchmal schon in die Wüste...

      Liebe Grüße aus Syburg bei Dortmund

      Tom vom Berg

      --
      Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
      1. Hellihello Tom,

        Wäre ungewöhnlich, einen Absendebutton mit "0" zu beschriften, aber nicht unmöglich.

        <button name="submit" value="">schickmichmitnull</button>

        ?

        Fehlersuche issich hartes Brot und nicht selten muss man da suchen, wo mans nicht vermutet hätte?

        Die Frage ist durchaus berechtigt. Die automatische Typkonvertierung und Validierung in PHP schickt einen manchmal schon in die Wüste...

        Dank und Gruß,

        frankx

        --
        tryin to multitain  - Globus = Planet != Welt
        1. Hello frankx,

          <button name="submit" value="">schickmichmitnull</button>

          Klar, das das kam. Ich habe es ja provoziert ;-)

          Aber Du hast selbstverständlich Recht. Das ist der zweite Fall von wieviel?

          NULL, 0, ' ', '', Parameter gar nicht vorhanden, ...
                    ^
                    |
                    +--- wie war das?
                         Wie lang ist $_POST['string'],
                         wenn <input name="string" value="   " />

          Liebe Grüße aus Syburg bei Dortmund

          Tom vom Berg

          --
          Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
  2. Hallo,

    So ich will aber nun wenn ich in den Eingabefeldern zb den Namen ändere auf Speichern klicke, dass er das auch in die Datenbank speichert macht er aber nicht. Hier der Code

    if(isset($submit)) // Der Submitbutton ist schon da

    Woher denn? Ebenfalls mit dem überflüssigen und gefährlichen Umkopieren oder weil Du auf (hoffentlich nicht mehr) vorhandenes register_globals = on setzt?

    {

    $Anrede=$_POST['Anrede'];
    $Name=$_POST['Name'];
    $Vorname=$_POST['Vorname'];
    $Email=$_POST['EMail'];
    $ID=$_POST['Personalnr'];

    Überflüssiges und gefährliches Umkopieren. Die Herkunft der Daten wird verschleiert. Weg damit!

    Hier der MySQL Befehl:

    $update= "Update tabelle SET Anrede ='$Anrede', Name = '$Name',
    Vorname = '$Vorname', EMail = '$Email',
    Personalnr = '$ID' WHERE Personalnr`= '$ID' ";

    Ja klar. Völlig fehlerhaft. Offen für SQL-Injektion. Unfähig mit Namen wie O'Brien umgehen zu können - es sei denn, man verläßt sich auf das veraltete (und dämliche) PHP-Feature Magic Quotes.

    Wenn man noch auf die veralteten mysql_*-Funktionen setzt, dann sollte man

    a) ermitteln, ob die Magic Quotes aktiviert sind.
       Wenn ja, deren Auswirkungen rückgängig machen.
       (und zwar ein einziges Mal, gleich zu Skriptbeginn), damit ab PHP 6, wenn
       es dieses Feature nicht mehr gibt, das Skript leicht anzupassen ist.

    b) Beim Zusammensetzen der SQL-Anweisung mysql_real_escape_string auf die
       Eingabedaten anwenden.

    Besser wäre es, auf mysqli und Prepared Statements umzusteigen.

    Freundliche Grüße

    Vinzenz

    1. Hello,

      Wenn man noch auf die veralteten mysql_*-Funktionen setzt, dann sollte man

      a) ermitteln, ob die Magic Quotes aktiviert sind.
         Wenn ja, deren Auswirkungen rückgängig machen.
         (und zwar ein einziges Mal, gleich zu Skriptbeginn), damit ab PHP 6, wenn
         es dieses Feature nicht mehr gibt, das Skript leicht anzupassen ist.

      Das klingt verwirrend.

      Müssen die Magic Quotes nicht auf jeden Fall rückgängig gemacht werden, wenn ich meine Daten im Rohformat in der Datenbank speichern will? Das hat doch nichts mit mysqli_* oder mysql_* Funktionen zu tun und auch nichts mit prepared Statements oder Textschnittstelle?!? (<-Verwirrung)

      Liebe Grüße aus Syburg bei Dortmund

      Tom vom Berg

      --
      Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
      1. Hoi!

        Das klingt verwirrend.
        Müssen die Magic Quotes nicht auf jeden Fall rückgängig gemacht werden, wenn ich meine Daten im Rohformat in der Datenbank speichern will? Das hat doch nichts mit mysqli_* oder mysql_* Funktionen zu tun und auch nichts mit prepared Statements oder Textschnittstelle?!? (<-Verwirrung)

        Bin Perlianer und habe von PHP keine Ahnung, aber das dürfte hierbei irrelevant sein:
        Sobald Du das "Statement prepared" hast, ist eine Betrachtung der potentiell bösen Daten hierbei hinfällig. Du kannst nur noch "Data injecten", "SQL injection" ausgeschlossen...
        Einer der strukturellen Vorteilen von prepared Statements...

        Grüße

        1. echo $begrüßung;

          Das klingt verwirrend.
          Müssen die Magic Quotes nicht auf jeden Fall rückgängig gemacht werden, wenn ich meine Daten im Rohformat in der Datenbank speichern will? Das hat doch nichts mit mysqli_* oder mysql_* Funktionen zu tun und auch nichts mit prepared Statements oder Textschnittstelle?!? (<-Verwirrung)
          Bin Perlianer und habe von PHP keine Ahnung, [...]

          Es geht hierbei um das Thema Magic Quotes, ein Feature PHPs, das für sämtliche GET-, POST- und Cookie-Daten bereits die Zeichen ' (single-quote), " (double quote) und \ (backslash) mit einem Backslash versieht und das NUL-Byte zu \0 macht. Diese Verunstaltung, so dieses Feature nicht deaktiviert ist, muss generell rückgängig gemacht werden, nicht nur für den Fall dass man die alten mysql_*-Funktionen verwendet, sondern auch für die moderneren mysqli_*-Funktionen verwendet, egal, ob man da Prepared Statements verwendet oder mit mysqli_real_escape_string() arbeitet. Das war von Vinzenz nur unglücklich formuliert.

          echo "$verabschiedung $name";

          1. Moin!

            Es geht hierbei um das Thema Magic Quotes, ein Feature PHPs,

            Sorry, dann halte ich als Perler bei der nächsten PHP Frage doch besser mal die Fresse ;-)

            Grüße