berni: HILFE bitte - neueintragung in mysql table??

hi @ all:

eine grosse bitte hätt ich, gleichzeitig sicher eine ungewöhnliche (weil das einfach nicht wahr sein darf).

also:

ich hab da ein cms gemacht, grundsätzlich funzt alles, aber  nicht die eintragung in das neue tabellen"segment", das eintragungs - script schaut derzeit so aus:

create_entry_log2.php:

<? include ("connect.php");
require ("update_neu.php?>
<?$id = $_GET['id'];
$inhalt = $_POST['inhalt'];
if ($submit="Subscribe")
{
 $query = "insert inhalt into hp where ID='$id'"
  ;
 mysql_query($query);
?>

da tut sich nix, ich hab zwar einen testeintrag per phpmyadmin gemacht, aber der ändert sich nicht, ich weiss schlicht nicht weiter.

die update_neu.php dient dazu alten content in der ID abzulöschen und die obige datei, soll den neuen seitencontent eintragen, aber wie gsagt, es erfolgt kein eintrag?

wieso nicht??!

ich hab auch schon andere eintragungssyntax probiert

z.B.:
$query = "insert into hp"
  ." (inhalt,id) values "
  ."('$inhalt', '$id')"
 ;

>>> nix

  1. Hi,

    ich weiß nicht ob das hilft, aber es sind ein paar Fehler im Srcipt:

    if ($submit="Subscribe")
    {
     $query = "insert inhalt into hp where ID='$id'"
      ;

    Ich weiß nicht genau, aber muss derStrichpunkt nicht immer am Ende der Zeile sein?

    mysql_query($query);
    ?>

    Irgendwo muss hier doch noch die Klammer vom if zugehen!

    z.B.:
    $query = "insert into hp"
      ." (inhalt,id) values "
      ."('$inhalt', '$id')"
     ;

    s.o.
    Tu das mal alles in eine Zeile, so:

    $query = "insert into hp (inhalt,id) values ('$inhalt', '$id')";

    Andy

    1. Moin!

      Tu das mal alles in eine Zeile, so:

      $query = "insert into hp (inhalt,id) values ('$inhalt', '$id')";

      Das ist eine gute Idee. Eine andere ist die folgende Art, dies zu notieren:

      $query = "
      INSERT INTO
          hp
      SET
          inhalt  =  '$inhalt',
          id     =  '$id'
      ";

      Ich persönlich finde die Update- ähnliche Notation etwas übersichtlicher und die Zeilenumbrüche schaden ja nicht...

      MFFG (Mit freundlich- friedfertigem Grinsen)

      fastix®

      --
      Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
      1. Auch Moin!

        $query = "
        INSERT INTO
            hp
        SET
            inhalt  =  '$inhalt',
            id     =  '$id'
        ";

        Insert und Set in einem Befehl? Was soll da passieren?

        Andy

        1. Auch Moin!

          $query = "
          INSERT INTO
              hp
          SET
              inhalt  =  '$inhalt',
              id     =  '$id'
          ";

          Insert und Set in einem Befehl? Was soll da passieren?

          Andy

          Andy bitte jetzt sagt der blödel das:

          Parse error: parse error, unexpected T_STRING in /home/www/web56/html/create_entry_log2.php on line 5

          line 5 ist aber (wie oben bereits gepostet) ein tag im head und hat mit php nix zu tun!

          1. Hallo berni!

            Andy bitte jetzt sagt der blödel das:

            Der "blödel" weiß zwar auch nicht, was er tut, aber wenigstens hat er auch nicht die Möglichkeit sich selbst etwas anzueignen ...

            Parse error: parse error, unexpected T_STRING in /home/www/web56/html/create_entry_log2.php on line 5

            Vermutlich ist irgendwas bei dir kaputt (also an Deinem Script).

            Schau Dir mal insbesondere die Zeilen 4-6 an.

            MfG
            Götz
            -- Losung und Lehrtext für Samstag, 3. Januar 2004
            Er wird herrlich werden, so weit die Welt ist. (Micha 5,3)
            Er ist offenbart im Fleisch, gerechtfertigt im Geist, erschienen den Engeln, gepredigt den Heiden, geglaubt in der Welt, aufgenommen in die Herrlichkeit. (1.Timotheus 3,16)
            (http://www.losungen.de/heute.php3)

            1. Moin!

              Du musst in Zeile 5 (und vorherige) von: create_entry_log2.php nachschauen.

              _Häufigste_ Ursachen der genannten Fehlermeldung:

              Vergessene ";" (Vorher)
              Vergessen "?>" "PHP Modus" beenden
              Vergessen  "$" vor Variablenname.

              Wenn Du es nicht findest, poste die ersten 5 Zeile des Skriptes hier im Original, ändere aber Passwörter und Benutzernamen, soweit enthalten.

              MFFG (Mit freundlich- friedfertigem Grinsen)

              fastix®

              --
              Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
              1. Moin!

                Du musst in Zeile 5 (und vorherige) von: create_entry_log2.php nachschauen.

                _Häufigste_ Ursachen der genannten Fehlermeldung:

                Vergessene ";" (Vorher)
                Vergessen "?>" "PHP Modus" beenden
                Vergessen  "$" vor Variablenname.

                Wenn Du es nicht findest, poste die ersten 5 Zeile des Skriptes hier im Original, ändere aber Passwörter und Benutzernamen, soweit enthalten.

                MFFG (Mit freundlich- friedfertigem Grinsen)

                fastix®

                Hallo fastix!

                Du hattest recht, ich hatte eine menge von dem vergessen, was da bei dir stand, aber wenn ich auch jetzt keinen parse-error bekomme, der von mir gemachte testeintrag in 'inhalt' wird nicht geändert.

                wieso das nicht?

                1. Moin!

                  Du musst in Zeile 5 (und vorherige) von: create_entry_log2.php nachschauen.

                  _Häufigste_ Ursachen der genannten Fehlermeldung:

                  Vergessene ";" (Vorher)
                  Vergessen "?>" "PHP Modus" beenden
                  Vergessen  "$" vor Variablenname.

                  Wenn Du es nicht findest, poste die ersten 5 Zeile des Skriptes hier im Original, ändere aber Passwörter und Benutzernamen, soweit enthalten.

                  MFFG (Mit freundlich- friedfertigem Grinsen)

                  fastix®

                  Hallo fastix!

                  Du hattest recht, ich hatte eine menge von dem vergessen, was da bei dir stand, aber wenn ich auch jetzt keinen parse-error bekomme, der von mir gemachte testeintrag in 'inhalt' wird nicht geändert.

                  wieso das nicht?

                  ... ich poste mal das ganze script:

                  <html>
                  <head>
                  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
                  <? include ("connect.php");
                  require ("update_neu.php");?>
                  </head>
                  <body bgcolor="#546A9C"><font face="Verdana" color="#800000" size="2">
                  <?$id = $_GET['id'];
                  $inhalt = $_POST['inhalt'];
                  if ($submit="Subscribe")
                  {
                   $query = "
                  INSERT INTO
                       hp
                  SET
                       inhalt  =  '$inhalt',
                       id     =  '$id'
                   ";
                  ?>

                  <p><font color="#ffffff" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Neue SEITE ist online - Gratulation!</strong></font></p>
                  <p> </p>
                  <br>
                    <?
                  }
                  else
                  {
                  include("sign.php");
                  }

                  ?>
                  </p><br><br><br><br><a href="frame.php?id=<?print $id; ?>">Zur neuen Seite</a>
                  </body>
                  </html>

                  1. Hallo berni!

                    [viel überflüssiges Zeugs]

                    Warum läßt Du Dir dann nicht endlich mal den Fehler, den der MySQL-Server zurückgibt ausgeben?

                    MfG
                    Götz

                    --
                    Losung und Lehrtext für Samstag, 3. Januar 2004
                    Er wird herrlich werden, so weit die Welt ist. (Micha 5,3)
                    Er ist offenbart im Fleisch, gerechtfertigt im Geist, erschienen den Engeln, gepredigt den Heiden, geglaubt in der Welt, aufgenommen in die Herrlichkeit. (1.Timotheus 3,16)
                    (http://www.losungen.de/heute.php3)
                    1. Hallo berni!

                      [viel überflüssiges Zeugs]

                      Warum läßt Du Dir dann nicht endlich mal den Fehler, den der MySQL-Server zurückgibt ausgeben?

                      MfG
                      Götz

                      ===>> weil er jetzt mehr keine fehler ausgibt, sondern nur nix tut.

                      @fastix:

                      ja di ID ist fix und der inhalt soll immer geändert werden - du hast es offenbar durchschaut - ich probier das gleich mal aus.

                      liebe grüße
                      berni

                      1. Moin!

                        ja di ID ist fix und der inhalt soll immer geändert werden - du hast es offenbar durchschaut - ich probier das gleich mal aus.

                        Ja. Und ändere:

                        mysql_query($query);

                        in:

                        mysql_query($query) OR die ("<hr>".mysql_error()."<hr>".$query."<hr>");

                        Dann bekommst die Fehlermeldung, die MySQL augibt, wenn es nicht so will, wie Du.
                        http://de2.php.net/manual/de/function.mysql-error.php

                        Dies solltest Du immer vornehmen!

                        MFFG (Mit freundlich- friedfertigem Grinsen)

                        fastix®

                        --
                        Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
                        1. Moin!

                          ja di ID ist fix und der inhalt soll immer geändert werden - du hast es offenbar durchschaut - ich probier das gleich mal aus.

                          Ja. Und ändere:

                          mysql_query($query);

                          in:

                          mysql_query($query) OR die ("<hr>".mysql_error()."<hr>".$query."<hr>");

                          Dann bekommst die Fehlermeldung, die MySQL augibt, wenn es nicht so will, wie Du.
                          http://de2.php.net/manual/de/function.mysql-error.php

                          Dies solltest Du immer vornehmen!

                          MFFG (Mit freundlich- friedfertigem Grinsen)

                          fastix®

                          HURRA - danke fastix und andere, die sich rengekniet haben, jetzt klappt's!

                          danke - eine woche tu ich schon herum mit diesem sch... - jetzt geht's; ich kann's kaum glauben.

                        2. Moin!

                          ja di ID ist fix und der inhalt soll immer geändert werden - du hast es offenbar durchschaut - ich probier das gleich mal aus.

                          Ja. Und ändere:

                          mysql_query($query);

                          in:

                          mysql_query($query) OR die ("<hr>".mysql_error()."<hr>".$query."<hr>");

                          Dann bekommst die Fehlermeldung, die MySQL augibt, wenn es nicht so will, wie Du.
                          http://de2.php.net/manual/de/function.mysql-error.php

                          Dies solltest Du immer vornehmen!

                          MFFG (Mit freundlich- friedfertigem Grinsen)

                          fastix®

                          danke (habs oben schon gepostet) jetzt klapts.

                2. Moin!

                  wieso das nicht?

                  Gute Frage.

                  Frage an Dich:

                  Existiert die Zeile mit der id eigentlich schon? Ist diese eventell "unique" (einzigartig). Dann kann das nicht gehen. Wenn (Falls) Du eine bestehende Zeile in der Tabelle ändern willst brauchts Du die Update- Sytnax.

                  $query="
                  UPDATE
                     tabelle
                  SET
                     inhalt  = '$inhalt'
                  WHERE
                     id      = '$id'
                  ";

                  Du kannst Dir auch nach Durchführung der Operation die Rückgabe von: mysql_affected_rows() ausgeben lassen. Dies sollte 1 sein, wenn Du 1 Zeile änderst.

                  Lies hier http://de2.php.net/manual/de/ref.mysql.php

                  MFFG (Mit freundlich- friedfertigem Grinsen)

                  fastix®

                  --
                  Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
                  1. Moin!

                    wieso das nicht?
                    Gute Frage.

                    Frage an Dich:

                    Existiert die Zeile mit der id eigentlich schon? Ist diese eventell "unique" (einzigartig). Dann kann das nicht gehen. Wenn (Falls) Du eine bestehende Zeile in der Tabelle ändern willst brauchts Du die Update- Sytnax.

                    $query="
                    UPDATE
                       tabelle
                    SET
                       inhalt  = '$inhalt'
                    WHERE
                       id      = '$id'
                    ";

                    Du kannst Dir auch nach Durchführung der Operation die Rückgabe von: mysql_affected_rows() ausgeben lassen. Dies sollte 1 sein, wenn Du 1 Zeile änderst.

                    Lies hier http://de2.php.net/manual/de/ref.mysql.php

                    MFFG (Mit freundlich- friedfertigem Grinsen)

                    fastix®

                    ===>> danke für den tipp: hab ihn sofort wie folgt ausprobiert:

                    <?$id = $_GET['id'];
                    $inhalt = $_POST['inhalt'];
                    if ($submit="Subscribe")
                    {
                     $query="
                    UPDATE
                       hp
                    SET
                       inhalt  = '$inhalt'
                    WHERE
                       id      = '$id'
                    ";

                    ?>

                    ... leider ändert sich der testeintrag 'test 300'=inhalt auf der ID 300 nicht!

                    was ist da los?

        2. Hallo Andy!

          Insert und Set in einem Befehl? Was soll da passieren?

          Das, was das ganze übersetzt heißt:
          Füge ein und setze irgendetwas auf einen bestimmten Wert.

          Im MySQL-Manual gibts 3 Möglichkeiten, wie man einen INSERT aufbauen kann ...
          Lesetip: http://www.mysql.com/doc/en/INSERT.html

          MfG
          Götz

          --
          Losung und Lehrtext für Samstag, 3. Januar 2004
          Er wird herrlich werden, so weit die Welt ist. (Micha 5,3)
          Er ist offenbart im Fleisch, gerechtfertigt im Geist, erschienen den Engeln, gepredigt den Heiden, geglaubt in der Welt, aufgenommen in die Herrlichkeit. (1.Timotheus 3,16)
          (http://www.losungen.de/heute.php3)
        3. Moin!

          Insert und Set in einem Befehl? Was soll da passieren?

          Es wird eine neue Zeile in der Tabelle angelegt und diese mit Werten bestückt.
          Also genau das gleiche, wie bei einer "normalen" insert- Syntax.

          http://www.mysql.com/doc/de/HANDLER.html

          (nach dem zweiten oder:

          <zitat>
          INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
                  [INTO] tabelle
                  SET spalten_name=ausdruck, spalten_name=ausdruck, ...
          </zitat>

          MFFG (Mit freundlich- friedfertigem Grinsen)

          fastix®

          --
          Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
      2. Moin!

        Tu das mal alles in eine Zeile, so:

        $query = "insert into hp (inhalt,id) values ('$inhalt', '$id')";

        Das ist eine gute Idee. Eine andere ist die folgende Art, dies zu notieren:

        $query = "
        INSERT INTO
            hp
        SET
            inhalt  =  '$inhalt',
            id     =  '$id'
        ";

        Ich persönlich finde die Update- ähnliche Notation etwas übersichtlicher und die Zeilenumbrüche schaden ja nicht...

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix®

        1. Hä?

          Was soll das?

          Andy

          PS: Wie geht das überhaupt? Bei mir würde da gleich kommen, dass ich zu viele Zitierte Zeilen drin hab!

        2. Moin!

          Tu das mal alles in eine Zeile, so:

          $query = "insert into hp (inhalt,id) values ('$inhalt', '$id')";

          Das ist eine gute Idee. Eine andere ist die folgende Art, dies zu notieren:

          $query = "
          INSERT INTO
              hp
          SET
              inhalt  =  '$inhalt',
              id     =  '$id'
          ";

          Ich persönlich finde die Update- ähnliche Notation etwas übersichtlicher und die Zeilenumbrüche schaden ja nicht...

          du has recht, die'{' wird nicht geschlossen, aber keine idee wo.

          MFFG (Mit freundlich- friedfertigem Grinsen)

          fastix®

  2. Hallo berni!

    [...] aber  nicht die eintragung in das neue tabellen"segment"

    Tabellensegment?
    Also, eine Eintragung fügt einer Datenbank einen Datensatz zu, oder so ähnlich jedenfalls.
    Im Allgemeinen könnte man sagen, man fügt einer Tabelle eine Zeile hinzu.

    <?$id = $_GET['id'];

    Wie wärs, wenn Du auch die übergebene id mal prüfst, ob der Wert zulässig ist?

    $query = "insert inhalt into hp where ID='$id'"
    da tut sich nix ...

    ... und das ist auch gut so.

    Denn in einem INSERT-Statement hat ein WHERE eigentlich nichts verloren.
    Lesetip: http://www.mysql.com/doc/en/INSERT.html

    die update_neu.php dient dazu alten content in der ID abzulöschen und die obige datei, soll den neuen seitencontent eintragen, aber wie gsagt, es erfolgt kein eintrag?
    wieso nicht??!

    Weil Du keine ahnung hast? :)
    Alte Datensätze aktualisiert man in MySQL normalerweise mit UPDATE.
    Mit INSERT INTO legt man eigentlich nur neue Datensätze an.

    ich hab auch schon andere eintragungssyntax probiert
    $query = "insert into hp"
      ." (inhalt,id) values "
      ."('$inhalt', '$id')"
    ;

    Ähm. Ich schreib das mal um:
    "INSERT INTO hp
     (inhalt,id)
      values
        ('".$inhalt."', '".$id."');"

    Das sollte korrekt funktionieren.

    Laß Dir doch erstmal den abgesetzten Query (in Deinem Fall $query) als Text ausgeben, und den dazu gehörenden MySQL-Fehler, weil diese Fehler sind manchmal vielleicht ganz hilfreich, wenn man Fehler finden will ...

    Ich hab leider noch nicht so ganz verstanden, ob du nun einfügen oder nur aktualisieren willst, ist aber auch nicht so wichtig.
    Les einfach bissel im MySQL-Manual und auch im PHP-Manual nach und laß Dir alle Fehler ausgeben - nur so findest Du irgendwann Deine Fehler auch _selbst_ ;)

    MfG
    Götz

    --
    Losung und Lehrtext für Samstag, 3. Januar 2004
    Er wird herrlich werden, so weit die Welt ist. (Micha 5,3)
    Er ist offenbart im Fleisch, gerechtfertigt im Geist, erschienen den Engeln, gepredigt den Heiden, geglaubt in der Welt, aufgenommen in die Herrlichkeit. (1.Timotheus 3,16)
    (http://www.losungen.de/heute.php3)