Webhilfe.info/board

Normale Version: Countersystem
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo.

Habe mal wieder nen Problem:

Ich habe mir nen Counter geschrieben. Den in 3 Kategorien Geteilt: Online, Views u. Besucher. Hier mal für alle den Code.

Besucher:
PHP-Code:
<?
######################################
#####Ip löschen wenn die Zeit um ist.#
######################################
$sql "DELETE FROM
        besucherip
    WHERE
        `timestep`<'$dezeit'"
;
$result mysql_query($sql) OR die(mysql_error());
#######################################
#####Holt alle Einträge mit der IP#####
#######################################
$sql "SELECT
        IP
    FROM
        besucherip
         WHERE
             `IP` = '$ip'"
;
$ifip mysql_query($sql) OR die(mysql_error());
$ifip mysql_num_rows($ifip);

######################################
##Überprüft ob die Ip eingetragen ist#
######################################
if($ifip == "0")
  {
  
$sql "INSERT INTO besucherip
            (`IP`,`timestep`)
          VALUES
            ('$ip','$zeit')"
;
$result mysql_query($sql) OR die(mysql_error());
##########################################
############Zählt Die Besucher############
##########################################

$sql "UPDATE Besucher
       SET `$tag` = `$tag` + '1'
       WHERE `ID` = '$monat_zahl'"
;
   
$result mysql_query($sql) OR die(mysql_error());
$sql "UPDATE
        Besucher
    SET
           gesamt=gesamt+1
         WHERE `ID` = '$monat_zahl'"
;
   
$monat_gesamt mysql_query($sql) OR die(mysql_error());

$sql "UPDATE
        Besucher
    SET
           gesamt=gesamt+1
         WHERE `ID` = '13'"
;
    
$jahr_gesamt mysql_query($sql) OR die(mysql_error());


  }

    
$sql "SELECT `$tag` From Besucher
       WHERE `ID` = '$monat_zahl'"
;
    
$tag_gesamt mysql_query($sql) OR die(mysql_error());
    
$sql "SELECT `gesamt` From Besucher
       WHERE `ID` = '$monat_zahl'"
;
    
$monat_gesamt mysql_query($sql) OR die(mysql_error());
    
$sql "SELECT `gesamt` From Besucher
         WHERE `ID` = '13'"
;
    
$jahr_gesamt mysql_query($sql) OR die(mysql_error());
    
$sql "SELECT `$gestern_tag` From Besucher
         WHERE `ID` = '$gestern_monat'"
;
    
$gestern_gesamt mysql_query($sql) OR die(mysql_error());


$row_b1 mysql_fetch_assoc($tag_gesamt);
$row_b2 mysql_fetch_assoc($gestern_gesamt);
$row_b3 mysql_fetch_assoc($monat_gesamt);
$row_b4 mysql_fetch_assoc($jahr_gesamt);
?>
Views:
PHP-Code:
<?

$sql 
"UPDATE Views
       SET `$tag` = `$tag` + '1'
       WHERE `ID` = '$monat_zahl'"
;
   
$result mysql_query($sql) OR die(mysql_error());
$sql "UPDATE
        Views
    SET
           gesamt=gesamt+1
         WHERE `ID` = '$monat_zahl'"
;
   
$monat_gesamt mysql_query($sql) OR die(mysql_error());

$sql "UPDATE
        Views
    SET
           gesamt=gesamt+1
         WHERE `ID` = '13'"
;
    
$jahr_gesamt mysql_query($sql) OR die(mysql_error());

    
$sql "SELECT `$tag` From Views
       WHERE `ID` = '$monat_zahl'"
;
    
$tag_gesamt mysql_query($sql) OR die(mysql_error());
    
$sql "SELECT `gesamt` From Views
       WHERE `ID` = '$monat_zahl'"
;
    
$monat_gesamt mysql_query($sql) OR die(mysql_error());
    
$sql "SELECT `gesamt` From Views
         WHERE `ID` = '13'"
;
    
$jahr_gesamt mysql_query($sql) OR die(mysql_error());
    
$sql "SELECT `$gestern_tag` From Views
         WHERE `ID` = '$gestern_monat'"
;
    
