Pagina 1 di 4 123 ... UltimoUltimo
Visualizzazione risultati 1 fino 30 di 102

Discussione: Mettere nel sito "I più visti"

  1. #1
    Guest

    Predefinito Mettere nel sito "I più visti"

    Siccome nel mio sito ho molte pagine, vorrei mettere un'area con un codice del tipo che mi visualizza in automatico le prime 4 pagine più visitati. Ho già creato la tabella nel DB, ma non so come fare il codice.

  2. #2
    Guest

    Predefinito

    Nella tabella nel DB metti le colonne
    pagina | url | visite
    *visite fallo di tipo int

    Crei la funzione per aumentare il contatore a ogni visita:
    Codice PHP:
    function contatore ($title) {
    $mysqli = new mysqli("localhost", "username", "password", "nome_database");
    $url = $_SERVER['PHP_SELF'];
    $esiste = $mysqli->query ("SELECT url FROM tabella WHERE url='$url'");
    if (
    $esiste->num_rows == 0) {
    $mysqli->query ("INSERT INTO tabella VALUES ('$title', '$url', 1");
    }
    else {
    $old = $esiste->fetch_array;
    $visite = $old['visite'] + 1;
    $mysqli->query("UPDATE tabella SET pagina='$title', visite=$visite WHERE url='$url'");
    }
    }
    E la richiami in ogni pagina passandole come parametro il titolo che vuoi abbia il link:
    Codice PHP:
    contatore("Pagina di prova");
    Questo era il contatore, ora serve la funzione per creare la lista delle pagine più viste

    Codice PHP:
    function piu_visitate ($n) {
    $mysqli = new mysqli("localhost", "username", "password", "nome_database");
    $visti = $mysqli->query("SELECT * FROM tabella ORDER BY visite DESC LIMIT 0,$n");
    if (
    $visti->num_rows > 0) {
    echo
    "<ul id='piu_visitate'>";
    while (
    $link = $visti->fetch_array) {
    echo
    "<li>";
    echo
    "<a href='" . $link['url'] . ">" . $link['pagina'] . "</a>";
    echo
    "</li>";
    }
    echo
    "</ul>";
    }
    }
    E la richiami dove vuoi venga la lista passando come parametro il numero di pagine:
    Codice PHP:
    piu_visitate(4);
    (Ho scritto tutto dal cellulare, potrebbe essere pieno di errori, non l'ho testato o potrei aver scritto tante cavolate )

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da tampertools Visualizza messaggio
    Nella tabella nel DB metti le colonne
    pagina | url | visite
    *visite fallo di tipo int

    Crei la funzione per aumentare il contatore a ogni visita:
    Codice PHP:
    function contatore ($title) {
    $mysqli = new mysqli("localhost", "username", "password", "nome_database");
    $url = $_SERVER['PHP_SELF'];
    $esiste = $mysqli->query ("SELECT url FROM tabella WHERE url='$url'");
    if (
    $esiste->num_rows == 0) {
    $mysqli->query ("INSERT INTO tabella VALUES ('$title', '$url', 1");
    }
    else {
    $old = $esiste->fetch_array;
    $visite = $old['visite'] + 1;
    $mysqli->query("UPDATE tabella SET pagina='$title', visite=$visite WHERE url='$url'");
    }
    }
    E la richiami in ogni pagina passandole come parametro il titolo che vuoi abbia il link:
    Codice PHP:
    contatore("Pagina di prova");
    Questo era il contatore, ora serve la funzione per creare la lista delle pagine più viste

    Codice PHP:
    function piu_visitate ($n) {
    $mysqli = new mysqli("localhost", "username", "password", "nome_database");
    $visti = $mysqli->query("SELECT * FROM tabella ORDER BY visite DESC LIMIT 0,$n");
    if (
    $visti->num_rows > 0) {
    echo
    "<ul id='piu_visitate'>";
    while (
    $link = $visti->fetch_array) {
    echo
    "<li>";
    echo
    "<a href='" . $link['url'] . ">" . $link['pagina'] . "</a>";
    echo
    "</li>";
    }
    echo
    "</ul>";
    }
    }
    E la richiami dove vuoi venga la lista passando come parametro il numero di pagine:
    Codice PHP:
    piu_visitate(4);
    (Ho scritto tutto dal cellulare, potrebbe essere pieno di errori, non l'ho testato o potrei aver scritto tante cavolate )


    Il tuo codice contatore('…'); lo dovrei adattare al mio codice, ma mi da sempre errore

    Codice PHP:
    <?php
    $links
    = array('http://miosito.it/storia.php' => 'La storia di Akuna',
    'http://miosito.it/missione.php' => 'Missione e visione',
    'http://miosito.it/prod-alveo.php' => 'Produzione di ALVEO',
    'http://miosito.it/attivita-alveo.php' => 'Attività biologica ALVEO');
    $pagina = basename($_SERVER['PHP_SELF']);
    foreach(
    $links as $link => $text) {
    if(
    basename($link) == $pagina) {
    echo
    '<div class="menu1a">' . $text . '</div>';
    }
    else
    {
    echo
    '<a href="' . $link . '">' . $text . '</a>';
    }
    }
    ?>
    Ultima modifica di gruppoalveo : 29-03-2014 alle ore 15.18.54 Motivo: Aggiornamento

  4. #4
    Guest

    Predefinito

    Che errore da?
    Ma quel codice lo metti nella funzione contatore?

  5. #5
    Guest

    Predefinito

    I tuoi codici li metto nel file delle funzioni e cerco di richiamarli nel codice che ho postato. L'errore che dà è che non mette a video una porzione di pagina, quella che dovrebbe mostrare a video le 4 pagine più viste.

    Se io metto così, non da più errore

    Codice PHP:
    <?php
    $links
    = array('http://miosito.it/storia.php' => "contatore('La storia di Akuna')",
    ...
    …ma a video stampa così contatore('La storia di Akuna')
    Ultima modifica di gruppoalveo : 29-03-2014 alle ore 20.43.45 Motivo: Aggiornamento

  6. #6
    Guest

    Predefinito

    La funzione contatore serve solo a gestire il db, per stampare a video i risultati usa piu_visitate...

    Edit
    Ma tu vuoi che stampi questi quattro link
    Codice PHP:
    $links*=*array('http://miosito.it/storia.php'*=>*'La*storia*di*Akuna',*'http://miosito.it/missione.php'*=>*'Missione*e*visione',*'http://miosito.it/prod-alveo.php'*=>*'Produzione*di*ALVEO','http://miosito.it/attivita-alveo.php'*=>*'Attività*biologica*ALVEO');
    o le quattro pagine più viste?
    Ultima modifica di tampertools : 29-03-2014 alle ore 22.57.45

  7. #7
    Guest

    Predefinito

    Citazione Originalmente inviato da tampertools Visualizza messaggio
    La funzione contatore serve solo a gestire il db, per stampare a video i risultati usa piu_visitate...

    Edit
    Ma tu vuoi che stampi questi quattro link
    Codice PHP:
    $links*=*array('http://miosito.it/storia.php'*=>*'La*storia*di*Akuna',*'http://miosito.it/missione.php'*=>*'Missione*e*visione',*'http://miosito.it/prod-alveo.php'*=>*'Produzione*di*ALVEO','http://miosito.it/attivita-alveo.php'*=>*'Attività*biologica*ALVEO');
    o le quattro pagine più viste?
    Le 4 pagine più viste, questo è il codice più completo

    Codice PHP:
    <?php
    $links
    = array('http://sito.it/storia.php' => 'La storia di Akuna',
    'http://sito.it/missione.php' => 'Missione e visione',
    'http://sito.it/prod-alveo.php' => 'Produzione di ALVEO',
    'http://sito.it/prodotti.php' => 'Prodotti',
    'http://sito.it/attivita-alveo.php' => 'Attività biologica ALVEO');
    $pagina = basename($_SERVER['PHP_SELF']);
    foreach(
    $links as $link => $text) {
    if(
    basename($link) == $pagina) {
    echo
    '<div class="menu1a">' . $text . '</div>';
    }
    else
    {
    echo
    '<a href="' . $link . '">' . $text . '</a>';
    }
    }
    ?>
    Ultima modifica di gruppoalveo : 29-03-2014 alle ore 23.06.56

  8. #8
    Guest

    Predefinito

    Scusa ma non capisco...
    Quel tuo codice serve a stampare 4 link (uno dei quali non cliccabile se attivo)...
    Anche se quelle quattro pagine fossero le meno viste le stamperebbe comunque...

  9. #9
    Guest

    Predefinito

    Citazione Originalmente inviato da tampertools Visualizza messaggio
    Scusa ma non capisco...
    Quel tuo codice serve a stampare 4 link (uno dei quali non cliccabile se attivo)...
    Anche se quelle quattro pagine fossero le meno viste le stamperebbe comunque...
    Il mio codice funziona benissimo, il tuo codice le voglio mettere in un altra area del sito
    Ultima modifica di gruppoalveo : 29-03-2014 alle ore 23.27.25

  10. #10
    Guest

    Predefinito

    Ah scusa, mi sono confuso vedendo quel tuo codice (che non c'entra niente?)

    Mi fai vedere il pezzo di codice dove richiami le mie funzioni?

  11. #11
    Guest

    Predefinito

    Citazione Originalmente inviato da tampertools Visualizza messaggio
    Ah scusa, mi sono confuso vedendo quel tuo codice (che non c'entra niente?)

    Mi fai vedere il pezzo di codice dove richiami le mie funzioni?
    Qui richiamo la pagina con tutto
    Codice PHP:
    <div class="info">I più visti</div>
    </div>
    <?php
    include("visitate.php");
    ?>
    Questa è il visitate.php con i codici

    Codice PHP:
    <?php
    //Mette i dati nel DB e aumenta il contatore ad ogni visita
    function contatore($text) {
    $url = $_SERVER['PHP_SELF'];
    $esiste = $mysql->query ("SELECT url FROM visitate WHERE url='$url'");
    if (
    $esiste->num_rows == 0) {
    $mysql->query ("INSERT INTO visitate VALUES ('$text', '$url', 1");
    }
    else {
    $old = $esiste->fetch_array;
    $visite = $old['visite'] + 1;
    $mysql->query("UPDATE visitate SET pagina='$text', url='$url', visite=$visite WHERE");
    }
    }

    //Estrae i dati dal DB e crea la sequenza delle pagine più viste
    function piu_visitate($n) {
    $visti = $mysql->query("SELECT * FROM visitate ORDER BY visite DESC LIMIT 0,$n");
    if (
    $visti->num_rows > 0) {
    echo
    "<ul id='piu_visitate'>";
    while (
    $link = $visti->fetch_array) {
    echo
    "<li>";
    echo
    "<a href='" . $link['url'] . "'>" . $link['pagina'] . "</a>";
    echo
    "</li>";
    }
    echo
    "</ul>";
    }
    }
    ?>

    <!DOCTYPE html>
    <html>
    <head>

    <title>I più visti</title>

    <?php include("metaTag.php"); ?>
    <meta name="description" content="Pagine più visitate">
    <meta name="keywords" content="sito,alveo,akuna">

    </head>

    <body>
    <div style="background-color:#ffffff; margin-top:-5px; margin-bottom:15px; padding-top:5px; padding-bottom:5px; text-align:left; font-size:12px; color:#004080;">
    <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">

    <?php
    echo "piu_visitate(4)";
    ?>

    <br>
    </div> <!--style-->


    </form>
    </body>
    </html>

    l'echo della funzione contatore() non so dove metterlo

  12. #12
    Guest

    Predefinito

    Ecco, ora riesco (spero) ad esserti più d'aiuto ;)

    1. Sostituisci
      Codice PHP:
      <?php
      echo "piu_visitate(4)";
      ?>
      con
      Codice PHP:
      <?php
      piu_visitate
      (4);
      ?>
    2. C'è un errore in questa query
      Codice:
      UPDATE visitate SET pagina='$text', url='$url', visite=$visite WHERE
      Dovrebbe essere
      Codice:
      UPDATE visitate SET pagina='$text', visite=$visite WHERE url='$url'
    3. in qualsiasi punto di ogni pagina devi richiamare la funzione contatore:
      Codice PHP:
      contatore("Titolo pagina");
    Ultima modifica di tampertools : 30-03-2014 alle ore 00.09.34

  13. #13
    Guest

    Predefinito

    Citazione Originalmente inviato da tampertools Visualizza messaggio
    Ecco, ora riesco (spero) ad esserti più d'aiuto ;)

    1. Sostituisci
      Codice PHP:
      <?php
      echo "piu_visitate(4)";
      ?>
      con
      Codice PHP:
      <?php
      piu_visitate
      (4);
      ?>
    2. in qualsiasi punto di ogni pagina devi richiamare la funzione contatore:
      Codice PHP:
      contatore("Titolo pagina");
    Qualcosa non quadra, non mette a video la parte della colonna sotto "I più visti"

  14. #14
    Guest

    Predefinito

    Posso avere il link della pagina?

    Controlla la modifica che ho fatto al mio post precedente

  15. #15
    Guest

    Predefinito

    Lo sto facendo il locale, non c'è ancora online.

    Solo a mettere questo (al posto dell'altro) da errore, come vedi la colonna non stampa più, sotto.

    Codice PHP:
    <?php
    piu_visitate
    (4);
    ?>
    http://imageshack.com/a/img824/5240/eb2l.png

  16. #16
    Guest

    Predefinito

    Vai a vedere se la tabella in cui salvi le pagine visitate è vuota.
    Se lo è. .. prova a metterci dentro una riga manualmente e dimmi se viene fuori

  17. #17
    Guest

    Predefinito

    Citazione Originalmente inviato da tampertools Visualizza messaggio
    Vai a vedere se la tabella in cui salvi le pagine visitate è vuota.
    Se lo è. .. prova a metterci dentro una riga manualmente e dimmi se viene fuori
    In ogni pagina ho aggiunto contatore(nome pagina); così:

    Codice PHP:
    <?php
    //Richiama i parametri di connessione al db
    require_once "connessione.php";
    include (
    "funzioni.php");
    contatore("Home");
    ?>
    Ho messo la riga così:




    Appare così:

    Ultima modifica di gruppoalveo : 30-03-2014 alle ore 11.02.33 Motivo: Aggiornamento

  18. #18
    Guest

    Predefinito

    Ok, e quella riga te la stampa?

    Se la funzione contatore non inserisce le pagine nel db c'è un errore. .. me la puoi rifar vedere con le nuove mmodifiche?

  19. #19
    Guest

    Predefinito

    Citazione Originalmente inviato da tampertools Visualizza messaggio
    Ok, e quella riga te la stampa?

    Se la funzione contatore non inserisce le pagine nel db c'è un errore. .. me la puoi rifar vedere con le nuove mmodifiche?
    Ho dovuto inserirla a mano.
    Queste sono le funzioni:

    Codice PHP:
    <?php
    //Mette i dati nel DB e aumenta il contatore ad ogni visita
    function contatore($title) {
    $url = $_SERVER['PHP_SELF'];
    $esiste = $mysql->query ("SELECT url FROM visitate WHERE url='$url'");
    if (
    $esiste->num_rows == 0) {
    $mysql->query ("INSERT INTO visitate VALUES ('$title', '$url', 1");
    }
    else {
    $old = $esiste->fetch_array;
    $visite = $old['visite'] + 1;
    $mysql->query("UPDATE visitate SET pagina='$title', url='$url', visite=$visite WHERE");
    }
    }

    //Estrae i dati dal DB e crea la sequenza delle pagine più viste
    function piu_visitate($n) {
    $visti = $mysql->query("SELECT * FROM visitate ORDER BY visite DESC LIMIT 0,$n");
    if (
    $visti->num_rows > 0) {
    echo
    "<ul id='piu_visitate'>";
    while (
    $link = $visti->fetch_array) {
    echo
    "<li>";
    echo
    "<a href='" . $link['url'] . "'>" . $link['pagina'] . "</a>";
    echo
    "</li>";
    }
    echo
    "</ul>";
    }
    }
    ?>

    <?php
    piu_visitate
    (4);
    ?>

  20. #20
    Guest

    Predefinito

    C'erano due errori nella funzione contatore, guarda se così va:
    Codice PHP:
    function contatore($title) {
    $url = $_SERVER['PHP_SELF'];
    $esiste = $mysql->query ("SELECT * FROM visitate WHERE url='$url'");
    if (
    $esiste->num_rows == 0) {
    $mysql->query ("INSERT INTO visitate VALUES ('$title', '$url', 1");
    }
    else {
    $old = $esiste->fetch_array;
    $visite = $old['visite'] + 1;
    $mysql->query("UPDATE visitate SET pagina='$title', visite=$visite WHERE url='$url'");
    }
    }
    PS
    a che ti serve la colonna id nella tabella?
    Ultima modifica di tampertools : 30-03-2014 alle ore 11.33.56

  21. #21
    Guest

    Predefinito

    Citazione Originalmente inviato da tampertools Visualizza messaggio
    C'erano due errori nella funzione contatore, guarda se così va:
    Codice PHP:
    function contatore($title) {
    $url = $_SERVER['PHP_SELF'];
    $esiste = $mysql->query ("SELECT * FROM visitate WHERE url='$url'");
    if (
    $esiste->num_rows == 0) {
    $mysql->query ("INSERT INTO visitate VALUES ('$title', '$url', 1");
    }
    else {
    $old = $esiste->fetch_array;
    $visite = $old['visite'] + 1;
    $mysql->query("UPDATE visitate SET pagina='$title', visite=$visite WHERE url='$url'");
    }
    }
    PS
    a che ti serve la colonna id nella tabella?
    Non va. Devo togliere la colonna id? Di solito si mette.

    Per far aprire le pagine devo togliere il richiamo contatore(…); e mettere echo al richiamo di più_visitati. Se non faccio così non si apre il sito, rimane bianco.
    Ultima modifica di gruppoalveo : 30-03-2014 alle ore 11.49.13

  22. #22
    Guest

    Predefinito

    "Non va. Devo togliere la colonna id? Di solito si mette."
    Io sono abituato a mettere solo il necessario

    Se imane bianco senza dare errori prova a scrivere
    Codice PHP:
    error_reporting (E_ALL);
    all'inizio del documento. ..
    Così vedremo gli errori che bloccano tutto...

    Ti chiedo scusa, ma il mio pc ha fatto boom e quindi non posso testare il codice. ..

  23. #23
    Guest

    Predefinito

    Citazione Originalmente inviato da tampertools Visualizza messaggio
    "Non va. Devo togliere la colonna id? Di solito si mette."
    Io sono abituato a mettere solo il necessario

    Se imane bianco senza dare errori prova a scrivere
    Codice PHP:
    error_reporting (E_ALL);
    all'inizio del documento. ..
    Così vedremo gli errori che bloccano tutto...

    Ti chiedo scusa, ma il mio pc ha fatto boom e quindi non posso testare il codice. ..
    Da questo Fatal error: Call to undefined function contatore() in /membri/gruppoalveo/index.php on line 5

    Ora ho messo online, puoi vedere qui: http://www.gruppoalveo.altervista.org/

  24. #24
    Guest

    Predefinito

    Quell'errore significa che richiami quella funzione prima di definirla.
    Ptrova a spostare il richiamo al fondo del documento. ..

  25. #25
    Guest

    Predefinito

    Citazione Originalmente inviato da tampertools Visualizza messaggio
    Quell'errore significa che richiami quella funzione prima di definirla.
    Ptrova a spostare il richiamo al fondo del documento. ..
    Ora si apre la home. Io tolgo ID dalla tabella, cosa metto come auto_increment, le visite?

  26. #26
    Guest

    Predefinito

    No, non metti niente come auto_increment

    All inizio del file visitate scrivi
    Codice PHP:
    $mysql = new mysqli("localhost", "gruppoalveo", "TUA PASSWORD", "my_gruppoalveo");

  27. #27
    Guest

    Predefinito

    Citazione Originalmente inviato da tampertools Visualizza messaggio
    No, non metti niente come auto_increment

    All inizio del file visitate scrivi
    Codice PHP:
    $mysql = new mysqli("localhost", "gruppoalveo", "TUA PASSWORD", "my_gruppoalveo");
    Così

    <?php
    //Richiama i parametri di connessione al db
    require_once "connessione.php";
    piu_visitate(4);
    ?>

  28. #28
    Guest

    Predefinito

    Dice che non c'è un indice, è giusto così?


  29. #29
    Guest

    Predefinito

    Non è necessario l'indice...

    Nel file connessione.php usi l'oggetto mysqli?
    Se si passa la connessione come parametro alle due funzioni, altrimenti all'inizio di ogni funzione metti quella riga che ti ho detto

  30. #30
    Guest

    Predefinito

    Citazione Originalmente inviato da tampertools Visualizza messaggio
    Non è necessario l'indice...

    Nel file connessione.php usi l'oggetto mysqli?
    Se si passa la connessione come parametro alle due funzioni, altrimenti all'inizio di ogni funzione metti quella riga che ti ho detto
    mysql, non mysqli

    Codice PHP:
    $host = 'localhost'; //nome host
    $username = 'gruppoalveo'; //username che utilizzi per accedere a phpmyadmin
    $password = 'pwd'; //password che utilizzi per accedere a phpmyadmin
    $db = 'my_gruppoalveo'; // nome del database

    //---connessione----------------------------------------------------
    $connessione = mysql_connect($host,$username,$password);
    if (!
    $connessione) {
    die (
    'Non riesco a connettermi: ' . mysql_error());
    }

    //---e selezione del db----------------------------------------------------
    $db = mysql_select_db($db, $connessione);
    if (!
    $db) {
    die (
    "Errore nella selezione del database: " . mysql_error());
    }
    Ultima modifica di gruppoalveo : 30-03-2014 alle ore 14.16.15

Pagina 1 di 4 123 ... UltimoUltimo

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •