Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2016
    Messaggi
    2

    Modifica script php count click semi funzionante ...

    Buongiorno a tutto il forum , ecco finalmente l'occasione di parlare direttamente con i 'grandi' di questo meraviglioso mondo.
    Premetto che è qualche anno che amatorialmente creo siti web per hobby e per approfondire questo mondo , che purtroppo non ho potuto portare avanti con gli studi , ma continuo a livello hobbistico ad amare.
    Ultimamente mi sono imbattuto in una sfida che da solo non sono riuscito a superare . Solitamente grazie a questo forum sono sempre riuscito da solo , leggendo i vostri post a mettere in pratica e capire come aggirare errori o problemi .
    Veniamo alla domanda ...
    Sto utilizzando in un piccolo sito lo script 'php click count (ccount 2.0 )' ( non so se qualcuno gia lo conosce ) , trovato in rete .
    Questo script utilizza un database su file di testo , una pagina php che si occupa del download link e una pagina php ceh si occupa della visualizzazione del numero di download di ogni file
    A me interesserebbe riuscire a fare visualizzare anche la data del file , oltre al numero di download

    La data è gia contenuta nel database txt

    codice:
    1%%2016/03/02%%../files/prova1.zip%%3%%Prova 1
    2%%2016/02/22%%../files/prova2.zip%%3%%Prova 2
    3%%2016/01/09%%../files/prova3.zip%%3%%Prova 3
    4%%2016/02/13%%../files/prova4.zip%%3%%Prova 4
    5%%2016/03/01%%../files/prova5.zip%%3%%Prova 5
    6%%2016/01/07%%../files/prova6.zip%%3%%Prova 6
    questo il codice che visualizza il numero count

    codice:
    require_once "settings.php";
    if($settings['system'] == 2) {$settings['newline']="\r\n";}
    elseif($settings['system'] == 3) {$settings['newline']="\r";}
    else {$settings['newline']="\n";}
    echo "var ccount_link = new Array();\n";
    $lines = file($settings['logfile']);
    foreach ($lines as $thisline) {
     trim($thisline);
     list($id,$added,$url,$count,$linkname)=explode("%%",$thisline);
        echo "ccount_link[$id]=$count;\n";
    }
    echo "
    function ccount_display(id)
    {
    document.write(ccount_link[id]);
    }
    ";
    exit();
    ?>
    nel file index poi va aggiunto ...

    nell'header

    codice:
    <script language="Javascript" src="ccount/display.php">
     <!--
    //-->
     </script>
    e nella posizione che vorremo visualizzare il ccount inseriremo

    codice:
    <script language="Javascript">ccount_display('1')</script>
    volendo aggiungere anche la visualizzazzione della data , ma non volendo editare codice che funziona , io ho provato cosi ...

    ho provato ad aggiungere un secondo display2.php

    codice:
    require_once "settings.php";
    if($settings['system'] == 2) {$settings['newline']="\r\n";}
    elseif($settings['system'] == 3) {$settings['newline']="\r";}
    else {$settings['newline']="\n";}
    echo "var ccadded_link = new Array();\n";
    $lines = file($settings['logfile']);
    foreach ($lines as $thisline) {
     trim($thisline);
     list($id,$added,$url,$count,$linkname)=explode("%%",$thisline);
        echo "ccadded_link[$id]=$added;\n";
    }
    echo "
    function ccadded_display(id)
    {
    document.write(ccadded_link[id]);
    }
    ";
    exit();
    ?>
    e poi nell'index aggiunto i due codici ...

    codice:
    <script language="Javascript" src="ccount/display2.php">
     <!--
    //-->
     </script>
    codice:
    <script language="Javascript">ccadded_display('1')</script>
    Il codice funziona e mi riporta la data , solo che praticamente 'svolge l'operazione matematica prima di riportarla ...

    infatti ad esempio 2016/03/02 , diventa 336 , cioè 2016 diviso 3 e poi risultato diviso 2 ... ho provato a cercare informazioni e soluzioni in rete ma non trovo nessuna informazione

    qualcuno puo' aiutarmi a ragionare su come risolvere ? grazie
    Ultima modifica di sinmc; 03-03-2016 a 10:16

  2. #2
    codice:
    echo "ccadded_link[$id]=$added;\n";
    il problema è qui.
    Questo sputa fuori (javascript)

    codice:
    cadded_link[2] = 2016/03/02
    che come vedi è una operazione e non una stringa.

    Per cui un fast fix:
    codice:
    echo "ccadded_link[$id]='$added';\n";
    In generale quando devo passare variabili da php a javascript, utilizzo il json_encode (anche su stringhe)
    codice:
    echo "ccadded_link[$id]=". json_encode($added) . ";\n";

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2016
    Messaggi
    2
    grazie mille , ho risolto oggi pomeriggio e stavo entrando appunto a postare ... ora pero' ho un altro problema , in quanto ho trovato ultima versione dello script , ed è cambiato la gestione , ora il database è su file php , pero' per me sarebbe migliore dell'altra in quanto ha pannello admin gia integrato e l'ho gia modificato per rendere editabile anche la voce data .

    Sono riuscito a modificare i php per la costruzione riga database , modifica e aggiunta nuovo link , modificando che la data la si inserisce come semplicce testo ( come il title ) e si puo' modificare ...

    Il problema è lo script del display , che non riesco a modificarlo per mostrare la data ( nello script 'added' o 'd' )

    codice:
    define('IN_SCRIPT',1);
    // Set the correct MIME type
    header("Content-type: text/javascript");
    // Tell browsers not to cache the file output
    header("Cache-Control: no-store, no-cache, must-revalidate");
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache");
    // Start Javascript variable
    echo 'var ccount={';
    // Require the settings file
    require 'ccount_settings.php';
    // Get links database
    $data = explode('//', file_get_contents($ccount_settings['db_file']), 2);
    // Convert contents into an array
    $ccount_database = isset($data[1]) ? unserialize($data[1]) : array();
    unset($data);
    // List all links in a Javascript array
    foreach ($ccount_database as $id => $link)
    {
     echo "'{$id}':{c:{$link['C']},u:{$link['U']}},";
    }
    // Print the rest of Javascript
    ?>'':{}};
    // Outputs a formatted number to the browser
    function ccount_write(sum)
    {
     document.write(sum.formatThousands('<?php echo $ccount_settings['notation']; ?>'));
    }
    // Displays total clicks for an ID
    function ccount_display(id)
    {
     ccount_write(ccount[id]['c']);
    }
    // Displays unique clicks for an ID
    function ccount_unique(id)
    {
     ccount_write(ccount[id]['u']);
    }
    // Sums total clicks for IDs passed as arguments
    function ccount_sum()
    {
     var sum = 0;
     for (var i=0; i<arguments.length; i++) { // >
      if (typeof ccount[arguments[i]]!=='undefined') {
       sum += ccount[arguments[i]]['c'];
      }
     }
     ccount_write(sum);
    }
    // Sums unique clicks for IDs passed as arguments
    function ccount_sum_unique()
    {
     var sum = 0;
     for (var i=0; i<arguments.length; i++) { // >
      if (typeof ccount[arguments[i]]!=='undefined') {
       sum += ccount[arguments[i]]['u'];
      }
     }
     ccount_write(sum);
    }
    // Displays total clicks count
    function ccount_total()
    {
     var sum = 0;
     for (var key in ccount) {
      if (ccount.hasOwnProperty(key) && key !== '') {
       sum += ccount[key]['c'];
      }
     }
     ccount_write(sum);
    }
    // Displays total unique clicks count
    function ccount_total_unique()
    {
     var sum = 0;
     for (var key in ccount) {
      if (ccount.hasOwnProperty(key) && key !== '') {
       sum += ccount[key]['u'];
      }
     }
     ccount_write(sum);
    }
    // Adds a thousands separator to a number
    Number.prototype.formatThousands = function(notation)
    {
     var n = this, separator = "";
     switch (notation)
     {
      case "US":
       separator = ",";
       break;
      case "UK":
       separator = ".";
       break;
      case "FR":
       separator = " ";
       break;
      default:
       return n;
     }
     n = parseInt(n) + "";
     j = (j = n.length) > 3 ? j % 3 : 0;
     return (j ? n.substr(0, j) + separator : "") + n.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + separator);
    }
    e questo il file display2.php che ho provato a fare io , puoi aiutarmi a capire cosa sbaglio ? cosi non mi riporta nulla in output ...

    codice:
    define('IN_SCRIPT',1);
    // Set the correct MIME type
    header("Content-type: text/javascript");
    // Tell browsers not to cache the file output
    header("Cache-Control: no-store, no-cache, must-revalidate");
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache");
    // Start Javascript variable
    echo 'var ccount={';
    // Require the settings file
    require 'ccount_settings.php';
    // Get links database
    $data = explode('//', file_get_contents($ccount_settings['db_file']), 2);
    // Convert contents into an array
    $ccount_database = isset($data[1]) ? unserialize($data[1]) : array();
    unset($data);
    // List all links in a Javascript array
    foreach ($ccount_database as $id => $added)
    {
     echo "'{$id}':{d:{$link['D']},";
    }
    // Print the rest of Javascript
    ?>'':{}};
    // Displays total clicks for an ID
    function ccount_display2(id)
    {
     document.write(ccount[id]['d']);
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2021 vBulletin Solutions, Inc. All rights reserved.