$gestern_gesamt mysql_query($sql) OR die(mysql_error());


$row_v1 mysql_fetch_assoc($tag_gesamt);
$row_v2 mysql_fetch_assoc($gestern_gesamt);
$row_v3 mysql_fetch_assoc($monat_gesamt);
$row_v4 mysql_fetch_assoc($jahr_gesamt);

?>
online:
PHP-Code:
<?

######################################
#####Ip löschen wenn die Zeit um ist.#
######################################
$sql "DELETE FROM
        onlineip
    WHERE
        `timestep`<'$dezeitonline'"
;
$result mysql_query($sql) OR die(mysql_error());
#######################################
#####Holt alle Einträge mit der IP#####
#######################################
$sql "SELECT
        IP
    FROM
        onlineip
         WHERE
             `IP` = '$ip'"
;
$ifip mysql_query($sql) OR die(mysql_error());
$ifip mysql_num_rows($ifip);
######################################
##Überprüft ob die Ip eingetragen ist#
######################################
if($ifip == "0")
  {
  
$sql "INSERT INTO onlineip
            (`IP`,`timestep`)
          VALUES
            ('$ip','$zeit')"
;
$result mysql_query($sql) OR die(mysql_error());
  }

    
$sql "SELECT `ID` From onlineip";
$ifip mysql_query($sql) OR die(mysql_error());
$ifip mysql_num_rows($ifip);
?>

Die 3 Datein haben natürlich noch keine Verbindung zu einer Datenbank. Ich include die 3 Datein also in einer externen Datei(counter.php) und dort auch die config(dort ist dann auch das Layout der Wiedergabe)
config:
PHP-Code:
<?
    error_reporting
(E_ALL);

    
define('MYSQL_HOST',     '**********');
    
define('MYSQL_USER',     '**********');
    
define('MYSQL_PASS',     '**********');
    
define('MYSQL_DATABASE''**********');

    @
mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS) OR die(mysql_error());
    
mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());


$zeit           time(); //timestep
$dezeit         time()-3600;// Zeit nach der ein Besucher wieder gezählt werden soll. Dann wird die IP aus der DB gelöscht. 3600 Sekunden=1 Stunde. Immer in Sekunden angeben!
$dezeitonline   time()-300// Zeit nach der ein Besucher als nicht mehr online gilt, außer seine IP wurde neu eingetragen
$ip             getenv("REMOTE_ADDR");
$tag date("j"); //j    Tag des Monats ohne führende Nullen    1 bis 31
$monat_zahl date("n"); //n    Monatszahl, ohne führende Nullen    1 bis 12
$gestern_tag date('j'time() - 24*60*60);    // Tag von gestern 1-31
$gestern_monat date('n'time() - 24*60*60); // Monat von gestern 1-12

$tag "m".$tag;
$gestern_tag "m".$gestern_tag;
?>
counter.php:
PHP-Code:
$hauptpath "/var/www/web21/html/newdesign/cms/counter";

include(
$hauptpath."/config/config.php");
include(
$hauptpath."/besucher/count_besucher.php");
include(
$hauptpath."/views/count_views.php");
include(
$hauptpath."/online/online_besucher.php");

####kommentare######

?>


<table style="border:0px;">
    <tr>
             <td>
                 <b><p>Online:</p></b>
                 </td>
                 <td>
                 <p><?php echo $ifip;?></p>
                 </td>
    </tr>
         <tr>
             <td>
                 <p><b>Besucher</b></p>
                 </td>
                 <td>
                 &nbsp;
                 </td>
         </tr>
                 <tr>
                     <td>
                         Gesamt:
                         </td>
                         <td>
                         <?php echo $row_b4["gesamt"];?>
                         </td>
                 </tr>
                 <tr>
                     <td>
                         Heute:
                         </td>
                         <td>
                         <?php echo $row_b1["$tag"];?>
                         </td>
                 </tr>
                 <tr>
                     <td>
                         Gestern:
                         </td>
                         <td>
                         <?php echo $row_b2["$gestern_tag"];?>
                         </td>
                 </tr>
                 <tr>
                     <td>
                         im Monat:
                         </td>
                         <td>
                         <?php echo $row_b3["gesamt"];?>
                         </td>
                 </tr>
         <tr>
             <td>
                 <p><b>Views</b></p>
                 </td>
                 <td>
                 &nbsp;
                 </td>
         </tr>
                 <tr>
                     <td>
                         Gesamt:
                         </td>
                         <td>
                         <?php echo $row_v4["gesamt"];?>
                         </td>
                 </tr>
                 <tr>
                     <td>
                         Heute:
                         </td>
                         <td>
                         <?php echo $row_v1["$tag"];?>
                         </td>
                 </tr>
                 <tr>
                     <td>
                         Gestern:
                         </td>
                         <td>
                         <?php echo $row_v2["$gestern_tag"];?>
                         </td>
                 </tr>
                 <tr>
                     <td>
                         im Monat:
                         </td>
                         <td>
                         <?php echo $row_v3["gesamt"];?>
                         </td>
                 </tr>
