Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit Update

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem mit Update

    irgendwie bin ich zu dumm, datensäte per UPDATE zu ändern.

    Mit den beiden hier geposteten Dateien schaffe ich es nur, bei einer Änderung vom wert titel den titel zu löschen, egal was ich eingebe. Kann mir hier jemand ein wenig unter die arme greifen?

    Die datei "ändern.php" sieht wie folgt aus:

    PHP-Code:
    <?php
    include "../config.php";
    include_once(
    "fckeditor/fckeditor.php") ;
    error_reporting(E_ALL);
    $datensatz = ($_GET['daten']);         // Gültigkeit prüfen

    $query_tauchplatz "
        SELECT
            autor,    
           status,
            titel,        
            inhalt,
            id,
            kategorie
        FROM 
          tfadatenbank
        WHERE
            id = 
    $datensatz";
    $tauchplatz mysql_query($query_tauchplatz) or die(mysql_error());

        
    while(
    $ausgabe mysql_fetch_assoc($tauchplatz))
    {
    echo 
    "<a href='datenbank.php?id=$ausgabe[id]'>zum prufen</a>";
    ?>
    <form method="post" action="dbaendern.php?id=<?php echo $ausgabe["id"]; ?>">

    Autor: <input type=text name="[autor]" size= 30 value="<?php echo $ausgabe["autor"]; ?>">
    Status (1 = aktiv, 2 = in Bearbeitung): <input type=text name="[status]" size= 5 value="<?php echo $ausgabe["status"]; ?>">
    <br>
    <br>
    Titel: <input type=text name="[titel]" size= 30 value="<?php echo $ausgabe["titel"]; ?>">
    <br>
    <br>
    Textinhalt<br>


    <?php
    $oFCKeditor 
    = new FCKeditor('4') ;
    $oFCKeditor->BasePath    'fckeditor/' ;
    $oFCKeditor->Value $ausgabe['inhalt'] ;
    $oFCKeditor->Create() ;
    ?>
    <br><br>
    Kategorie: <input type=text name="[kategorie]" size= 30 value="<?php echo $ausgabe["kategorie"]; ?>">
    <input type=submit name="SUBMIT" value="Datensatz &auml;ndern">
    </form>
    <?php

    ?>
    und die datei "dbaendern.php" so:

    PHP-Code:
    <?php
    include "../config.php";
    $datensatz = ($_GET['id']);         // Gültigkeit prüfen

    $dbanfrage "
        UPDATE 
            tfadatenbank 
        SET 
            autor = '
    $_POST[autor]',
            status = '
    $_POST[status]',
            titel =  '
    $_POST[titel]',
            inhalt = '
    $_POST[inhalt]',
            kategorie = '
    $_POST[kategorie]'
        WHERE 
            id = 
    $datensatz";

    if (
    mysql_db_query ($dbname$dbanfrage$dbverbindung)) {
    print (
    "Datenbankeintrag erfolgreich.");
    } else {
    print (
    "Es traten folgende Probleme auf. ");
    mysql_query($sql) or die(mysql_error()); 
    }

    mysql_close ($dbverbindung);

    ?>
    <a href="uebersichtaenderbar.php">Zurück zur &Uuml;bersicht</a><br>
    Als Meldung kommt "Datenbankeintrag erfolgreich", eine Änderung, ausser dass der Titel gelöscht wird kommt jedoch nicht.


  • #2
    Bitte mache Dich mit den Grundlagen der Formuarverarbeitung mit PHP vertraut. Sowohl die Nutzung des Input name-Attributs als auch die Stringverknüpfung zur Query sind fehlerhaft.
    --

    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


    --

    Kommentar


    • #3
      Hallo!

      Du versuchst ein Update nach einer id zu machen aber du übergibst die id nicht im Formular!

      Füge das mal ein

      PHP-Code:
      <?php
      //ins formular einfügen
      <input type="hidden" name="id" value="<?php echo $ausgabe['id'] ?>">
       
      //so dein update statement ändern
      WHERE
              id 
      $_POST['id']";
      ?>
      So müsste das klappen!
      Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
      http://www.lit-web.de

      Kommentar


      • #4
        Doch, die id wird via GET übergeben.
        Aber das ist falsch:
        "... titel = '$_POST[titel]', ..."
        und sowas auch
        <input type=text name="[kategorie]" size= 30
        --

        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


        --

        Kommentar


        • #5
          Ja ok stimmt. Naja ich habe es so gelernt das man eine id im Formular mit übergibt.

          $datensatz = ($_GET['id']);

          Die Klammern sind da überflüssig und ich würde an seiner Stelle aber auch noch sichern das id wirklich eine Zahl ist!

          Also so

          $datensatz = intval($_GET['id'])

          Sonst kann man damit jene Menge Unsinn anstellen und SQL-Injections sind bei ihm auch sehr Willkommen!
          Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
          http://www.lit-web.de

          Kommentar


          • #6
            Hm, die id-Übergabe funtkioniert mit $_GET, das muss ja auch funktionieren, da ja der Datensatz wirklich geändert wird. Wo ich den gravierenden Fehler habe ist entweder bei der Variablenbezeichnung schon im Formular oder beim eintrag.

            Hm - und ich gestehe, ich nehme an, das ich den Fehler in beiden mache.
            Wo kann ich mich denn über diese Formularverarbeitung am besten schlau machen? Denke das das Tutorial auf peterkropff.de schon fast zu weit geht, und bei schattenbaum dürfte irgendwas fehlen, das ich dazu benötigen würde.

            Kommentar


            • #7
              Hallo,
              dein Skript ist ziemlich unsicher. Was machst du wenn ich $_GET["id"] = "1 OR 1 = 1" uebergebe? Dann kann ich deine komplette Tabelle zuruecksetzen.

              Schau dir mal folgende Funktionen und PHP-Einstellungen an:
              PHP: error_reporting - Manual
              PHP: mysql_real_escape_string - Manual

              Ersteres zeigt die Fehler im Skript an, wenn du es auf E_ALL | E_STRICT setzt. Ich denke das wurde aber bereits in der Foren-Ankuendigung erklaert, die du wohl erstmal lesen solltest.

              Auch ein HTML-Validator wuerde guttun:
              https://addons.mozilla.org/de/firefox/addon/249

              Ich meine warum sollten wir die Fehler suchen, wenn sie von einer Maschine gefunden werden koennten ..
              "Mein Name ist Lohse, ich kaufe hier ein."

              Kommentar

              Lädt...
              X