BlackColla: datenbank eintrag updaten MySQL 5.1.41

hallo,
ich hab ein problem: ich will ein update query im hintergrund an die db schicken.
aber dazu brauche ich wohl ein formular.
das ding ist, der benutzer soll von der ganzen sache nichts mitkriegen!
wie also update ich einen db eintrag, ohne das der user das mitbekommt?
gruß black

  1. Der User bekommt davon normalerweise gar nichts mit - außer man lässt ihn daran teilhaben, indem man ihm entweder den PHP-Code (nehme das jetzt einfach mal an) zeigt oder indem man Statusmeldeungen (Fehler oder Erfolg des Querys) ausgeben lässt.

  2. Mahlzeit BlackColla,

    ich hab ein problem: ich will ein update query im hintergrund an die db schicken.

    *Wann* willst Du das machen? Beim Laden der Seite? Zu einem bestimmten Zeitpunkt? Bei einer bestimmten Aktion des Benutzers?

    aber dazu brauche ich wohl ein formular.

    Nicht zwangsläufig - nur wenn Du Benutzereingaben entgegennehmen und diese verarbeiten willst.

    das ding ist, der benutzer soll von der ganzen sache nichts mitkriegen!

    Hm ... dann verstehe ich Dein Ansinnen (noch) nicht. Vielleicht beschreibst Du Deinen konkreten Fall mal etwas ausführlicher?

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Mahlzeit BlackColla,

      ich hab ein problem: ich will ein update query im hintergrund an die db schicken.

      *Wann* willst Du das machen? Beim Laden der Seite? Zu einem bestimmten Zeitpunkt? Bei einer bestimmten Aktion des Benutzers?

      aber dazu brauche ich wohl ein formular.

      Nicht zwangsläufig - nur wenn Du Benutzereingaben entgegennehmen und diese verarbeiten willst.

      das ding ist, der benutzer soll von der ganzen sache nichts mitkriegen!

      Hm ... dann verstehe ich Dein Ansinnen (noch) nicht. Vielleicht beschreibst Du Deinen konkreten Fall mal etwas ausführlicher?

      MfG,
      EKKi

      also, ich will ein täglich änderndes bild anzeigen, und will dazu das datum als referenz nehmen. dh wenn sich das datum ändert, ändert sich das bild.
      das aktuelle datum soll in eine db geschrieben werden.
      der user soll aber nichts davon mitkriegen(außer das sich das bild ändert^^).
      das datum wird per timestamp mit dem db eintrag verglichen, ist das datum gleich, ändert sich halt nichts, ist es unterschiedlich, wird das bild gewechselt und das aktuelle datum in die db geschrieben.
      gruß black

      1. Mahlzeit BlackColla,

        FOTU ist genauso wie TOFU relativ unbeliebt - bitte lass es also in Zukunft bleiben. Danke.

        also, ich will ein täglich änderndes bild anzeigen, und will dazu das datum als referenz nehmen. dh wenn sich das datum ändert, ändert sich das bild.

        Was hältst Du dann z.B. von folgendem Vorgehen:

        Im HTML-Code Deiner Seite(n) willst Du ja das Bild anzeigen:

        <img src="/foo/bar/taegliches_bild.php" alt="Täglich frisch: das aktuelle Bild des Tages">

        Das Skript "taegliches_bild.php" (Du kannst das natürlich auch mit jeder anderen Server-seitigen Sprache umsetzen) vergleicht dann das aktuelle Datum, ändert ggf. den Eintrag in der Datenbank, ändert den Content-Type für die Ausgabe, öffnet die richtige Grafik-Datei und gibt sie direkt an den Browser aus.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. Mahlzeit BlackColla,

          FOTU ist genauso wie TOFU relativ unbeliebt - bitte lass es also in Zukunft bleiben. Danke.

          also, ich will ein täglich änderndes bild anzeigen, und will dazu das datum als referenz nehmen. dh wenn sich das datum ändert, ändert sich das bild.

          Was hältst Du dann z.B. von folgendem Vorgehen:

          Im HTML-Code Deiner Seite(n) willst Du ja das Bild anzeigen:

          <img src="/foo/bar/taegliches_bild.php" alt="Täglich frisch: das aktuelle Bild des Tages">

          Das Skript "taegliches_bild.php" (Du kannst das natürlich auch mit jeder anderen Server-seitigen Sprache umsetzen) vergleicht dann das aktuelle Datum, ändert ggf. den Eintrag in der Datenbank, ändert den Content-Type für die Ausgabe, öffnet die richtige Grafik-Datei und gibt sie direkt an den Browser aus.

          MfG,
          EKKi

          FOTU? keine ahnung was das ist...
          ich arbeite bereits mit php :)
          aber irgendwie "sendet" php den mysql_query(update) nicht an die db...
          daher dachte ich, ich müßte da mit einer form arbeiten die dann "versteckt" die daten übermittelt...

          hier mal mein bisheriger code(ich taste mich langsam ran)

          function picchange()  
          {  
          	$timestamp = time();  
          	$datum = date("d.m.Y",$timestamp);  
          	$db_query = mysql_query('SELECT * FROM date') or die (mysql_error());  
          	$date = mysql_result($db_query,0);  
            
          	$db_update_query = mysql_query('UPDATE date SET date='.$datum.'');  
            
          	if($date != $datum)  
          	{  
          		mysql_query('UPDATE date SET date=21.06.2010');  
          		echo '	datum geändert?';  
          	}  
          	else  
          	{  
          		echo '	alter keine ahnung';  
          	}  
          }
          
          1. Mahlzeit BlackColla,

            FOTU ist genauso wie TOFU relativ unbeliebt - bitte lass es also in Zukunft bleiben. Danke.

            FOTU? keine ahnung was das ist...

            Das, was Du erneut produziert hast, dessen Erklärung ich Dir (nicht zum Spaß) verlinkt habe und was mich - sollte es noch einmal vorkommen - davon abhalten wird, mich in diesem Thread weiter zu äußern.

            aber irgendwie "sendet" php den mysql_query(update) nicht an die db...

            "Irgendwie" hilft bei der Fehlersuche ungefähr gar nicht. Wo genau tritt welcher Fehler auf? Lässt Du Dir von PHP Fehlermeldungen und Hinweise ausgeben? Unterdrückst Du sie? Welches Verhalten erwartest Du genau - welches tritt stattdessen auf?

            Kurz gesagt: es fehlt eine vernünftige und nachvollziehbare Problembeschreibung.

            $timestamp = time();
            $datum = date("d.m.Y",$timestamp);

            Warum auch immer Du das aktuelle Datum mit PHP ermittelst - das könnte MySQL genauso gut.

            $db_query = mysql_query('SELECT * FROM date') or die (mysql_error());

            Zu der "Fehlerbehandlung" kann ich nur auf Zitat 1282 verweisen.

            $date = mysql_result($db_query,0);

            OK, jetzt hast Du Dir das Datum des Eintrags aus der Datenbank geholt.

            $db_update_query = mysql_query('UPDATE date SET date='.$datum.'');

            Und jetzt überschreibst Du den Wert mit dem aktuellen Datum. Immer. Ist das so gewollt?

            if($date != $datum)

            Hier vergleichst Du zwei Variablen. Hast Du Dir schon einmal angeschaut, was in beiden eigentlich enthalten ist (dazu sei z.B. auf var_dump() verwiesen)?

            {
            mysql_query('UPDATE date SET date=21.06.2010');
            echo ' datum geändert?';

            Hier überschreibst Du das Datum in der Datenbank noch einmal ... warum?

            Und was ist jetzt eigentlich Dein Problem? Wo hakt's konkret?

            MfG,
            EKKi

            --
            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
            1. Mahlzeit BlackColla,

              FOTU ist genauso wie TOFU relativ unbeliebt - bitte lass es also in Zukunft bleiben. Danke.

              FOTU? keine ahnung was das ist...

              Das, was Du erneut produziert hast, dessen Erklärung ich Dir (nicht zum Spaß) verlinkt habe und was mich - sollte es noch einmal vorkommen - davon abhalten wird, mich in diesem Thread weiter zu äußern.

              jaaa, 'tschuldigung, aber bei TOFU hab ich an den sojamist gedacht und nicht weiter über den link nachgedacht...

              aber irgendwie "sendet" php den mysql_query(update) nicht an die db...

              "Irgendwie" hilft bei der Fehlersuche ungefähr gar nicht. Wo genau tritt welcher Fehler auf? Lässt Du Dir von PHP Fehlermeldungen und Hinweise ausgeben? Unterdrückst Du sie? Welches Verhalten erwartest Du genau - welches tritt stattdessen auf?

              ich erwarte, daß der eintrag der db verändert wird. nicht dazu gefügt, nur verändert!

              Kurz gesagt: es fehlt eine vernünftige und nachvollziehbare Problembeschreibung.

              $timestamp = time();  
              $datum = date("d.m.Y",$timestamp);  
              

              Warum auch immer Du das aktuelle Datum mit PHP ermittelst - das könnte MySQL genauso gut.

              ich weiß das mysql das auch kann :) aber mir erschien es einfacher und perfomanter, daß php erledigen zu lassen da ich, bei unverändertem datum keine zusätzliche mysql abfrage brauche!

              $db\_query = mysql\_query('SELECT \* FROM date') or die (mysql\_error());  
              

              Zu der "Fehlerbehandlung" kann ich nur auf Zitat 1282 verweisen.

              $date = mysql\_result($db\_query,0);  
              

              OK, jetzt hast Du Dir das Datum des Eintrags aus der Datenbank geholt.

              ganz recht, aber darum gehts mir nicht :)

              $db\_update\_query = mysql\_query('UPDATE date SET date='.$datum.'');  
              

              Und jetzt überschreibst Du den Wert mit dem aktuellen Datum. Immer. Ist das so gewollt?

              nicht immer, aber er überschreibt nichts. der ursprungswert bleibt erhalten.
              das das an der stelle steht, ist mehr oder weniger nur eine deklaration...
              also grad ebenfalls unerheblich und eigentlich nur zum testen gedacht...

              if($date != $datum)  
              

              Hier vergleichst Du zwei Variablen. Hast Du Dir schon einmal angeschaut, was in beiden eigentlich enthalten ist (dazu sei z.B. auf var_dump() verwiesen)?

              ich kenne var dump und ich weiß auch was in beiden variablen drin steht :)
              ja, ich lasse mir die variablen regelmäßig so ausgeben um zu schauen was genau drin ist, bei mysql querys arbeite ich aber lieber mit print_r

              {  
                mysql\_query('UPDATE date SET date=21.06.2010');  
                echo '	datum geändert?';  
              

              Hier überschreibst Du das Datum in der Datenbank noch einmal ... warum?

              das datum wurde schon vorher nicht überschrieben, warum auch immer.
              das "nocheinmal" wäre korrekt, wenns vorher schon überschrieben werden würde :) wie gesagt, ich teste mich gerade vorwärts...

              Und was ist jetzt eigentlich Dein Problem? Wo hakt's konkret?

              es hakt daran, daß der eintrag der db einfach nicht überschrieben wird.
              da der eintrag nicht verändert wird, kam ich auf die idee mit dem <form>...

              davon ab, nein, ich bin kein totaler anfänger, auch wenns so wirkt.
              aber ich war bisher noch nicht in der verlegenheit, einträge der db per php zu ändern.

              MfG,
              EKKi

              1. Mahlzeit BlackColla,

                $db\_update\_query = mysql\_query('UPDATE date SET date='.$datum.'');  
                

                Und jetzt überschreibst Du den Wert mit dem aktuellen Datum. Immer. Ist das so gewollt?
                nicht immer, aber er überschreibt nichts. der ursprungswert bleibt erhalten.
                das das an der stelle steht, ist mehr oder weniger nur eine deklaration...
                also grad ebenfalls unerheblich und eigentlich nur zum testen gedacht...

                Wenn Du - wie Du weiter unten ausführst - kein Anfänger bist, dann solltest Du wissen, dass mysql_query() einen Rückgabewert liefert (der in diesem Fall in der Variablen $db_update_query enthalten ist) und Dir mysql_error() bzw. mysql_errno() hilfreiche Informationen liefern können, was mit der letzten Datenbankabfrage (nicht) geklappt hat.

                Hier vergleichst Du zwei Variablen. Hast Du Dir schon einmal angeschaut, was in beiden eigentlich enthalten ist (dazu sei z.B. auf var_dump() verwiesen)?
                ich kenne var dump und ich weiß auch was in beiden variablen drin steht :)

                Und Du bist auch sicher, dass die beiden Zahlen- bzw. Datumsformate einfach so von PHP auf MySQL bzw. umgekehrt übertragen werden können ...?

                  mysql\_query('UPDATE date SET date=21.06.2010');  
                  echo '	datum geändert?';  
                

                Hier überschreibst Du das Datum in der Datenbank noch einmal ... warum?
                das datum wurde schon vorher nicht überschrieben, warum auch immer.
                das "nocheinmal" wäre korrekt, wenns vorher schon überschrieben werden würde :) wie gesagt, ich teste mich gerade vorwärts...

                Also wenn ich ein MySQL-System wäre, dann würde ich Dir mit den beiden weiter o.g. Funktionen schon sagen, was mich an dieser Abfrage stören würde ...

                MfG,
                EKKi

                --
                sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                1. hi,
                  danke den schreibern, ich hab das problem lokalisiert!
                  ich mußte folgendes
                  mysql_query('UPDATE date SET date=21.06.2010');
                  durch
                  mysql_query('UPDATE date SET date="21.06.2010"');
                  ersetzen :)

                  man, was lange währt wird endlich fertig :D
                  gruß black

                  1. Mahlzeit BlackColla,

                    man, was lange währt wird endlich fertig :D

                    "Fertig" wäre IMHO zwar etwas anderes - aber schön, dass Du Dein konkretes Problem beheben konntest ... :-)

                    MfG,
                    EKKi

                    --
                    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
          2. Hallo,

            FOTU? keine ahnung was das ist...
            ich arbeite bereits mit php :)

            Hättest du dir die Mühe gemacht, auf den TOFU-Link zu klicken, würdest du wissen, was FOTU ist...

            Beschreibe bitte genau, was passiert. Gibt es irgend eine Änderung in der Mysql Tabelle? Gibt es eine Ausgabe auf dem Bildschirm, wenn du das Skript ausführst?

            Lasse dir doch mal $date ausgeben - erhälst du das, was du dir vorstellst, dass in $date gespeichert ist?

            Wie sieht deine Tabelle aus?
            Heißt sie "date" und enthält auch eine Spalte namens "date"?
            Wieso möchtest du mit deinem UPDATE alle Zeilen in der DB ändern? Ist das Absicht?

            Zu guter Letzt:
            Dir wurde schon der Hinweis gegeben das Ganze über ein "PHP-Bild" zu lösen. ICh verstehe im Moment nichtmal ansatzweise, welchen Vorteil diese Mysql Lösung hat - ich vermute auch stark, dass sie absolut keinen Sinn macht.

            Achja und nochmal - wie schon von mir beschrieben:
            DU alleine entscheidest, ob der User von dem DB-Zeugs etwas erfahren soll. Nämlich z.B. mit deinem "OR die()" und auch mit den Servereinstellungen zum Fehler-Anzeigen...

            Gruß
            Alex

            1. Hallo,

              FOTU? keine ahnung was das ist...
              ich arbeite bereits mit php :)
              Hättest du dir die Mühe gemacht, auf den TOFU-Link zu klicken, würdest du wissen, was FOTU ist...

              Beschreibe bitte genau, was passiert. Gibt es irgend eine Änderung in der Mysql Tabelle? Gibt es eine Ausgabe auf dem Bildschirm, wenn du das Skript ausführst?

              nein, keine änderung in der db, obwohl es eigentlich eine geben sollte.
              ausgeben kann ich den inhalt der db!

              Lasse dir doch mal $date ausgeben - erhälst du das, was du dir vorstellst, dass in $date gespeichert ist?

              jup!

              Wie sieht deine Tabelle aus?
              Heißt sie "date" und enthält auch eine Spalte namens "date"?
              Wieso möchtest du mit deinem UPDATE alle Zeilen in der DB ändern? Ist das Absicht?

              ja, die tabelle heißt date und die spalte auch, doof ich weiß, aber paßt schon!
              es ist nur ein eintrag in der tabelle, diese eine spalte, und diese soll überschrieben werden!

              Zu guter Letzt:
              Dir wurde schon der Hinweis gegeben das Ganze über ein "PHP-Bild" zu lösen. ICh verstehe im Moment nichtmal ansatzweise, welchen Vorteil diese Mysql Lösung hat - ich vermute auch stark, dass sie absolut keinen Sinn macht.

              "php-bild"? ist doch auch nur eine referenz für eine php seite bzw eine function :) prinzipiel soll die function das übernehmen und wird in einer anderen function referenziert als picchange() :)

              Achja und nochmal - wie schon von mir beschrieben:
              DU alleine entscheidest, ob der User von dem DB-Zeugs etwas erfahren soll. Nämlich z.B. mit deinem "OR die()" und auch mit den Servereinstellungen zum Fehler-Anzeigen...

              das "or die" ist nur zu debug zwecken drin und kommt später wieder raus!

              Gruß
              Alex

              1. HAllo,

                nein, keine änderung in der db, obwohl es eigentlich eine geben sollte.

                OK

                ausgeben kann ich den inhalt der db!

                Mit der Ausgabe habe ich Eigentlich gemeint: Was siehst du am Bildschirm, wenn du das Skript aufrufst? (Stichwort Fehlermeldungen, Ergebnis deiner IF-Abfrage unten im Quelltext, ...)

                "php-bild"? ist doch auch nur eine referenz für eine php seite bzw eine function :) prinzipiel soll die function das übernehmen und wird in einer anderen function referenziert als picchange() :)

                Beschreibe uns doch nochmal die komplette Funktionsweise - wie soll das genau ablaufen?
                Ich habe aus deinen Postings rausgelesen, dass du jeden Tag ein anderes Bild willst und, dass du dafür Werte in die DB speichern musst.
                Nur leider verstehe ich den Sinn dahinter nicht.

                Wenn ich das machen wollen würde, würden mir spontan 2 Lösungen einfallen:
                1. Aufrufen des Bildes per dynamisch generiertem Dateinamen (mit Fehlerbehandlung). Es würde dann einfach jeden Tag eine andere .jpg Datei aufgerufen. Heute z.B. 2010-06-21.jpg usw.
                2. Ich Speichere mit die Dateinammen oder die Bilder in der DB ab und in einer anderen Spalte lege ich das Datum fest, an dem das Bild dran ist. Dann würde ich das Bild per bild.php oder so aufrufen. So würde ich mir das dann rausholen:
                SELECT bildname FROM bilder WHERE datum = '2010-06-21'
                Ich sehe da (außer bei der Administration dieser DB im Backend) keine Erfordernis, ein UPDATE bei jedem Seitenaufruf zu machen.

                das "or die" ist nur zu debug zwecken drin und kommt später wieder raus!

                OK. Aber das Prinzip verstehst du, dass der User von DB Abfragen nur etwas mitbekommt, wenn das im Quelltext so vorgegeben ist, oder? Wenn ich nur mysql_query(...) irgendwo im PHP-Code drinnen habe sieht der User davon rein garnichts.

                Schau doch mal, was bei deinen querys rauskommt - sind die true? Gibt es danach etwas in mysql_error()?

                1. hi,
                  danke den schreibern, ich hab das problem lokalisiert!
                  ich mußte folgendes
                  mysql_query('UPDATE date SET date=21.06.2010');
                  durch
                  mysql_query('UPDATE date SET date="21.06.2010"');
                  ersetzen :)

                  man, was lange währt wird endlich fertig :D
                  gruß black