Autor Zpráva
Angorass
Profil *
Ahoj, mám problém. Koduju web a jsem začátečník. Chtěl jsem přidat počítadlo přístupů pomocí mysql. Bohužel mi to nefunguje a hází mi to chybu na několika řádcích. Příkaz na vytvoření tabulky i samotný kod je zde. Nevíte někdo, kde by mohla být chyba? Děkuji
CREATE TABLE `pocitadlo` (
  `ip` varchar(19) NOT NULL DEFAULT '',
  `datum` date NOT NULL DEFAULT '0000.00.00',
  `cas` int(10) NOT NULL DEFAULT '0',
  KEY `datum` (`datum`)
) TYPE=MyISAM;

mysql_connect("https://sql7.endora.cz", "write1346314025", "password");
mysql_select_db("write1346314025");
    function pocitadlo (){
        $ip = getenv ("REMOTE_ADDR");
        $dotaz = mysql_query("SELECT * FROM pocitadlo WHERE datum=NOW() AND ip='$ip'");
        if (mysql_num_rows($dotaz))
            $dotaz2=mysql_query ("UPDATE pocitadlo SET cas='".time()."' WHERE datum = NOW() AND ip='$ip'");
            else 
            $dotaz2=mysql_query ("INSERT INTO pocitadlo (ip, datum, cas) VALUE ('$ip',NOW(),'".time()."');");
        }
    function navstevy (){
        $navstevnici = array();
        $dotaz3 = mysql_query ("SELECT count(*) FROM pocitadlo");
        list ($navstevnici['celkem'])=mysql_fetch_array($dotaz3);
        return $navstevnici;
        }
pocitadlo ();
$navstevnici = navstevy ();
echo "CELKEM:".$navstevnici['celkem'];
Alphard
Profil
Kdybyste napsal, jakou chybu, nemuseli by lidé ochotní poradit pročítat každý znak kódu.
Angorass
Profil *
Warning: mysql_connect(): Unknown MySQL server host 'https' (2) in /home/users/write/write.4fan.cz/web/oblibene.php on line 11 Warning: mysql_select_db(): Access denied for user 'zakaznik'@'srv71.endora.cz' (using password: NO) in /home/users/write/write.4fan.cz/web/oblibene.php on line 12 
Warning: mysql_select_db(): A link to the server could not be established in /home/users/write/write.4fan.cz/web/oblibene.php on line 12 Warning: mysql_query(): Access denied for user 'zakaznik'@'srv71.endora.cz' (using password: NO) in /home/users/write/write.4fan.cz/web/oblibene.php on line 15
Warning: mysql_query(): A link to the server could not be established in /home/users/write/write.4fan.cz/web/oblibene.php on line 15 Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /home/users/write/write.4fan.cz/web/oblibene.php on line 16 
Warning: mysql_query(): Access denied for user 'zakaznik'@'srv71.endora.cz' (using password: NO) in /home/users/write/write.4fan.cz/web/oblibene.php on line 19
Warning: mysql_query(): A link to the server could not be established in /home/users/write/write.4fan.cz/web/oblibene.php on line 19 Warning: mysql_query(): Access denied for user 'zakaznik'@'srv71.endora.cz' (using password: NO) in /home/users/write/write.4fan.cz/web/oblibene.php on line 23 
Warning: mysql_query(): A link to the server could not be established in /home/users/write/write.4fan.cz/web/oblibene.php on line 23 Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/users/write/write.4fan.cz/web/oblibene.php on line 24
Alphard
Profil
Váš poskytovatel vám přímo uvedl tuto adresu databáze? localhost nezmiňoval?
Angorass
Profil *
Máte pravdu. Špatně jsem si přečetl co o tom bylo napsáno. Localhost je jméno hostitele. Avšak problém přetrvává. Znamená toto, že mám špatně vybranou databázi?
Warning: mysql_connect(): Access denied for user 'write1346314025'@'srv71.endora.cz' (using password: YES) in /home/users/write/write.4fan.cz/web/oblibene.php on line 11 Warning: mysql_select_db():
Alphard
Profil
Přístup odmítnut, špatně je přihlašovací jméno nebo heslo.
Angorass
Profil *
Děkuji, už se připojím normálně na databázi. Ale mám jeden problém. Zapisuje mi to každý přístup, která tam udělá uživatel. Jak udělat, aby se uživatel zapisoval jen jednou? (V kodu jsem to zkusil přes IP adresu a nefunguje mi to)
jenikkozak
Profil
Angorass:
Abychom mohli najít chybu, bude se hodit ten Váš skript.
Angorass
Profil *
Ten jsem dal do prvniho příspěvku.
Tori
Profil
Angorass:
Jak udělat, aby se uživatel zapisoval jen jednou?
Jednou za den, jednou za rok, jednou za hodinu ... ? Upřesněte to trochu. Šlo by to řešit vhodně nastaveným unikátním klíčem v DB a v SQL dotazu místo INSERT používat INSERT ... ON DUPLICATE KEY UPDATE, a v každém případě bych přidala sloupeček pro počítání přístupů z jedné IP v každém časovém úseku (hodina, den, rok,..).
Angorass
Profil *
Myslel jsem to tak, aby se IP do počtu návštev započítala jen jednou (aby nevznikaly duplikáty jedné a té samé IP).
Rellik
Profil
Angorass:
aby nevznikaly duplikáty jedné a té samé IP
V tom případě to započítá pouze jednoho uživatele, který je za routerem. Ono jednu a tu samou IP adresu může mít i 200 uživatelů, třeba takový celý panelák. Má jedno připojení a třeba 300 účastníků. Kdyby se těch 300 účastníků podívalo na ten web v jeden den, započítá to pouze jednoho. Takové počitadlo je celkem zbytečné vymýšlet a na web vůbec dávat.
Lepší je zkombinovat informace, které odesílá prohlížeč s cookies. To pak bude počítat relativně správně...

Něco ve stylu:

<?php
//..........
$cookie = 'counter'; // název cookies, které se uloží
        $time = date("m.d.Y"); // získání data
        $info = md5($_SERVER["SERVER_ADDR"] . $_SERVER['HTTP_USER_AGENT'] . $_SERVER['HTTP_ACCEPT'] . gethostbyaddr($_SERVER["SERVER_ADDR"]) . $_SERVER['REMOTE_PORT'] . $time); // zakódování co nejvíce údajů o uživateli
        $cook = substr(md5(rand()), 0, 5); // naplnění cookies
 //... 
        
Celé toto info uložit dočasně do databáze, podle které se bude porovnávat, zda už někdo s touto kombinací informací na stránce byl a pokud ne, přičítat číslo do jiné tabulky v DB, které by pak ukazovalo, třeba i denní a celkovou návštěvnost...

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0