Counter - Kein Update in DB?

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

  • Counter - Kein Update in DB?

    Hallo liebe Gemeinde!

    Habe folgendes Problem: Ich habe einen Counter, der bei jedem Klick auf den Submit Button, meine DB Tabelle entsprechend updaten soll, das Script allerdings nicht gänzlich tut. Anzumerken sei, dass man darüber hinaus den Zweck angeben muss, weswegen man den Counter klickt (der Sinn in diesem Unterfangen sei mal dahingestellt). Problem: Es wird nur der Zweck und die Zeit geupdatet, nicht aber Counter + 1.

    Hier mein Script.

    PHP-Code:
            <?php
            
    if(!isset($_POST['counter']))
                
    $intCount 1;
            else
                
    $intCount intval($_POST['counter']) + 1;

            if(isset(
    $_GET['id'])) {
            
    $id mysql_real_escape_string($_GET['id']);
            
    $upSQL 'UPDATE co1 SET offer_counter = \''$int_count .'\', comment = \''mysql_real_escape_string(utf8_decode($_POST['zweck'])) .'\', date_latest = NOW() WHERE kdid = \''$id .'\'';

            if(!
    mysql_query($upSQL))
                echo 
    'Anfrage fehlgeschlafen. 'mysql_error(); 
            } 
            
    ?>
            
            <table width="600px" cellspacing="2" cellpadding="2" bgcolor="#E8E9EF">
                <tr>
                    <form name="offer" action="" method="post" accept-charset="UTF-8" />
                        <td width="300px" align="LEFT">
                            <input type="text" size="25" name="zweck" placeholder="Bitte Zweck angeben" value="" required>
                            <input type="hidden" name="counter" value="<?=$int_count?>" />
                            <input type="hidden" name="versteckt">
                        </td>
                        <td width="300px" align="RIGHT">
                            <input type="submit" name="plus" value="Angebot erstellen" />
                        </td>
                    </form>
                </tr>
            </table>
    Mir ist aufgefallen, dass wenn ich manuell über phpmyadmin die Werte besagtes Datensatzes ändere, er im Bereich offer_counter den von mir manuell eingetragenen Wert mit 1 ersetzt, anstelle +1 zu machen.

    Bin echt ratlos!
    Zuletzt geändert von N4N0; 27.03.2015, 01:19.
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?

  • #2
    Es gibt einen Unterschied zwischen $intCount und $int_count.

    Peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Mein Gott wie banal! Danke dir! Es funktioniert!

      Manchmal sieht man den Wald vor lauter Bäumen nicht!

      Aber anbei noch zwei Fragen:
      1. Warum ist die Zeit, die mit dem Befehl "NOW()" aktualisiert wird, immer eine Stunde von der normalen Zeit versetzt? Beispiel: Wir haben 13:10 Uhr und das System zeigt an, dass die letzte Änderung um 12:10 Uhr erfolgt ist.

      2. Wie bekomme ich meine Seite dazu, NACH dem DB Update neuzuladen, um die Ergebnisse direkt anzuzeigen?

      Liebe Grüße,
      N4N0
      RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?

      Kommentar


      • #4
        Dass diesen Counter jeder Benutzer manipulieren kann, indem er einfach das hidden field vor dem Absenden manipuliert, ist dir aber klar …?
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          HTML-Code:
          <input type="hidden" name="counter" value="<?php ' . mysql_real_escape_string($int_count) . ' ?>">
          Besser so?
          Zuletzt geändert von N4N0; 27.03.2015, 14:23.
          RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?

          Kommentar


          • #6
            Was hat mysql_real_escape_string() in der HTML-Ausgabe verloren?

            Kommentar


            • #7
              Da mir in den Raum geworfene Sätze nicht wirklich weiterhelfen und das nicht Gegenstand meiner Frage ist: Keiner einen Tipp zur Ausgangsfrage?


              Liebe Grüße,
              N4N0
              RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?

              Kommentar


              • #8
                Na vielleicht checkst du erst mal, ob dein hidden field überhaupt den Wert hat, den du annimmst …?
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Zitat von wahsaga Beitrag anzeigen
                  Na vielleicht checkst du erst mal, ob dein hidden field überhaupt den Wert hat, den du annimmst …?
                  Und inwiefern hat das jetzt mit Frage 1, bzw. 2 zu tun?
                  RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?

                  Kommentar


                  • #10
                    Zitat von N4N0 Beitrag anzeigen
                    1. Warum ist die Zeit, die mit dem Befehl "NOW()" aktualisiert wird, immer eine Stunde von der normalen Zeit versetzt? Beispiel: Wir haben 13:10 Uhr und das System zeigt an, dass die letzte Änderung um 12:10 Uhr erfolgt ist.
                    Wahrscheinlich läuft dein Datenbankserver in einer anderen Zeitzone.

                    Zitat von N4N0 Beitrag anzeigen
                    2. Wie bekomme ich meine Seite dazu, NACH dem DB Update neuzuladen, um die Ergebnisse direkt anzuzeigen?
                    Indem du das EVA-Prinzip einhältst und nicht Verarbeitung mit Ausgabe vermischst. Zum Beispiel Datenbankabfragen haben inmitten der HTML-Ausgabe nichts verloren.

                    Außerdem solltest du generell deinen Code überarbeiten. Der HTML-Code hat sehr viele Fehler. Bitte mal die HTML-Grundlagen aneignen, bevor man sich an PHP heranwagt.

                    Und die mysql_* Funktionen sind veraltet und sollten nicht mehr verwendet werden. Verwende stattdessen mysqli oder PDO.

                    utf8_decode() ist Quatsch. Sorge einfach dafür, dass du überall die richtige Kodierung verwendest.

                    Kommentar


                    • #11
                      Zitat von h3ll Beitrag anzeigen
                      Indem du das EVA-Prinzip einhältst und nicht Verarbeitung mit Ausgabe vermischst. Zum Beispiel Datenbankabfragen haben inmitten der HTML-Ausgabe nichts verloren.

                      Außerdem solltest du generell deinen Code überarbeiten. Der HTML-Code hat sehr viele Fehler. Bitte mal die HTML-Grundlagen aneignen, bevor man sich an PHP heranwagt.
                      Versteh ich nicht, denn so wurde mir die Aufmachung von einem "Experten" dargeboten. Wo hat mein HTML Code denn "sehr viele Fehler"? Und was meinst du mit "Datenbankabfragen inmitten der HTML Ausgabe"? Wie soll das Problem sonst zu lösen sein, wenn man im Netz nichts findet und mir die Lösung als solches präsentiert wurde?

                      Hast du einen Denkanstoß wie das mit dem Counter sonst realisierbar ist?

                      Liebe Grüße,
                      N4N0
                      RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?

                      Kommentar


                      • #12
                        Zitat von N4N0 Beitrag anzeigen
                        Wo hat mein HTML Code denn "sehr viele Fehler"?
                        Zum Beispiel die ungültige Verschachtelung – tr darf kein form als Kindelement enthalten. Entweder muss das Formular um die gesamte Tabelle gelegt werden, oder innerhalb einer einzigen Tabellenzelle sein.

                        Und was meinst du mit "Datenbankabfragen inmitten der HTML Ausgabe"?
                        EVA-Prinzip wurde schon genannt.

                        In einem sauberen Script verarbeitet man erst alle Eingabewerte und besorgt sich die nötigen Ausgabedaten, bevor man mit der Ausgabe anfängt.
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          Zitat von N4N0 Beitrag anzeigen
                          Wo hat mein HTML Code denn "sehr viele Fehler"?
                          <form> in <tr> nicht erlaubt.

                          "px" im width-Attribut ist Quatsch.

                          Tabellen sollten nicht fürs Layout missbraucht werden.

                          Formatierungen (Breiten, Abstände, Farben, usw.) gehören in eine CSS-Datei und nicht in HTML-Attribute.

                          Kommentar


                          • #14
                            Zitat von N4N0 Beitrag anzeigen
                            Versteh ich nicht, denn so wurde mir die Aufmachung von einem "Experten" dargeboten.
                            Hättst du mal lieber einen Fachmann oder Spezialisten befragt ...

                            Hast du einen Denkanstoß wie das mit dem Counter sonst realisierbar ist?
                            Die Variable einfach nicht zum Browser des Endusers durchreichen. Es reicht doch, wenn du direkt im PHP-Script auf dem Server die Variable um eins hochzählst, wenn die Formulareingaben erfolgreich überprüft wurden.

                            Da mir in den Raum geworfene Sätze nicht wirklich weiterhelfen ...
                            Wann immer du Benutzereingaben in HTML einbettest, benutze htmlspecialchars(). Mysql_real_escape_string() ist fürs Einbauen von Benutzereingaben in SQL-Queries gedacht.
                            Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

                            Kommentar


                            • #15
                              Zitat von fireweasel Beitrag anzeigen
                              Hättst du mal lieber einen Fachmann oder Spezialisten befragt ...



                              Die Variable einfach nicht zum Browser des Endusers durchreichen. Es reicht doch, wenn du direkt im PHP-Script auf dem Server die Variable um eins hochzählst, wenn die Formulareingaben erfolgreich überprüft wurden.


                              Wann immer du Benutzereingaben in HTML einbettest, benutze htmlspecialchars(). Mysql_real_escape_string() ist fürs Einbauen von Benutzereingaben in SQL-Queries gedacht.

                              Danke für die Hilfe! Hab jetzt mal einen anderen Counter getestet, der von Fehlermeldungen nur so übergesprudelt hat. Hab alle bis auf einen ausmerzen können. Den letzten finde ich aber ums Verrecken nicht.

                              Laut Debugging, kommt er mir mit "Cannot process SQL count totals query". Die Fehlermeldung in Zeile 29. Aber selbst eine oder mehrere Zeilen vorher lassen mich weiterhin ratlos dastehen. Vielleicht liegt's auch an der Uhrzeit ..

                              PHP-Code:
                              <?php
                              $link 
                              mysqli_connect('''''') or die('Cannot connect to database server');
                              mysql_select_db('') or die('Cannot select database');
                              // if this is a postback ...
                              if(isset($_POST['color_name'])) {
                              // create array of acceptable values
                              $ok = array('red''green''blue''black');
                              // if we have an acceptable value for color_name ...
                              if(in_array($_POST['color_name'], $ok)) {
                              // update the counter for that color
                              $q mysql_query("UPDATE colorcounter SET color_count = color_count + 1 WHERE color_name = '" $_POST['color_name'] . "'") or die ("Error updating count for " $_POST['color_name']);
                              }
                              }
                              // get current color click counts
                              $rs mysql_query("SELECT color_count, color_name FROM colorcounter") or die('Cannot process SQL count totals query');
                              if(
                              mysql_num_rows($rs) > 0) {
                              while(
                              $row mysql_fetch_array($rs)) {
                              $count[$row['color_name']] = $row['color_count'];
                              }
                              }
                              ?>
                              Jemand ne Idee?
                              RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?

                              Kommentar

                              Lädt...
                              X