Andreas: zeile in einer mySQL tabelle überschreiben (updaten)

hi leute,

bin noch anfänger und habe mir heute nen kleines newsscript zusammen gebastelt. läuft soweit ganz gut nur beim editieren da hängts noch! ich denke mal ihr könnt mir helfen! und zwar habe ich eine news.php in der gibt man die daten an. die news_add.php fügt diese daten dann hinzu:

$timestamp = time();

$news     = str_replace("\n","<br>",$news);

$insert  = "INSERT INTO ttl_news (title, time, quelle, userform, text)";
$insert .= "VALUES ('$titel', '$timestamp', '$quelle', '$userform', '$news')";
mysql_query($insert);

mit dem ändern der daten habe ich mir das so gedacht:
es gibt eine news_cha.php die das selber formular hat wie die news.php nur das die daten dann schon vorhanden sind, man sie eben nur noch editieren muss! man wird dann zu einer datei geleitet wenn man dieses fomrular abschickt, die news_cha_add.php heist! meine frage ist jetzt wie der obrige code nun aussehen muss, also:

$insert  = "INSERT INTO ttl_news (title, quelle, userform, text)";
$insert .= "VALUES ('$titel', '$quelle', '$userform', '$news')";
mysql_query($insert);

man hat mir was mit UPDATE gesagt etc. aber irgendwie hauts nicht hin!!

P.S. hab "time" bewust weg gelassen weil die zeit vom erstellen ja bei behalten werden soll!

