1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

PHP Mysql Update Problem

Discussion in 'Web-Know-how für die Homepage' started by Jojo_44, Aug 27, 2008.

Thread Status:
Not open for further replies.
  1. Jojo_44

    Jojo_44 Kbyte

    Hi Leute,

    habe folgendes Problem bei diesem PHP Code:

    PHP:
    <?php
            
    class InfoMessage extends Plugin {
        public  
    $display    'main';
        public  
    $title        'InfoMessage';
        public  
    $author        'Jojo_44';
        public  
    $version    '0.1';
        
        public function 
    InfoMessageUpdate () {
        
    $sql "UPDATE 
                    BEGININFO,
                    ENDINFO
                FROM
                    news"
    ;            
        }
        
        public function 
    onOutput() {
        
    $db = @new mysqli('localhost''root''mein pwd''infomessage');
        if (
    mysqli_connect_errno()) {
           die (
    'Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysql_connect_errno().')');
        }
        
    $sql 'SELECT
            BEGININFO,
            ENDINFO
        FROM
            news'
    ;
            
        
    $result $db->query($sql);
        if (!
    $result) {
        die (
    'Konnte den Folgenden Query nicht senden: '.$sql."<br \n>Fehlermeldung: ".$db->error);
        }
        if (!
    $result->num_rows) {
        echo 
    '<p class="info">Es sind keine Newsbeitrge vorhanden</p>';
        } else {
        while (
    $row $result->fetch_assoc()) {
            echo 
    "<form action='ajax.php' method='post' name='InfoMessage' id='InfoMessage' rel='{$this->display}area' class='postcmd'>";
            echo 
    "<fieldset>";
            echo 
    "    <div class='f-row'>
                    <label for='Begininfo'>"
    .BeginInfo."</label>
                    <div class='f-field'><input type='text' name='Begininfo' value='
    {$row['BEGININFO']}' /></div>
                </div>"
    ;
            echo 
    "    <div class='f-row'>
                    <label for='Begininfo'>"
    .EndInfo."</label>
                    <div class='f-field'><input type='text' name='Endinfo' value='
    {$row['ENDINFO']}' /></div>
                </div>"
    ;
            echo 
    "    <input type='hidden' name='plugin' value='{$this->id}' />
                        <input type='hidden' name='action' value='InfoMessageUpdate' />
                        <button type='submit' class='wide' title='"
    .ct_submit."'>".ct_submit."</button>"
                
        }
      }    
     }

    ?>
    bei der public function InfoMessageUpdate passt da das Updaten? Weil wenn ich auf den Button submit klicke wird die Datenbank nicht geupdatet.

    Danke im Vorraus

    mfg Jojo
     
  2. Supeede

    Supeede Byte

    hi, richtigen Syntax beachten

    UPDATE $tabellenname SET $feldname = $neuerWert WHERE id = 1

    Hoffe das reicht dir als hilfe um dein script umzuschreiben. Sonst nochmal melden.
     
  3. Jojo_44

    Jojo_44 Kbyte

    Es funktioniert nicht.

    So nicht:

    PHP:
    public function InfoMessageUpdate () {
        
    $sql "UPDATE news SET Begininfo = BEGININFO WHERE id = '1'";
                                
        }
    und so auch nicht:
    PHP:
    public function InfoMessageUpdate () {
        
    $sql "UPDATE news SET Begininfo = {$row['BEGININFO'WHERE id '1'";
                                
        }
    Kann mir jemand sagen wie es richtig heißen müsste?

    mfg Jojo
     
  4. stefanniehaus

    stefanniehaus Halbes Megabyte

    Was soll das denn für ein Statement werden? So wie du es hast schreibst du immer den Wert, der aktuell schon in dem Feld steht, wieder in das Feld rein. Du machst also gar nichts...

    du musst schon angeben, was genau in das Feld geschrieben werden soll

    "UPDATE news SET Begininfo = 'abcxyz' WHERE id = 1"

    woher soll der MySQL-Server sonst wissen was er in das Feld reinschreiben soll, wenn du es ihm nicht sagst ? ;)
     
  5. Jojo_44

    Jojo_44 Kbyte

    Ah danke, und was müsst ich dann schreiben wenn ich will das der des von dem TextFeld "Begininfo" nimmt?

    mfg Jojo
     
  6. Supeede

    Supeede Byte

    du schreibst in dein Script vor dem Update
    PHP:
    $begininfo $_POST['Begininfo'];
    Und beiim Update dann
    PHP:
    UPDATE news SET begininfo $begininfo WHERE id=1;
    Damit packst du den Inhalt aus dem inputfeld das Begininfo heisst in die var $begininfo. und das schreibst du dann in die Tabelle.

    Du solltest Namen für inputfelder klein schreiben. Sieht ordentlicher aus.
     
  7. Jojo_44

    Jojo_44 Kbyte

    Erstmal danke für deine Hilfe.

    Habs gemacht geht aber nicht. Insgesamt sieht es jetzt so aus:

    PHP:
    <?php

    class InfoMessage extends Plugin {
        public  
    $display    'main';
        public  
    $title        'InfoMessage';
        public  
    $author        'Jojo_44';
        public  
    $version    '0.1';
        
        public function 
    InfoMessageUpdate () {
        
    $begininfo $_POST['Begininfo'];
        
    $sql "UPDATE news SET begininfo = $begininfo WHERE id=1";
                                
        }
        
        public function 
    onOutput() {
        
    $db = @new mysqli('localhost''root''pwd''infomessage');
        if (
    mysqli_connect_errno()) {
           die (
    'Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysql_connect_errno().')');
        }
        
    $sql 'SELECT
            begininfo,
            endinfo
        FROM
            news'
    ;
            
        
    $result $db->query($sql);
        if (!
    $result) {
        die (
    'Konnte den Folgenden Query nicht senden: '.$sql."<br \n>Fehlermeldung: ".$db->error);
        }
        if (!
    $result->num_rows) {
        echo 
    '<p class="info">Es sind keine Newsbeitrge vorhanden</p>';
        } else {
        while (
    $row $result->fetch_assoc()) {
            echo 
    "<form action='ajax.php' method='post' name='InfoMessage' id='InfoMessage' rel='{$this->display}area' class='postcmd'>";
            echo 
    "<fieldset>";
            echo 
    "    <div class='f-row'>
                    <label for='Begininfo'>"
    .BeginInfo."</label>
                    <div class='f-field'><input type='text' name='Begininfo' value='
    {$row['begininfo']}' /></div>
                </div>"
    ;
            echo 
    "    <div class='f-row'>
                    <label for='Begininfo'>"
    .EndInfo."</label>
                    <div class='f-field'><input type='text' name='Endinfo' value='
    {$row['begininfo']}' /></div>
                </div>"
    ;
            echo 
    "    <input type='hidden' name='plugin' value='{$this->id}' />
                        <input type='hidden' name='action' value='InfoMessageUpdate' />
                        <button type='submit' class='wide' title='"
    .ct_submit."'>".ct_submit."</button>"
                
        }
      }    
     }

    ?>
    Passt des so oder hab ich wieder nen Fehler gemacht?

    mfg Jojo
     
  8. Supeede

    Supeede Byte

    Hi, bekommst du eine Fehlermeldung oder sowas?
    Was passt denn nicht?
    lass dir doch mal bei dem UPDATE ne Fehlermeldung anzeigen.

    echo mysql_error();

    Immerhin muss ja etwas passieren :-)
     
  9. Jojo_44

    Jojo_44 Kbyte

    Es passiert gar nix. Wenn ich auf submit klicke steht wieder des alte aus der mysql Datenbank drin, aber nicht das was ich gerade eingegeben hab.

    mfg Jojo
     
  10. stefanniehaus

    stefanniehaus Halbes Megabyte

    und was sagt

    echo mysql_error();

    ?
     
  11. Supeede

    Supeede Byte

    wir wollen Dir, helfen, das merkst du, aber du mmusst uns helfen damit wir dir helfen könne :-)

    bei
    PHP:
    $sql "UPDATE news SET begininfo = $begininfo WHERE id=1";
        
    setzt du ein echo drunter, also
    PHP:
    $sql "UPDATE news SET begininfo = $begininfo WHERE id=1";
        echo 
    mysql_error();
    Und dann mal weitersehen.
     
  12. stefanniehaus

    stefanniehaus Halbes Megabyte

    Öhm... er muss natürlich erst den SQL-Befehl ausführen und dann
    echo mysql_error();
    machen; sonst bringt das herzlich wenig.
     
  13. Jojo_44

    Jojo_44 Kbyte

    Also er bringt keine Fehlermeldung. Es erscheihnt im textfeld dann wieder des gleiche was vorher drin stand wenn ich auch submit klicke.( das hab ich in phpmyadmin eingeben). Langsam, ganz langsam verzweifle ich:rolleyes::confused:

    Aber vielen Dank das Ihr mir helfen wollt

    mfg Jojo
     
  14. Supeede

    Supeede Byte

    Ich geh mal davon aus das, die Datei von der Du uns die ganze Zeit den Quelltext zeigst ajax.php heisst, kann das sein?

    Dein Problem ist nicht das das Updaten nicht funktioniert, sondern das senden klappt nicht.

    wenn du es doch an die gleiche datei schickst, dann schreib doch lieber
    PHP:
    <form action="<?php echo $_SERVER["PHP_SELF"]?>" method="post">
     
    Last edited: Aug 31, 2008
  15. Jojo_44

    Jojo_44 Kbyte

    Nein^^, ich hab für das Trackmania Servertool RemoteCPLive ein Plugin geschrieben, das Nachrichten im Chat vom Trackmania Server sendet. Diese Nachrichten stehen in einer Datenbank. Und diese Nachrichten will ich jetzt mich dem Plugin was ich hier gepostet habe im Webinterface von RemoteCP ändern können.

    mfg Jojo
     
  16. stefanniehaus

    stefanniehaus Halbes Megabyte

    Ähm.. mal ne gaanz doofe Frage...
    Gibt es in der Tabelle überhaupt einen Datensatz, dessen Wert von "id" 1 ist? Das haben wir bisher zur Anschauung hier fest verankert, aber das Statement muss bzgl. der ID natürlich dynamisch sein.
    Wenn es die ID 1 nicht gibt, gibt es ja auch nichts zu ändern und es kommt auch kein Fehler ;)
     
  17. Jojo_44

    Jojo_44 Kbyte

    Doch der Eintrag was ich in die Datenbank mit Phpmyadmin geschrieben hab, hat die id=1.

    Ich hab schon mit dem Entwickler gesprochen von RemoteCP,der meinte ich sollte es mit der internen mysql connection probieren, aber da hat es überhaupt nicht funktioniert.(um nochmal auf des von supeede zurück zu kommen)

    mfg Jojo
     
  18. Supeede

    Supeede Byte

    kann sein das ich das falsch sehe, aber du hast ein formular in das man die neue begininfo eintragen soll. bei senden soll deine datenbanktabelle upgedatet werden.
    Warum schickst du bei senden das dann aber an ajax.php?? und nicht an die selbe datei, denn da steht ja das mit dem update drin?
     
  19. Jojo_44

    Jojo_44 Kbyte

    sry ich sehr nur sternchen:rolleyes:

    Äh ich versteh nicht so recht was du meinst, weil wo wird das an die Ajax.php gesendet?

    mfg Jojo
     
  20. Supeede

    Supeede Byte

    in deinem Formular steht bei action das die ajax.php geöffnet werden soll. jedenfalls hast du das im ersten posting gezeigt.
     
Thread Status:
Not open for further replies.

Share This Page