• User Attivo

    Script per "pagina vista 1000 volte"

    Che ne dite di costruire "insieme" uno script per far apparire a fine pagina la scrittina:
    Pagina vista 1234 volte

    Requisiti dello script:
    Se la pagina non è già contenuta nel database, creare una nuova riga e porre uguale ad 1 il contatore
    Se la pagina è già presente, porre il contatore a contatore + 1

    Per riconoscere se una pagina è presente o meno non servono particolari accorgimenti in quanto lo script sarà applicato su pagine "semplici" senza ?id=2432 ma sono pagine del tipo: /cartella/pagina11111.php

    Quindi bisogna, accedere al database (e fin qui ci riesco)
    controllare se la pagina è già presente (e qui non ci riesco)
    creare una nuova riga (non ci riesco)
    oppure aumentare di uno il campo contatore (ci riesco, basta usare update...)

    Con questo script basterà aggiungere un include nella parte bassa delle pagine che si vorranno contaggiare ed il gioco è fatto.

    Chi mi da le query "difficili"?

    Grazie.


  • User

    Non so quale sia il modo giusto per farlo, ma io farei così: 😉

    supponendo di avere una tabella con due campi, pagina e visualizzazioni, il codice sarebbe

    
    <?php
    
    $inizio = x; indicare il numero di caratteri che precedono l'indirizzo della pagina, oppure si può impostare direttamente a 0, cioè viene memorizzato l' indirizzo completo. Ricordati che se la pagina è nella cartella www.m.it/pp/pag.php, $_SERVER&#91;PATH_INFO&#93; è uguale a /pp/pag.php
    
    $pagina = substr&#40;$_SERVER&#91;PATH_INFO&#93;, $inizio&#41;;
    
    $query = "SELECT pagina FROM Tabella WHERE pagina = '$pagina'";
    # controlla se la pagina è inserita nel database
    $result = mysql_query&#40;$query&#41;;
    if &#40;mysql_num_rows&#40;$result&#41; > 0&#41;&#123;	
    	mysql_query&#40;"UPDATE Tabella SET visualizzazioni = visualizzazioni+1 WHERE pagina = '$pagina'"&#41;;
    &#125; else &#123;
    	mysql_query&#40;"INSERT INTO Tabella &#40;pagina, visualizzazioni&#41; VALUES &#40;'$pagina', '1'&#41;"&#41;;
    &#125;
    
    ?>
    

    Non ho avuto il tempo di provarla, quindi potrebbero esserci degli errori.

    Ciao :ciauz:


  • Super User

    mi sembrasia la cosa migliore 😉


  • User Attivo

    una cosa importante sarebbe quella di escludere gli spider dal conteggio....

    si può fare con diversi sistemi, ma forse il + sicuro è quello di inserire il codice di conteggio in una pagina che viene chiamata da un JS eseguita dal browser, un po come fa weppos con le sue statistiche 😎


  • User Attivo

    Tento di spiegare cosa fa il tuo script e mi dici se ho capito.

    Se non ho capito male la funzione $_SERVER[PATH_INFO] mi fornisce, nel caso della pagina
    http://www.skiforum.it/cartella1/pagina2.php
    il valor/cartella1/pagina2.php

    ed a me sta bene e non ci sono problemi.
    Per questo campo che tipo di variabile consigli di usare?

    Poi nel tuo script alla variabile $pagina viene dato il valore di una stringa pari a quello che viene restituito dalla funzione $_SERVER[PATH_INFO]

    Dopodichè, controllo se la pagina è nel database e se non c'è creo una nuova riga
    mysql_query("INSERT INTO Tabella (pagina, visualizzazioni) VALUES ('$pagina', '1')");

    altrimenti se la trovo, ovvero se vedo che (mysql_num_rows($result) > 0) faccio un update dei dati di quella riga
    mysql_query("UPDATE Tabella SET visualizzazioni = visualizzazioni+1 WHERE pagina = '$pagina'");

    Bene, solo un altro dubbio. Per visualizzazioni userò integer mentre per i link delle pagine che uso?

    Probabilmente è lo script che cercavo: semplice ed immediato ma utile per farmi capire e far vedere quali pagine sono le più viste.

    Bello il tuo sito, sto provando i google-tools 😄


  • User Attivo

    Intanto ho iniziato creando la tabella:

    query SQL :
    CREATE TABLE `pagecount` &#40;
    `num_pag` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    `vis_pag` INT NOT NULL, 
    `url_pag` VARCHAR&#40;255&#41; NOT NULL, 
    `dat_pag` TIMESTAMP NOT NULL
    &#41;;
    

    num_pag sarà l'ID della pagina, vis_pag contiene il numero di visualizzazioni, url_pag il suo url e dat_pag l'ho creato perchè vorrei "sofisticare" un po' lo script facendo apparire, pagina vista 1000 volte dal giorno 12/12/2112.

    Come si fa per scrivere e leggere la data? :arrabbiato: :arrabbiato: Qualcuno che mi possa suggerire il codice?
    Ah la data dev'essere scritta alla prima visualizzazione.

    Grazie.