lg andreas

  1. Kennst Du ein Tutorial?
    Du sollst erst suchen und dann fragen, das ist ein Fachforum und keine "ich habe mir da was gedacht" Plattform.
    Es gibt den Befehl update, das einfachste wäre Ihn an Stelle von INSERT zu benutzen.
    Und nun marsch ins Bettchen.
    TomIRL

    1. Hi,

      habe das erste mal dieses Forum benutzt und danke für das freundliche entgegenkommen!

      in diesem sinne lg Andreas

      1. Hi,

        habe das erste mal dieses Forum benutzt und danke für das freundliche entgegenkommen!

        Bitte bitte..
        Lesen bildet gucke mal was über der Forumsdatei steht bevor Du ein Posting absendest:

        Von allen hier Teilnehmenden werden HTML-Grundkenntnisse erwartet. Es wird erwartet, daß bei Problemen erst einmal in SELFHTML, im Kapitel Forumsarchiv oder in anderen Quellen nach einer Lösung gesucht wird.

        Zum Mitmachen im SELFHTML Forum gibt es einige grundsätzliche Verhaltensregeln. Diese Regeln sind in der Seite Forums-FAQ nachzulesen. Es wird erwartet, daß Forumsteilnehmer die Forums-FAQ kennen und die dort genannten Regeln einhalten.

        und schon findest Du Lösungen ohne Ende:
        http://forum.de.selfhtml.org/archiv/2004/2/72103/#m415184
        Oder vielleicht hier?
        http://dev.mysql.com/doc/mysql/de/UPDATE.html

        Sorry dir fehlen elementare Grundkenntnisse!
        Es ist ne ziemlich Zeitverschwendung Dir jeden Mist zu erklären, weil man sich solche Sachen am besten durch selbst ausprobieren anlernt.
        Dazu bist du offenbar aber nicht bereit, also wirst Du wohl oder übel eine kostenpflichtigen Support oder eine Schulung besuchen müßen.

        TomIRL

        1. $query = " UPDATE ttl_news
                SET title = '".$titel."'
                WHERE (id= '".$uid."')"
                LIMIT 1         ";

          $update = mysql_query($query) or die (mysql_error());

          nach den daten die ich nun habe, habe ich das zusammen gebastelt aber irgendwie wills net funtzen...

          Parse error: parse error, unexpected T_STRING in /home/www/web15/html/talklevel/admin/news_cha_add.php on line 36

          Limit 1 ist zeile 36 :-/

          1. Hello,

            $query = " UPDATE ttl_news
                  SET title = '$titel'
                  WHERE id= '$uid'
                  LIMIT 1         ";

            Wobei $title und $uid vorher ordnungsgemäß escaped oder "kastriert" werden müssen.

            Harzliche Grüße aus http://www.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            1. $uid = $_GET["uid"];

              und $titel kam ja von der news_cha.php

              1. Hello,

                $uid = $_GET["uid"];

                und $titel kam ja von der news_cha.php

                Wie kam denn die Variable?

                $uid = intval($_GET["uid"]);  ## wenn die uid numerisch ist.

                Das kann Dir viel Kummer ersparen --> siehe "SQL-Injection"

                Harzliche Grüße aus http://www.annerschbarrich.de

                Tom

                --
                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                Nur selber lernen macht schlau
          2. hi,

            $query = " UPDATE ttl_news
                  SET title = '".$titel."'
                  WHERE (id= '".$uid."')" <- string abgeschlossen
                  LIMIT 1         ";

            ^ text hingeschrieben, ohne string wieder zu "eröffnen".

            wer es allerdings nicht schafft, so einem simplen parse error auf die spur zu kommen, bzw. noch probleme mit sowas grundlegendem wie der notation von strings hat - der sollte sich zwei mal überlegen, ob er schon "reif" für mysql ist, oder nicht vielleicht vorher erst noch mal seine PHP-kenntnisse erweitern sollte ...

            gruß,
            wahsaga

            --
            "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
  2. Hello Andreas,

    $insert  = "INSERT INTO ttl_news (title, quelle, userform, text)";
    $insert .= "VALUES ('$titel', '$quelle', '$userform', '$news')";
    mysql_query($insert);

    man hat mir was mit UPDATE gesagt etc. aber irgendwie hauts nicht hin!!

    P.S. hab "time" bewust weg gelassen weil die zeit vom erstellen ja bei behalten werden soll!

    Bei MySQL wird die erste Spalte vom Typ Timestamp bei einem Update automatisch auf now() gesetzt, wenn man keinen Wert (gleichbedeutend NULL) angibt.

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. hi,

      P.S. hab "time" bewust weg gelassen weil die zeit vom erstellen ja bei behalten werden soll!

      Bei MySQL wird die erste Spalte vom Typ Timestamp bei einem Update automatisch auf now() gesetzt, wenn man keinen Wert (gleichbedeutend NULL) angibt.

      wenn er aber vorher schreibt

      $timestamp = time();

      und das dann auch so in seine tabelle einträgt, hat er vermutlich kein TIMESTAMP-feld - oder er müsste mit lustigen ergebnissen rechnen ;-)

      gruß,
      wahsaga

      --
      "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
      1. Hello,

        P.S. hab "time" bewust weg gelassen weil die zeit vom erstellen ja bei behalten werden soll!

        Bei MySQL wird die erste Spalte vom Typ Timestamp bei einem Update automatisch auf now() gesetzt, wenn man keinen Wert (gleichbedeutend NULL) angibt.

        wenn er aber vorher schreibt

        $timestamp = time();
        und das dann auch so in seine tabelle einträgt, hat er vermutlich kein TIMESTAMP-feld - oder er müsste mit lustigen ergebnissen rechnen ;-)

        Jau, das ist zu erwarten.
        Timestamp() in PHP ist eben nicht gleich dem Typ Timestamp in MySQL. Ich bin am Anfang aber auch drauf reingefallen und wenn ich dann nicht ziemlich bald dieses MySQL-Front gefunden hätte, wäre ich wohl auch noch lange im Kreis gelaufen. Aber das Tool hat mir beim SQL-Auffrischen erheblich geholfen. Man musss sich eben einfach nur immer anschauen, was für ein Statement generiert wurde. Und dann kann man auch irgendwann wieder auf die Konsole wechslen, ohne dauernd ins Buch (Manual) schauen muss.

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. hi,

          Timestamp() in PHP ist eben nicht gleich dem Typ Timestamp in MySQL.

          wobei wir noch erwähnen wollen, dass sich letzterer in einer mysql-DB eigentlich immer besser macht - aufwendigere datumsoperationen/-berechnungen sind damit mit den von mysql bereitgestellten funktionen besser zu machen (ohne dass man einen unix-timestamp erst dynamisch wandeln müsste).

          gruß,
          wahsaga

          --
          "Look, that's why there's rules, understand? So that you _think_ before you break 'em."