Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    250

    articoli + visti 24ore / 7 giorni

    salve a tutti
    ho fatto una query x vedere gli articoli più cliccati
    Codice PHP:
     $sql="SELECT * FROM notizie WHERE attiva='si' ORDER BY clic DESC LIMIT 7"
    La tabella notizie ha anche un campo data inserimento (data_ins) per ogni articolo inserito.
    Vorrei creare se è possibile 2 query che mi facciano vedere gli articoli + visti negli ultimi 7 giorni e 24 ore.

    E' fattibile?

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    where attiva='si' and data_ins >= curdate() - interval 7 day

    poi bisogna vedere se si adatta al tuo caso visto che tu hai la data di inserimento delle notizie ma non quella relativa ai click delle stesse.

  3. #3
    Non so come hai salvato la data. Ma supponendo che sia in unix timestamp, poi adatta tu al limite

    Codice PHP:
    //per ultime 24 ore

    $time time() - (60*60*24);

    $sql="SELECT * FROM notizie WHERE attiva='si' AND data_ins>$time ORDER BY clic DESC LIMIT 7"
    PHP LEARN - Guide, tutorial e articoli sempre aggiornati
    NUOVO: standardLib; il potente framework PHP é ora disponibile
    *******************************************
    Scarica oggi la tua copia di MtxEventManager

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    398
    Con i dati a disposizione non lo fai.
    La data di inserimento non ha alcun valore e il numero dei click generale men che meno.

    L'unica cosa che puoi vedere sono gli articoli piu visti in modo assoluto.

    Per quello che vuoi fare tu hai bisogno di salvarti i click giornalieri per ogni articolo e poi fare le query filtrando il periodo di tempo che ti interessa dalla data odierna.

    Io creerei una tabella si fatta
    Codice PHP:
    CREATE TABLE IF NOT EXISTS `prova` (
      `
    idArticoloint(10unsigned NOT NULL,
      `
    datadate NOT NULL,
      `
    numClickint(10unsigned NOT NULL DEFAULT '0',
      
    PRIMARY KEY (`idArticolo`,`data`)
    ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
    Dove la chiave primaria e' l'idarticolo e la data.
    Una volta che hai i dati salvati in questo modo risulta semplice fare una
    select sommando i click giornalieri raggruppati per rarticolo.


    Ciao
    Andrea

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    250
    grazie ragazzi delle risposte!
    Io attualmente ho una tabelle così formata:

    TABELLA NOTIZIE
    ID_ART | TITOLO | DATA_INS (timestamp) | CLICK

    ogni volta che clicco in un articolo faccio un update e incremento il valore presente nella colonna CLICK.
    A questo punto... giustamente.. faccio fatica a gestire i click nel tempo...

    dovrei da come ho capito.. crearmi una tabella CLICK
    dove passo l'ID dell'articolo di riferimento, e la data di ogni click.
    Quando un utente clicca in un articolo, inserisco il record sulla tabella CLICK

    giusto?

    TABELLA CLICK
    ID_ART | DATA_INS

    In questo modo poi riesco a trovarmi gli articoli + cliccati di questa settimana e mese?

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    398
    Piu o meno.

    Puoi fare anche cosi ma ti ritrovi una tabella con 1 recor per ogni click quindi possono crescere a dismisura.

    Per quello che ti e' sufficiente fare un record per ogni articolo / giorno e un campo di contatore dei click giornalieri.

    a quel punto puoi ricavare i click giornalieri e degli ultimi 7 giorni.
    Se vuoi aumentare la precisione puoi sostituire la colonna giorno di tipo data con una colonna di tipo datatime e fare il conteggio di click orari.

    Insomma come preferisci a seconda delle tue esigenze.

    Andrea

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    250
    Grazie andrea!
    Ottima dritta!

  8. #8
    Originariamente inviato da musghs
    TABELLA NOTIZIE
    ID_ART | TITOLO | DATA_INS (timestamp) | CLICK
    non cpisco cosa ci faccia il titolo li, se non a rendere la tabella dynamic invece che fixed, dando per scontato tu stia su MyISAM per full text.

    I counters comunque non sono mai dati indispensabili, ed un update durante un insert o prima di una select può bloccare il sito senza motivo.

    Prendi in considerazione la mia soluzione al problema: MySQL UPDATE DELAYED, è un comando che non esiste, la mia soluzione lo emula fino ad ora con ottimi risultati. Tu dovreti solo eventualmente aggiungere un campo data, sempre statico, al counter
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  9. #9
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da andr3a
    non cpisco cosa ci faccia il titolo li, se non a rendere la tabella dynamic invece che fixed, dando per scontato tu stia su MyISAM per full text.

    I counters comunque non sono mai dati indispensabili, ed un update durante un insert o prima di una select può bloccare il sito senza motivo.

    Prendi in considerazione la mia soluzione al problema: MySQL UPDATE DELAYED, è un comando che non esiste, la mia soluzione lo emula fino ad ora con ottimi risultati. Tu dovreti solo eventualmente aggiungere un campo data, sempre statico, al counter
    Complimenti come al solito. Davvero molto interessante.

  10. #10
    Originariamente inviato da nicola75ss
    Complimenti come al solito. Davvero molto interessante.
    denghiu
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

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 © 2025 vBulletin Solutions, Inc. All rights reserved.