Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di thitan
    Registrato dal
    Feb 2001
    Messaggi
    716

    MYSQL - stampa per mese/anno

    ciao, io ho una tabella news strutturata + o - così:
    |id|titolo|testo|annoMese|

    annoMese è un campo 4 cifre dato da date("ym");

    la stampa che dovrei fare è una roba del tipo

    Giugno 2007:
    titolo1 - testo1
    titolo2 - testo2

    Luglio 2007:
    titolo3 - testo3

    ecc..

    e fin qui todo bien, uso un ciclo del genere:
    Codice PHP:
    $myMesi mysql_query("SELECT annoMese FROM news GROUP BY annoMese ORDER BY annoMese DESC");
    while(list(
    $myAnnoMese)=mysql_fetch_array($myMesi)){
     
    $nomeMese=trovaMese($myAnnoMese);
     echo 
    $nomeMese;
     
    $myNews=mysql_query("SELECT titolo, testo FROM news WHERE annoMese='$myAnnoMese'");
     while(list(
    $titolo$testo)=mysql_fetch_array($myNews)){
      echo 
    "
    $titolo - $testo";
     }

    il problema è che l'utente deve poter scegliere di visualizzare, ad esempio, solo 2 risultati.
    nell'esempio precedente quindi la visualizzazione dovrebbe fermarsi a giugno, invece mettendo il LIMIT mi pesca 2 risultati per ogni mese!

    dovrei quindi prima fare la query con il LIMIT pescando solo gli id, poi scremare i mesi, e quindi stampare...

    non c'è un modo più semplice?!?

    perchè a me viene in mente una query del tipo

    Codice PHP:
    $a="SELECT id FROM news ORDER BY annoMese DESC LIMIT 0, 3";
    $b="";
    while(list(
    $idN)=mysql_fetch_array($a)){
        
    $b.="|":$idN."|";
    }
    $c="SELECT annoMese FROM news WHERE id IN '$b' GROUP BY annoMese ORDER BY annoMese DESC";
    while(list(
    $annoMese)=mysql_fetch_array($c)){
        
    $nomeMese=trovaMese($myAnnoMese);
        echo 
    "$nomeMese 
    "
    ;
        
    $d=mysql_query("SELECT titolo, testo FROM news WHERE annoMese='$annoMese' && id IN '$b'");
        while(list(
    $titolo$testo)=mysql_fetch_array($d)){
            echo 
    "$titolo$testo
    "
    ;
        }

    (non sò se funziona eh, ma a sentimento quello che dovrebbe fare è quello )

    non c'è un modo di avere lo stesso risultato con meno query?!?

    www.inter-rail.it
    travellers, not tourist
    Is cuma cá mhinice a théann tú ar strae; is é is tábhachtaí gurb áil leat do bhealach a aimsiú arís.

  2. #2
    Utente di HTML.it L'avatar di thitan
    Registrato dal
    Feb 2001
    Messaggi
    716
    ecco come non detto

    ho confuso operatore, non è IN
    ma....ehm qual'era l'operatore tu gli davi un array di valori e controllava se era presente? una sorta di LIKE usato grezzamente insomma..non lo ricordo..uff

    cmq apparte il discorso dell'operatore, nessuna idea su come milgiorare la query?

    www.inter-rail.it
    travellers, not tourist
    Is cuma cá mhinice a théann tú ar strae; is é is tábhachtaí gurb áil leat do bhealach a aimsiú arís.

  3. #3
    Utente di HTML.it L'avatar di thitan
    Registrato dal
    Feb 2001
    Messaggi
    716
    vabbè ho risolto
    non nel modo più elegante, ma funziona

    grazie a tutti quelli che mi hanno aiutato, anche se ora non mi vengono in mente i nomi, eravate davvero troppi

    www.inter-rail.it
    travellers, not tourist
    Is cuma cá mhinice a théann tú ar strae; is é is tábhachtaí gurb áil leat do bhealach a aimsiú arís.

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.