Ankündigung

Einklappen
Keine Ankündigung bisher.

UPDATE table SET feld=feld+1 ?

Einklappen

Neue Werbung 2019

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

  • UPDATE table SET feld=feld+1 ?

    Hallo...
    ich stelle mich mal wieder irgendwie ... an. ich möchte einen Zähler in meiner DB erhöhen, was ich mit folgendem code vorhatte:

    Code:
    $counter= "UPDATE pixx SET count = count+1 
    	WHERE ebene = '$e'
                    AND x = '$x'";
    Wenn der Wert in der Datenbank erhöht wurde, soll eine Weiterleitung auf eine andere Page mittel HEADER(LOCATION) erfolgen.
    Die Weiterleitung ist kein Problem, jedoch klappt die Countererhöhung nicht. Fehlt hier noch code oder ist was falsch?

    Muss ich mit der HEADER-Geschichte irgendwie im Script warten bis ich von der DB die Rückmeldung habe dass der Wert erhöht wurde oder kann da nix schiefgehen?

  • #2
    Natürlich kann da was schiefgehen, wenn Verbindung zu DB kracht, oder Verbindung nicht aufgenommen werden kann.
    Und natürlich wird der Counter nur erhöht wenn x = $x und ebene = $e ist.
    Was steht den in den Variablen $e und $x....

    Kommentar


    • #3
      Die SQL-Anfrage ist syntaktisch korrekt, aber schreib das Zeug bitte in eine Zeile bzw mach den Zeilenumbruch vor WHERE und AND raus.

      Muss ich mit der HEADER-Geschichte irgendwie im Script warten bis ich von der DB die Rückmeldung habe dass der Wert erhöht wurde oder kann da nix schiefgehen?
      Du solltest die Anfrage starten, bevor du den Browser umleitest, also header verwendest.

      Was sagt denn mysql_error() nach der Anfrage?

      Kommentar


      • #4
        Zitat von Saraneus
        Die SQL-Anfrage ist syntaktisch korrekt, aber schreib das Zeug bitte in eine Zeile bzw mach den Zeilenumbruch vor WHERE und AND raus.
        Was hast du gegen den Zeilenumbruch? Bei Abfragen über mehrere Zeilen lassen sich mögliche Fehler wesentlich besser finde, da so auch die Zeilennummer in der Fehlermeldung aussagekräftig ist.

        Kommentar


        • #5
          Das
          Code:
          $buf = "bla
              hier gehts weiter
                  und hier";
          ist Quatsch, so ist's richtig:
          Code:
          $buf = "bla";
          $buf .= "\nhier gehts weiter";
          $buf .= "\nund hier";
          (wenn du unbedingt Zeilenumbrüche drin haben willst)

          Kommentar


          • #6
            Ich bekomme keine Fehlermeldung, aber auch keine Erhöhung des Counters in der DB
            In den Variablen stehen entweder Zahlen ($x) oder Texte ($e)

            Wird mit der Zeile die ich geschrieben habe die Abfrage denn wirklich gestartet? Fahlt da nicht noch eine Zeile? Und wie Prüfe ich im Script ob die Abfrage erfolgreich war?

            Kommentar


            • #7
              zum testen, lass mal die weiterleitung weg.

              benutze:
              PHP-Code:
              <?php

              error_reporting
              (E_ALL); // und in dem Update

              or die (mysql_error());

              ?>
              Gruß JEGO ;-)

              Ein PHP Script tut, was Du schreibst, nicht was Du willst.

              Kommentar


              • #8
                Mach die Weiterleitung (header) zu Debugzwecken weg. Gib den konstruierten Query aus und poste ihn hier samt dem entsprechenden Datensatz und der Struktur der Tabelle.

                Kommentar


                • #9
                  Zitat von Saraneus
                  Die SQL-Anfrage ist syntaktisch korrekt, aber schreib das Zeug bitte in eine Zeile bzw mach den Zeilenumbruch vor WHERE und AND raus.
                  Die Zeilenumbrüche wären schon ok, aber die Einrückungen nicht. Aber schau mal das an: http://tut.php-q.net/mysql-einrueck.html, das zeigt wie man Abfragen übersichtlich gestalten kann.
                  Gruss
                  L

                  Kommentar


                  • #10
                    Wenn du das so richtig human readable gestalten willst, musst du den Query irgendwo als Template auslagern. Im Code haben solche komischen Konstrukte eigentlich nichts verloren, weil das Overhead ist. Zuviele Sonderzeichen (Tabs, line breaks), die erst gesetzt werden und anschließend wieder rausgefiltert oO

                    Kommentar


                    • #11
                      Zitat von Saraneus
                      Wenn du das so richtig human readable gestalten willst, musst du den Query irgendwo als Template auslagern. Im Code haben solche komischen Konstrukte eigentlich nichts verloren, weil das Overhead ist. Zuviele Sonderzeichen (Tabs, line breaks), die erst gesetzt werden und anschließend wieder rausgefiltert oO
                      Quatsch!
                      Zum Problem: Ich glaub die WHERE Bedingung ist einfach falsch.

                      Kommentar


                      • #12
                        sehr konstruktiv, Zergling.

                        Kommentar


                        • #13
                          Code:
                          $url = $_GET['url'];
                          $ebene = $_GET['e'];
                          $map = $_GET['m'];
                          $x = $_GET['x'];
                          $y = $_GET['y'];
                          
                          // Testausgabe ob Werte ankommen
                          echo "Ebene: $ebene 
                          ";
                          echo "map: $map 
                          ";
                          echo "X=$x 
                          ";
                          echo "Y=$y 
                          ";
                          
                          //================
                          //Counter erhöhen
                          //================
                          $counter= "UPDATE pixx SET count = count+1 WHERE ebene = '$ebene' AND map_code = '$map' AND koord_x = '$x' AND koord_y = '$y'";
                          
                          if (mysql_db_query ($mysql_db, $counter, $mysql_ce)) {
                          print ("Der Counter wurde hochgesetzt");
                          } else {
                          print ("Es traten Probleme auf.");
                          }
                          
                          //echo "ACHTUNG: Weiterleitung auf Seite... $url";
                          // header("Location: $url");
                          Hier die Tabelle mit folgendem Eintrag:

                          Tabelle : pixx
                          id = 1
                          ebene = 50
                          map_code = PLZ8
                          koord_x = 50
                          Koord_y = 100
                          count = 0

                          Hier die Ausgabe im Browser:

                          Ebene: 50
                          map: PLZ8
                          X=50
                          Y=100
                          Es traten Probleme auf.

                          ???

                          Kommentar


                          • #14
                            @Saraneus:
                            Was postest du in einem Anfänger Forum so nen Mist und unlogisch ist es obendrei. Wenn dir schon Leerzeichen und Tabulatoren zuviel Overhead sind, warum dann auslagern? Und warum sollte es ausgelagert lesbarer sein?

                            @laufkraft
                            Poste dein SQL-Statement mit den eingesetzten Variablen mal in phpMyAdmin und schau was die Antwort ist

                            Kommentar


                            • #15
                              wenn ich im PHP-MyAdmin
                              Code:
                              UPDATE pixx SET count = count+1 WHERE ebene = '50' AND map_code = 'PLZ8' AND `koord_x` = '50' AND `koord_y` = '100'
                              eingebe, dann gehts...

                              Ich schnalls nicht... Stimmt doch was mit meinen Variablen nicht, aber was?

                              Kommentar

                              Lädt...
                              X