Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    227

    "Mescolare" risultati tabelle MySQL

    Ciao a tutti!
    Ho varie tabelle mysql all'interno del database del mio sito e nella index avevo intenzione di mostrare le ultime azioni degli utenti. L'unico problema è che le azioni sono in tabelle diverse (Esempio: una tabella contiene i messaggi privati, un'altra gli ultimi articoli scritti, etc), quindi mi chiedevo.. Come posso mostrare gli ultimi risultati ordinandoli per data senza dividerli per "categoria"?

    Vorrei una cosa simile:

    - *UTENTE* ha scritto un nuovo articolo il 2 novembre alle 13:46
    - *UTENTE* ha cambiato la sua immagine personale il 2 novembre alle 12:24
    - *UTENTE* ha scritto un nuovo articolo il 12 ottobre alle 16:42

    E NON

    - *UTENTE* ha scritto un nuovo articolo il 2 novembre alle 13:46
    - *UTENTE* ha scritto un nuovo articolo il 12 ottobre alle 16:42
    - *UTENTE* ha cambiato la sua immagine personale il 2 novembre alle 12:24

    In poche parole vorrei che i dati si "mischiassero"... come potrei fare?

    Grazie a tutti in anticipo,
    Thinker

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Bisognerebbe sapere come è strutturato il DB, così non è possibile dare una risposta se non a intuito e quindi con ottime probabilità di sbagliare e poche di prenderci.

  3. #3
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Realizza un'altra teabella con dei log per le attività degli utenti. Ogni volta che un utente fa qualcosa scrivi il log. Trattieni solo poche attività altrimenti ti creasce a dismisura... la tabella! Ovvero quando inserisci una attività vedi se hai superato una quantità di righe per l'utente e cancelli quella con data più vecchia.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    227
    Uhmm ci avevo pensato anche io inizialmente.. E ci penso anche ora, ma non ci sarebbe un metodo alternativo?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    227
    Posto qualche tabella?
    Le principali che vorrei "unire" sono:
    [PHP]CREATE TABLE IF NOT EXISTS `articles` (
    `id` int(30) NOT NULL,
    `userid` varchar(30) NOT NULL,
    `utente1` varchar(30) NOT NULL,
    `ora` varchar(5) NOT NULL default '00:00',
    `ip` varchar(100) NOT NULL,
    `data` varchar(20) NOT NULL,
    `views` varchar(30) NOT NULL default '0',
    `access` varchar(250) NOT NULL,
    `number` int(30) NOT NULL auto_increment,
    `title` varchar(250) NOT NULL,
    `contenuto` text NOT NULL,
    `categoria` varchar(200) NOT NULL,
    `type` varchar(200) NOT NULL,
    PRIMARY KEY (`number`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=100059 ;

    --------------------------

    CREATE TABLE IF NOT EXISTS `myboard` (
    `id` bigint(30) NOT

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    227
    Posto qualche tabella?
    Le principali che vorrei "unire" sono:
    [PHP]CREATE TABLE IF NOT EXISTS `articles` (
    `id` int(30) NOT NULL,
    `userid` varchar(30) NOT NULL,
    `utente1` varchar(30) NOT NULL,
    `ora` varchar(5) NOT NULL default '00:00',
    `ip` varchar(100) NOT NULL,
    `data` varchar(20) NOT NULL,
    `views` varchar(30) NOT NULL default '0',
    `access` varchar(250) NOT NULL,
    `number` int(30) NOT NULL auto_increment,
    `title` varchar(250) NOT NULL,
    `contenuto` text NOT NULL,
    `categoria` varchar(200) NOT NULL,
    `type` varchar(200) NOT NULL,
    PRIMARY KEY (`number`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=100059 ;

    --------------------------

    CREATE TABLE IF NOT EXISTS `myboard` (
    `id` bigint(

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    227
    Posto qualche tabella?
    Le principali che vorrei "unire" sono:
    [PHP]CREATE TABLE IF NOT EXISTS `articles` (
    `id` int(30) NOT NULL,
    `userid` varchar(30) NOT NULL,
    `utente1` varchar(30) NOT NULL,
    `ora` varchar(5) NOT NULL default '00:00',
    `ip` varchar(100) NOT NULL,
    `data` varchar(20) NOT NULL,
    `views` varchar(30) NOT NULL default '0',
    `access` varchar(250) NOT NULL,
    `number` int(30) NOT NULL auto_increment,
    `title` varchar(250) NOT NULL,
    `contenuto` text NOT NULL,
    `categoria` varchar(200) NOT NULL,
    `type` varchar(200) NOT NULL,
    PRIMARY KEY (`number`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=100059 ;

    --------------------------

    CREATE TABLE IF NOT EXISTS `myboard` (
    `id` bigint(30) NOT NULL auto_increment,
    `userid` varchar(30) NOT NULL,
    `utente1` varchar(30) NOT NULL,
    `userid2` varchar(30) NOT NULL,
    `utente2` varchar(30) NOT NULL,
    `data` varchar(20) NOT NULL,
    `ora` varchar(5) NOT NULL default '00:00',
    `messaggio` varchar(250) NOT NULL,
    `tipo` varchar(20) NOT NULL default 'board',
    `stato` varchar(20) NOT NULL default 'no'

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    227
    Posto qualche tabella?
    Le principali che vorrei "unire" sono:
    [PHP]CREATE TABLE IF NOT EXISTS `articles` (
    `id` int(30) NOT NULL,
    `userid` varchar(30) NOT NULL,
    `utente1` varchar(30) NOT NULL,
    `ora` varchar(5) NOT NULL default '00:00',
    `ip` varchar(100) NOT NULL,
    `data` varchar(20) NOT NULL,
    `views` varchar(30) NOT NULL default '0',
    `access` varchar(250) NOT NULL,
    `number` int(30) NOT NULL auto_increment,
    `title` varchar(250) NOT NULL,
    `contenuto` text NOT NULL,
    `categoria` varchar(200) NOT NULL,
    `type` varchar(200) NOT NULL,
    PRIMARY KEY (`number`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=100059 ;

    --------------------------

    CREATE TABLE IF NOT EXISTS `myboard` (
    `id` bigint(

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    227
    Posto qualche tabella?
    Le principali che vorrei "unire" sono:
    [PHP]CREATE TABLE IF NOT EXISTS `articles` (
    `id` int(30) NOT NULL,
    `userid` varchar(30) NOT NULL,
    `utente1` varchar(30) NOT NULL,
    `ora` varchar(5) NOT NULL default '00:00',
    `ip` varchar(100) NOT NULL,
    `data` varchar(20) NOT NULL,
    `views` varchar(30) NOT NULL default '0',
    `access` varchar(250) NOT NULL,
    `number` int(30) NOT NULL auto_increment,
    `title` varchar(250) NOT NULL,
    `contenuto` text NOT NULL,
    `categoria` varchar(200) NOT NULL,
    `type` varchar(200) NOT NULL,
    PRIMARY KEY (`number`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=100059 ;

    CREATE TABLE IF NOT EXISTS `myboard` (
    `id` bigint(30) NOT NULL auto_increment,

  10. #10
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Al limite, se non vuoi fare troppe query e temi per un appesantimento del DB, puoi creare un certo nuemro di campi (tanti quanti il numero di attività da mostrare), e creare una sola riga per utente, così tutto si riduce ad una select ed un update. Quindi, se vuoi mostrare le ultime 3 attività potresti avere:

    codice:
    Tab_Log
       id_utente
       ult_agg
       att1
       att2
       att3
    In cui id_utente è chiave primaria, ult_agg contine l'ultimo campo in cui hai inserito l'attività. In tal modo, se l'utente fa qualcosa accedi al suo record.
    Se non esiste lo crei inserendo ult_agg=0 e id_utente=l'id dell'utente. Quindi invochi l'aggiornamento dell'attività
    Come aggiornamento dell'attività non devi fare altro che, recuperata la riga dell'utente ed il valore di ult_agg, poi calcoli
    codice:
    $ult_agg=($ult_agg+1)%3
    quindi fai una bella update

    codice:
    UPDATE Tab_Log SET ult_agg = $ult_agg, att$ult_agg = $testoAgg WHERE id_utente=$id
    ed il gioco è fatto: una select ed una update con ricerca su indicizzatissima chiave primaria.

    se vuoi mostrare n attività aumenta il nuemro di righe att da att1 a attn e al po di %3 useri %n

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.