</table> 

Die Counter.php include ich dann wieder in mein Layout:
PHP-Code:
<?php include("cms/counter/stat/counter.php");?>

Layout: http://www.blacksoul.rof-aue.de/newdesign/
Counter.php: http://blacksoul.rof-aue.de/newdesign/cm...ounter.php

Jetzt habe ich ein Problem: Beim Layout zählt er die Views irgednwie doppelt, aber bei der Counter nur einfach.

Bei Besucher muss ich noch gucken, ob da nen fehler vorliegt, oder es an der IP Sperre liegt, das es sich selten erhöht(im mom 1).

MfG
PS: Weiss jemand warum 1. 2x zählen und beim 2. nur 1x ?
Code:
$sql = "SELECT `$tag` From Views
$sql = "SELECT `$gestern_tag` From Views
Weiß jetzt nicht woran es genau liegt aber diese beiden Zeilen fielen mir auf. Wieso steht da $tag und $gestern_tag? Das sind Variablen und keine Attribute.
Ja. Wenn man die Variablen in ` ` setzt, dann wird der Variablen Inahtl als spaltenname genommen.
D.h. ich suche den tag von Gestern (also im mom der 14.) und dann sucht er die Spalte zum passenden Monat mit der 14(bzw. hier m14)

MfG
Seltsame DB Strukturierung hast du Smile

Zitat: Ja. Wenn man die Variablen in ` ` setzt, dann wird der Variablen Inahtl als spaltenname genommen.

Nee das hat damit nichts zutun Wink Das kommt einfach auf den Syntax an. Wenn du SELECT * FROM `$foobar` schreibst dann nimmt der auch Tabelle $foobar und nicht Spalte^^
Hö? Gehen wir mal davon aus, dass in der Variablen $tag eine 14 steht, dann würde die SQL ja wie folgt aussehen.

Code:
$sql = "SELECT `14` From Views
Hast du ein Attribut was 14 heißt? Hast du etwa 31 Attribute angelegt jeweils mit der Bezeichnung 1 bis 31?
Nicht ganz.
Ich habe Attribute angelegt von m1 bis m31 *gg*. Oben lass ich auch $tag von 14 auf m14 umschreiben :-)

MfG
Hm, naja es gibt halt immer mehr Lösungen. Nur denke ich gäbe es auch bessere Möglichkeiten das umzusetzen als das du es getan hast. Aber mache erstmal so weiter, jeder soll selber ausprobieren und selber lernen.
es gibt mit sicherheit bessere lösungen, nur ich kann es ja noch net so gut *gg*

weiss eigentlich nun wer(back to topic) warum auf der index des neuen designs es 2 mal bei den views gezählt wird? und normal bei counter.php nur 1x ?

mfG
Kann es sein, dass du in deinem Script ausversehen irgendwo die views.php, oder wie die heißt, noch ein mal aufrufst? Sodass du im Prinzip 2 Mal den Counter erhöhen lässt?
dürfte nicht sein, da wenn ich die counter.php so aufrufe funktioniert ja alles prima :-)
ich habe mir das laout auch nochmal angeguckt, und dort ruf ich die seite nicht nochmal auf :-)
also daran kann es nicht liegen

MfG
Seiten: 1 2
Referenz-URLs