[PHP] Update hat keinen Effekt

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

  • [PHP] Update hat keinen Effekt

    Guten Tag allerseits

    Ich arbeite derzeit an einer Wissesdatenbank die komplett über den Browser per PHP gepflegt werden soll (Userverwaltung, Erstellen und ändern von Inhalten, etc...).
    Nun bin ich gerade dabei das ändern von bereits bestehenden Beiträgen zu implementieren. Kern sind dabei 2 PHP-Dateien, die docchange.php und die docupd.inc.php
    In der docchange.php werden Inhalte über einen WYSIWYG-Editor geändert (SPAW 2.0, falls das wichtig ist). Die docupd.inc.php übernimmt dabei das eigendliche Speichern per MYSQL - UPDATE.

    Die docchange.php sieht folgendermaßen aus:
    PHP-Code:
    $query=mysql_query("SELECT titel, doc FROM doc WHERE doc_id = '".$_GET['id']."' ");
    $erg=mysql_fetch_array($query); 
    Das Skript bekommt hier aus eienr anderen Datei per URL die ID der betroffenen Einträge der Datenbank.

    PHP-Code:
    <form action="docupd.inc.php?id=<?echo $_GET['id'];?>" method="post">
    <table borderln="0">
     <tr>
      <td>Titel:</td>
      <td><input type="text" name="titel" size="50"  value="<?echo $erg['titel'];?>" /></td>
     </tr><tr>
     <?

    //Aufrufen der Editor-Funktion 
    $spaw = new SpawEditor("spaw1", $erg['doc']);
    $spaw->show();
    }
    ?> 
     </tr>
    </table>
    <input type="submit" name="submit" value="Speichern" />
    </form>
    Hier wird der Editor eingefügt.

    Der Titel des Documents wird extra in ein Textfeld eingegeben während das Dokument an sich im Editor eingegeben wird.

    Die docupd.inc.php sieht folgendermaßen aus:
    PHP-Code:
    $sql "UPDATE doc SET titel = ".trim($_POST['titel']).", doc = ".trim($_POST['spaw1'])." WHERE doc_id = ".$_GET['id']." ";
    $doc mysql_query($sql) or die (mysql_error());
    header'Location: doclist.php' );
    exit(); 
    Auch hier wird die ID per URL übergeben und die geänderten Inhalte des Editors.
    Ein
    PHP-Code:
    echo $_POST['titel'];
    echo 
    $_POST['doc']; 
    gibt das richtige aus.

    Ein
    PHP-Code:
    echo $doc
    gibt nichts aus.

    Zusammengefasst soll das Skript der ersten Datei die entsprechenden Einträge der Datenbank auslesen und zum ändern in die Felder schreiben (funktioniert) und das Skript der ersten Datei soll per Update die Datenentsprechend ändern (Funktioniert nicht).

    Das Kuriose ist jetzt, dass in der Datenbank nicht nur nichts geändert wird.
    Das mysql_error gibt mir nämliche Folgende Fehlermeldung:
    Unknown column 'Halloasdfasdf' in 'field list'
    (Der Originaleintrag lautet "Hallo" und zum testen des Skriptes hab ich einfach blind irgendwelche Buchstaben dahinter getippt).

    Also versucht er nicht in die entsprechenden Spalten einzutragen, die im query stehen sondern versucht spalten zu finden, die genauso wie der geänderte Inhalt heißen. Das wiederum ist mir selbst unerklärlich (ja, man kann mich getrost noob nennen), dann wie gesagt sage ich ihm ja ind er query was er wohin schreiben soll. Da aich ihm auch die ID mitgebe kann es ja theoretisch keine verwechselungen der Einträge geben.

    So, ich hoffe ich habe nichts an Informationen vergessen.

    MFG
    Uri
    Watch me set my pants on fire!!!!!

  • #2
    spaltennamen werden in mysql in backticks gesetzt, strings - in hochkommata.

    Kommentar


    • #3
      Re: [PHP] Update hat keinen Effekt

      1. Regeln lesen, Code umbrechen.

      Also versucht er nicht in die entsprechenden Spalten einzutragen, die im query stehen sondern versucht spalten zu finden, die genauso wie der geänderte Inhalt heißen.
      "Er" macht nur das, was du ihm sagst.

      Und dass es sich dabei nicht um Spaltennamen, sondern um Textliterale bzw. Strings handeln soll, hast du ihm nicht gesagt.
      Also lies mal im Handbuch nach, wie man Strings in SQL-Queries kennzeichnet.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Original geschrieben von penizillin
        spaltennamen werden in mysql in backticks gesetzt, strings - in hochkommata.
        Funktioniert
        PHP-Code:
        $sql "UPDATE doc SET `titel` = '".trim($_POST['titel'])."', `doc` = '".trim($_POST['spaw1'])."' WHERE `doc_id` = ".$_GET['id']." "
        Ich hasse es wenn Lösungen so wiederlich einfach sind und ich einfach nicht darauf komme

        Besten Dank, Penizilin ^^
        Watch me set my pants on fire!!!!!

        Kommentar

        Lädt...
        X