Stephan: Daten in SQL updaten

Hallo!

Ich versuche mich seit ein paar Tagen an SQL/PHP.
Jetzt habe ich es schonmal hinbekommen über PHP Daten in meine SQL-Datenbank zu aktualisieren. Leider nur wenn ich die Daten vorher in das Script geschrieben habe. Jetzt wollte ich das mit einem Formular lösen, dass ich die Werte immer neu eingeben kann ohne den Code zu verändern.

Siehe hier:

<body>
<?
 /* Verbinden */
 mysql_connect("***", "***", "***");

/* Datenbank auswählen */
 mysql_select_db("hpemc");

if (isset($submit)) {

$sql = "update emc_tv set name = '$name'";
 $sql = "update emc_tv set datei = '$datei'";
 mysql_query($sql) or die(mysql_error());

}

?>

<form action="manage.php" method="post">
 <input type="text" name="name"><br>
 <input type="text" name="datei"><br>
 <input type="submit" name="submit" value="Abschicken">
</form>

</body>
</html>

Leider weiß ich allein nicht mehr weiter. Über Hilfe währe ich sehr Dankbar.

Gruß Stephan.

  1. Hallo!

    $sql = "update emc_tv set name = '$name'";
    $sql = "update emc_tv set datei = '$datei'";

    Ich bin mir nicht sicher, aber spontan würde ich dir empfehlen das ganze in eine anweisung zu packen!!!
    -> $sql = "UPDATE emc_tv SET name = '$name', datei = '$datei'";

    MfG
    kphaber321

    --
    sh:( fu:| ch:? rl:? br:$ n4:~ ie:| mo:| va:| de:] zu:} fl:| js:) ss:| ls:[
    http://www.peter.in-berlin.de/projekte/selfcode/?code=sh%3A%28+fu%3A%7C+ch%3A%3F+rl%3A%3F+br%3A%24+n4%3A%7E+ie%3A%7C+mo%3A%7C+va%3A%7C+de%3A%5D+zu%3A%7D+fl%3A%7C+js%3A%29+ss%3A%7C+ls%3A%5B+
    1. -> $sql = "UPDATE emc_tv SET name = '$name', datei = '$datei'";

      Danke erstmal für die schnelle Antwort!

      Leider hat sich das Problem damit noch nicht lösen können.
      Ich hatte das auch schon mit "insert into..." probiert. Das ging auch nicht.

      MfG Stephan

  2. Hello,

    fang mal vorne an :-)

    Bau Dir ein "Affenformular" (Mehr info hier im Forumsarciv unter dem Stichwort)
    Schritt 1:
    versuche, die Datren dem User so oft wieder vorzulegen, bis sie Dir gefallen.

    --------------------------------------------------
    <?php    ### affe1.php ###
    $name = '';
    $datei = '';

    if (isset($_POST['kontrolle']))
    {
      $name = $_POST['name'];
      $datei = $_POST['datei'];
    }

    ?>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <HTML>
    <HEAD>
      <TITLE>Affenformular Stufe 1</TITLE>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
      <META NAME="Robots" CONTENT="Index,Follow">

    <style type="text/css">
        html,  body
        {
          height:100%
          width:100%;
          font-family:century gothic, tahoma, arial,sans-serif;
        }
      </style>
    </HEAD>

    <body>

    <form action="<?echo $_SERVER['PHP_SELF']; ?>" method="post">
        <input type="text" name="name" value="<?php echo $name; ?>" /><br />
        <input type="text" name="datei" value="<?php echo $datei; ?>" /><br>
        <input type="submit" name="kontrolle" value="Kontrolle">
        <input type="submit" name="eintragen" value="Eintragen">
      </form>

    </body>
    </html>

    Das ist jetzt die minimalistische Version, die noch viele Lücken und Fehler entthält.
    Die solltest Du aber durch intensive Tests selber herausfinden.

    Probiere einfach mal, was alles ao passiert, wenn Du z.B. Werte mit Häkchen einsetzt, oder Backslashes schreibst, usw.

    Wenn die gefunden Fehler beseitigt sind, dann baue eine Textarea ein.

    Harzliche Grüße vom Berg
    http://bergpost.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

  3. Hi,

    Bei fehlenden Sicherheitseinstellungen geht das so, aber normalerweise musst du ...

    if (isset($submit)) {

    $_POST['submit']

    $sql = "update emc_tv set name = '$name'";

    $_POST['name']

    $sql = "update emc_tv set datei = '$datei'";

    und $_POST['datei']
    verwenden, um auf Daten, die per POST-Methode an das Script verschickt wurden zugreifen zu können.

    Außerdem überschreibst du hier das erste $sql mit dem zweiten UPDATE-Statement, ohne das erste vorher auszuführen. Weiterhin hast du keine WHERE-Klausel in dem UPDATE-Befehl, so dass jedesmal sämtliche Datensätze überschrieben werden.

    Gerade als Anfänger wäre es noch nützlich, wenn du dir mit error_reporting Fehlermeldungen anzeigen lässt.

    Wenn du das ganze mal einigermaßen beherrscht solltest du dir noch die Funktion mysql_real_escape_string() anschauen und auf die zu verarbeitenden Formulardaten (hier $_POST['name'] und $_POST['datei']) anwenden, damit falsche Eingaben in das Formular keinen Schaden anrichten können (Stichwort: SQL-Injektion).

    mfG,
    steckl

    1. Ui, da hab ich ja noch was vor ;).

      Ja es gibt in der Tabelle halt nur einen Eintrag bei datei und bei name. Die sollen immer überschrieben werden.
      Werde deinen Rat befolgen und mir das ganze mal anschauen.
      Danke!

      MfG Stephan