Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 35

Discussione: Sezioni e messaggi

  1. #1

    Sezioni e messaggi

    Ciao a tutti,
    avrei un piccolo problema che spero mi aiuterete a risolvere!
    Praticamente ho le seguenti tabelle mySQL:

    > argomenti
    > --------------------------------------------------|
    > id | leggibile | nome |
    ----------------------------------------------------|
    > 1 | 1 | storia |
    > 2 | 1 | geografia |
    > 3 | 1 | matematica |
    > 4 | 0 | fisica |
    > 5 | 1 | scienze |
    continua... (non sono solo questi ci sono altri parecchi argomento!)
    -----------------------------------------------------


    > messaggi
    > -------------------------------------------------------------
    > id | sezione | data | user_id | msg |
    ---------------------------------------------------------------
    > 1 | 1 | ..... | 1 | Messaggio 1 |
    > 2 | 2 | ..... | 9 | Messaggio 2 |
    > 3 | 1 | ..... | 7 | Messaggio 3 |
    > 4 | 1 | ..... | 5 | Messaggio 4 |
    e continua...
    -----------------------------------------------------------

    Cio' che vorrei realizzare una pagina simile:
    storia (80)
    geografia(5)
    matematica(1)

    ne ho messo solo 3 perche' la pagina dovra' essere composta da soli 3
    argomenti, gli altri dovro' porli in altre pagine

    praticamente vorrei che la query facesse:
    1) selezionasse tutti gli argomenti da 'argomenti'
    2) ne contasse i relativi posts
    3) selezionasse gli argomenti piu' postati limitandosi ai primi 3
    (praticamente come nell'immagine)
    4) nel caso che ci siano due argomenti con gli stessi posts, dovrebbe
    ordinarli secondo il fatto che la sezione sia leggibile o no(1;0)

    Credete che sia possibile tutto questa roba qui con una query????

    Beh, comunque intanto grazie mille, anche per la vostra (chi lo sa!) futura disponibilita'
    Buona prosecuzione di giornata!
    ~Wakka~

  2. #2
    SELECT COUNT(MESSAGGI.ID) AS NUMERO, ARGOMENTI.* FROM MESSAGGI LEFT JOIN ARGOMENTI ON (MESSAGGI.SEZIONE=ARGOMENTI.ID) GROUP BY MESSAGGI.SEZIONE ORDER BY NUMERO, ARGOMENTI.LEGGIBILE;
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  3. #3
    Grazie!
    Anche per la velocita'!
    Ora lo provo e ti faccio sapere, anche se non ho ben capito alcune funzioni che hai usato perche' non sapevo che si potevano usare anche cosi'...

    Cmq grazie mille
    ~Wakka~

  4. #4
    Purtroppo l'ho provata e mi restituisce il seguente array:
    [0] => 1 [1] => [2] => [3] =>
    che credo stia ad indicare il numero di posts per tutti gli argomenti presenti.
    Ma a me servirebbe anche il nome della sezione, magari in un array simile a questo:
    Storia => 1
    Geografia =>0
    etc.
    Questo e'ancora piu' difficile. E' fattibile??
    ~Wakka~

  5. #5
    Guarda che la query è giusta, forse l'unico difetto è che dovrebbe essere con ORDER BY NUMERO desc, LEGGIBILE ...

    Con che codice php leggi i risultati, me lo puoi postare?
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  6. #6
    Con nessun codice, faccio:
    $res = mysql_query("TUA_QUERY");
    $array = mysql_fetch_array($res);
    print_r($array);
    Mi pare sia proprio cosi' quindi non uso nessun codice particolare e mi ritorna solo l'array che ti ho mostrato
    ~Wakka~

  7. #7
    Perforza: il codice php che hai postato legge SOLO la PRIMA riga restituita dalla query; e le altre?

    Devi almeno usare un ciclo while per leggerle tutte...

    Prova con questo:

    Codice PHP:
    $res=mysql_query($query,$database);
    if (
    $res):
        while (
    $record=mysql_fetch_assoc($res)):
            
    print_r($record);
        endwhile;
    endif; 
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  8. #8
    Ora provo speriamo che funzioni!!

    Ahia... questo vuol dire che la mia classe mySQL non serve a nulla perche', prendendo spunto da un forum famoso, ho deciso di costruire per il mio progetto una classe apposita per la gestione del demone mySQL.
    Vuol dire che per una volta ne faro' a meno
    Va be, grazie ora provo e ti faccio sapere!
    ~Wakka~

  9. #9
    Allora... ho scoperto che funziona, pero' non proprio come voglio io
    La mia intenzione era mettere in primo piano l'argomento (piu' i suoi attributi, come leggibile etc.) e poi il numero dei post.
    Con il tuo mi viene detto solamente le aree in cui ci sono posts, ma nelle altre in cui la quota e' ancora a zero no
    Si puo' modificare per fare questo?
    ~Wakka~

  10. #10
    Si può fare, ma hai bisogno delle sottoquery, quindi di una versione recente di mysql, credo almeno la 4.1:

    SELECT ARGOMENTI.*, numero FROM ARGOMENTI LEFT JOIN (SELECT COUNT(MESSAGGI.ID) AS NUMERO, MESSAGGI.SEZIONE FROM MESSAGGI GROUP BY MESSAGGI.SEZIONE) as messaggi ON (MESSAGGI.SEZIONE=ARGOMENTI.ID) ORDER BY NUMERO DESC, ARGOMENTI.LEGGIBILE

    Altrmenti puoi usare la query che ti ho scritto prima per sapere quanti post ci sono per ogni argomento, poi fai un'altra query sugli argomenti per elencarli, e se c'è il numero di post, lo metti; in questo caso ti devi occupare tu di riordinare per numero di post.
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

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.