Wert um eins erhöhen funktioniert nicht

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

  • Wert um eins erhöhen funktioniert nicht

    Habe folgenden Code um die visits meiner seiten zu zählen
    PHP-Code:
      if(isset($_GET['go'])){
          
    $site mysql_real_escape_string($_GET['go']);
          if( !
    mysql_num_rows(mysql_query("SELECT * FROM views WHERE site = '$site'") ) ) {
            
    mysql_query("INSERT INTO views (site, clicks) VALUES ('$site', '1')");
          }                 
          else{
            
    mysql_query("UPDATE views SET clicks = clicks+1 WHERE site = '$site'");      
          }
      } 
    Jetzt wird der Wert von Clicks aber um 2 erhöht (manchmal auch nur um eins..) jemand ne ahnung an was das liegt?

    danke schonmal
    anotherstyle.de :: gedanken, texte, tutorials - Warum auch nicht?

  • #2
    heisst das nicht "clicks++1" ansonsten überschreibt er doch den Wert, oder wie war das noch?

    Kommentar


    • #3
      Original geschrieben von Nikefly
      heisst das nicht "clicks++1" ansonsten überschreibt er doch den Wert, oder wie war das noch?
      wie war das noch? keine ahnung, etwas anderes halten?

      1. setze auf die 'site' spalte einen UNIQUE index.
      2. setze den default-wert der site-spalte auf 1 (und auf INT falls nicht schon geschehen).
      3.
      Code:
      INSERT INTO views (site) VALUES ('$site')
         ON DUPLICATE KEY UPDATE clicks=clicks+1
      4. mysql_num_rows(mysql_query("SELECT *")) will ich nie wieder sehen. denk nach warum.

      Kommentar


      • #4
        on duplicate geht leider nur mit mysql > 4.1 oder so ...

        Kommentar


        • #5
          @firstlord18
          machst du bitte dein banner aus dein signatur raus. oder deutlich kleiner! (88x31)
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #6
            Original geschrieben von firstlord18
            on duplicate geht leider nur mit mysql > 4.1 oder so ...
            stimmt. >= 4.1

            in dem fall eben:
            1. DEFAULT auf 0
            2.
            Code:
            INSERT IGNORE INTO ...
            UPDATE clicks=clicks+1 WHERE ...
            spart immer noch eine abfrage.

            ps. die welt ist so verdammt klein, was?

            Kommentar


            • #7
              danke schonmal so weit, allerdings funktioniert es immer noch nicht

              habs bis jetzt so:

              PHP-Code:

                
              if(isset($_GET['go'])){
                    
              $site mysql_real_escape_string($_GET['go']);
                    if(
              mysql_num_rows(mysql_query("SELECT id FROM views WHERE site = '$site'") ) ) {
                      
              mysql_query("INSERT INTO views (site) VALUES ('$site')
               ON DUPLICATE KEY UPDATE clicks=clicks+1"
              );
                    }                 
                } 
              warum eigentlich nicht "mysql_num_rows(mysql_query("SELECT *"))", sorry, haber noch ziemlich keine ahnung von der materie

              benutze MySQL 4.1.10a
              anotherstyle.de :: gedanken, texte, tutorials - Warum auch nicht?

              Kommentar


              • #8
                Original geschrieben von Sucker
                [B]danke schonmal so weit, allerdings funktioniert es immer noch nicht

                habs bis jetzt so:
                natürlich funktioniert's nicht. das IF muss weg. es bleibt nur noch:

                PHP-Code:
                function updateClicks($site) {
                    
                $site mysql_real_escape_string($site);
                    
                $qry  "INSERT INTO views (site) 
                                VALUES ('%s') 
                                ON DUPLICATE KEY 
                                UPDATE clicks=clicks+1"
                ;
                    
                $sql  sprintf($qry$site    );
                    
                mysql_query($sql) or die(mysql_error());
                }

                if( isset(
                $_GET['go']) ) {
                    
                updateClicks($_GET['go']);


                warum eigentlich nicht "mysql_num_rows(mysql_query("SELECT *"))", sorry, haber noch ziemlich keine ahnung von der materie
                denk mal darüber nach, was die datenbank machen muss, wenn du so die anzahl an zeilen abfragst.

                Kommentar


                • #9
                  wow danke!

                  aber wird leider immer noch um 2 erhöht und als anfangswert wird 3 gesetzt oO?
                  anotherstyle.de :: gedanken, texte, tutorials - Warum auch nicht?

                  Kommentar


                  • #10
                    Original geschrieben von Sucker
                    wow danke!

                    aber wird leider immer noch um 2 erhöht und als anfangswert wird 3 gesetzt oO?
                    dann rufst du das ding anscheinend zu oft auf oder du hast die datenbank falsch eingerichtet.
                    1. rest des codes zeigen
                    2. 'exportiere' die tabelle über phpmyadmin - nicht die daten, nur die struktur.

                    Kommentar

                    Lädt...
                    X