Visualizzazione risultati 1 fino 11 di 11

Discussione: Problema di estrazione dati DB

  1. #1
    L'avatar di lobster
    lobster non è connesso Utente
    Data registrazione
    05-09-2003
    Residenza
    ...nel 'Paese dei Balocchi'...
    Messaggi
    151

    Predefinito Problema di estrazione dati DB

    Arieccome qua con l'ennesimo problema!

    Al solito, il mio datadase contiene questi campi

    -id
    -gg
    -mm
    -aaaa
    -titolo
    -testo

    Domande:

    1] Come devo fare affinchè gli articoli del 2004 mi vengano visualizzati in colonna tipo

    gg.mm | titolo
    gg.mm | titolo
    gg.mm | titolo
    gg.mm | titolo

    con una interruzione tra un mese e l'altro (ovviamente se in un mese non ci sono post, passa al mese successivo e non visualizza una casella vuota) permettendomi di inserire un codice html (tipo una immagine con la scritta GENNAIO)?

    Tipo cos', per capirci:

    dicembre
    ---------------------------
    gg.mm | titolo
    gg.mm | titolo
    gg.mm | titolo
    gg.mm | titolo

    ottobre
    ---------------------------
    gg.mm | titolo
    gg.mm | titolo
    gg.mm | titolo
    gg.mm | titolo

    settembre
    ---------------------------
    gg.mm | titolo
    gg.mm | titolo
    gg.mm | titolo
    gg.mm | titolo

    Nota che "salta" il mese di NOVEMBRE xke nn ci sono post!

    2] come faccio ad avere la somma totale dei post dell'anno (cioè sapere quanti sono) e quanti per mese?


    Un frigo a legno in regalo a chi mi aiuta! ^_^

  2. #2
    Guest

    Predefinito

    Allordunque, per la seconda domanda ti basta fare un

    SELECT COUNT(id) FROM tabella WHERE anno = '1999'

    e lo stesso per i mesi (presumo tu abbia un campo ID)

    Per la prima domanda non sono sicuro di aver capito, in pratica tu vorresti visualizzare tutti i post presenti, suddividendoli però per mese?

  3. #3
    L'avatar di lobster
    lobster non è connesso Utente
    Data registrazione
    05-09-2003
    Residenza
    ...nel 'Paese dei Balocchi'...
    Messaggi
    151

    Predefinito

    esatto!

    deve venire fuori una colonna di dati continua (con tutti i post del 2004 per esempio), però tra un mese e l'altro devo avere la possibilità di inserire quancosa, tipo un codice HTML o una immagine per indicare il mese...

    spero di essermi spiegato! ^_^

  4. #4
    L'avatar di lobster
    lobster non è connesso Utente
    Data registrazione
    05-09-2003
    Residenza
    ...nel 'Paese dei Balocchi'...
    Messaggi
    151

    Predefinito

    altra domanda!

    ma come faccio per dare il comando "multiplo" al database di:

    - estrarre tutti i dati che contengono il 2004 e ordinarli in ordine decrescente
    - contare i dati estratti (cioè sapere quanti record contenono '2004')
    - contare quanti record contengono '02' (febbraio) o '11' (novembre)

    e ottenere questa visulalizzazione:

    __________________________________
    ANNO 2004 (12 POST TOTALI)
    __________________________________

    dicembre (6 post)
    ---------------------------
    gg.mm | titolo
    gg.mm | titolo
    gg.mm | titolo
    gg.mm | titolo
    gg.mm | titolo
    gg.mm | titolo


    ottobre (2 post)
    ---------------------------
    gg.mm | titolo
    gg.mm | titolo


    settembre (4 post)
    ---------------------------
    gg.mm | titolo
    gg.mm | titolo
    gg.mm | titolo
    gg.mm | titolo

    Nota che "salta" il mese di NOVEMBRE xke nn ci sono post!

  5. #5
    Guest

    Predefinito

    Allora, durante l'estrazione formuli la query in questo modo:

    SELECT COUNT(id) AS totale, titolo, testo, gg, mm FROM tabella WHERE aaaa = '1999'

    Poi, se fai un mysql_fetch_assoc() sul risultato, ti troverai un array associativo di 2° livello, che quindi dovrai scorrere con un while. Le chiavi di questo array saranno i nomi dei campi estratti, i loro valori saranno ciclo per ciclo quelli di ciascun record estratto. Ecco un esempio:
    Codice:
    $query = mysql_query("SELECT id, gg, mm, titolo FROM tabella WHERE aaaa='1999'");
    $totale = mysql_num_rows($query);
    echo 'Ci sono in tutto $totale articoli per il 1999';
    while ($array = mysql_fetch_assoc($query)) {
         echo $array['titolo'];
    }
    In questo modo per ciascun record del 1999 verrà visualizzato il titolo. Per visualizzare gli altri campi basta modificare la chiave di $array.

    Per suddividere per mesi ti basta dichiarare una variabile $mese vuota, poi al primo ciclo le assegni il valore del mese estratto e nei cicli successivi fai un confronto: se il mese estratto è uguale al precedente visualizzi una cosa, se è diverso aggiorni la variabile e visualizzi un'altra cosa. Per saltare i mesi vuoti, penso che nel DB non ci siano record in cui il mese è impostato, ma titolo e testo sono vuoti, quindi non ne verrà estratto nessuno. Ecco fatto. Per visualizzare il nome del mese, creati un array ad indice numerico con i nomi dei mesi che parta da 1, e poi richiama il valore che corrisponde a $mese.

    Spero di essere stato chiaro, anche se vado di fretta...

  6. #6
    L'avatar di lobster
    lobster non è connesso Utente
    Data registrazione
    05-09-2003
    Residenza
    ...nel 'Paese dei Balocchi'...
    Messaggi
    151

    Predefinito

    ciao!

    ehm... allora... l'unica cosa che mi è riuscita è il totale delgli articoli per anno...

    non ho capito come fare per il discorso della divisione in mesi... :(

  7. #7
    L'avatar di lobster
    lobster non è connesso Utente
    Data registrazione
    05-09-2003
    Residenza
    ...nel 'Paese dei Balocchi'...
    Messaggi
    151

    Predefinito

    ...e come mai non proprio a estrarre i dati in un nuovo sito che ho aperto da pochi giorni sempre in Altervista?

    Devo cambiare qualche paramentro perchè forse sono su un nuovo server?

  8. #8
    Guest

    Predefinito

    Fammi capire: sei riuscito a estrarre i record e a contarli, ma non a visualizzarli?

  9. #9
    L'avatar di lobster
    lobster non è connesso Utente
    Data registrazione
    05-09-2003
    Residenza
    ...nel 'Paese dei Balocchi'...
    Messaggi
    151

    Predefinito

    Ciao!

    Sono riuscito solo a contare i record dell'anno.

    Non sono riuscito a dividere i mesi e a contare i post mensili...

    Quale è lo script per dividere e contare i mesi come vorrei io?

  10. #10
    Guest

    Predefinito

    Allora, fondamentalmente ci sono due modi: o fai eseguire allo script una query per ogni mese, o esegui un'unica query e manipoli i risultati con php. Ti posto un pò di codice
    Codice:
    $query = mysql_query("SELECT id, gg, mm, titolo FROM tabella WHERE aaaa='1999'");
    $totale = mysql_num_rows($query);
    echo 'Ci sono in tutto $totale articoli per il 1999';
    $mesi = array("","Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre");
    $mese = "";
    while ($array = mysql_fetch_assoc($query)) {
    
    if ($array['mm'] != $mese) {
    echo "Articoli del mese di ".$mesi[$array['mm']]; $mese = $array['mm'];
    } echo "Titolo: ".$array['titolo'];
    }
    Dovrebbe funzionare, anche se l'ho scritto in fretta e furia...

  11. #11
    L'avatar di lobster
    lobster non è connesso Utente
    Data registrazione
    05-09-2003
    Residenza
    ...nel 'Paese dei Balocchi'...
    Messaggi
    151

    Predefinito

    Allora: sono riuscito a dividere i mesi, non con il tuo script xke non riusivo a farlo funzionare, ma con uno creato da me moooolto artigianalmente...

    Comunque funziona!

    Mi resta da risolvere il problema di contare i post mensili...

Regole di scrittura

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