Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
PHP - problema con GROUP BY
Forum - PHP - problema con GROUP BY

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
luigi7 (Normal User)
Pro


Messaggi: 83
Iscritto: 28/06/2011

Segnala al moderatore
Postato alle 20:19
Martedì, 27/03/2012
Salve, volevo sapere una cosa che non ne vengo a capo..
ho il problema di raggruppare le date degli articoli in questo modo:
vorrei fare la stessa cosa di questo sito: http://multimedia.digital.it  e vedete in mezzo alla pagina..alla voce Archivio.



2012
2013

solo ora ho 6 record per test e lo script.
mi unisce in questo modo:
    2012
    2012
    2013
    2012

come mai?

vi posto il codice:
Codice sorgente - presumibilmente PHP

  1. <?php
  2. //Visualizzo le date
  3. $strSQL = "SELECT * FROM articoli GROUP BY dtmPubblicazione;";
  4.  
  5. $result = mysql_query($strSQL);
  6.  
  7. //Elenco le date
  8. while($row = mysql_fetch_array($result)){
  9.  
  10.        
  11.         $dateArray=explode('-',''.$row["dtmPubblicazione"].'');
  12.         echo "<li><a href=\"index.php?m=articoli&action=archive&date=$dateArray[2]\">$dateArray[2]</a></li>\n";
  13. }
  14.  
  15. //Libero la memoria
  16.  
  17. ?>



non ne vengo fuori.. vorrei dire che il campo dtmPubblicazione è varchar(255).. perché posso fare inserire a me un data che non è ancora uscita e la pubblico quando e il momento..

non so se si può fare con datetime.. visto che sto imparando seriamente...solo che vado passo per passo..

vi ringrazio molto.

Aspetto per risolvere il problema..
buona serata.

Ultima modifica effettuata da luigi7 il 27/03/2012 alle 20:22
PM Quote
Avatar
luigi7 (Normal User)
Pro


Messaggi: 83
Iscritto: 28/06/2011

Segnala al moderatore
Postato alle 11:43
Mercoledì, 28/03/2012
salve ... vorrei fare una cosa cosi come quello in allegato..

mi dite come posso fare?

grazie mille.


luigi7 ha allegato un file: Cattura.JPG (18212 bytes)
Clicca qui per guardare l'immagine
PM Quote
Avatar
luigi7 (Normal User)
Pro


Messaggi: 83
Iscritto: 28/06/2011

Segnala al moderatore
Postato alle 14:26
Mercoledì, 28/03/2012
ho risolto:

Codice sorgente - presumibilmente PHP

  1. <?php
  2. //Visualizzo le date
  3. $strSQL = "SELECT count(*) as Num, dtmPubblicazione FROM articoli GROUP BY dtmPubblicazione";
  4.  
  5. $result = mysql_query($strSQL);
  6.  
  7. //Elenco le date
  8. while($row = mysql_fetch_array($result)){
  9.  
  10.        
  11.         $dateArray=explode('-',''.$row["dtmPubblicazione"].'');
  12.         echo "<li><a href=\"index.php?m=articoli&action=archive&date=$dateArray[2]\">$dateArray[2]</a></li>\n";
  13. }
  14.  
  15. //Libero la memoria
  16.  
  17. ?>



per fare il menu mostra/nascondi dei mesi come posso fare?

grazie mille.

PM Quote
Avatar
ale.gatti96 (Member)
Pro


Messaggi: 71
Iscritto: 29/11/2011

Segnala al moderatore
Postato alle 16:42
Mercoledì, 28/03/2012


PM Quote
Avatar
luigi7 (Normal User)
Pro


Messaggi: 83
Iscritto: 28/06/2011

Segnala al moderatore
Postato alle 17:25
Mercoledì, 28/03/2012
ciao e  grazie per i link .. ma non ho ancora risolto e non so come mai..

ti allego le immagini..

vedi se mi capisci lo script è l'ultimo che ho postato..

non so se è un problema di inserimento o di visualizzazione che faccio io e non so come..

idee?

grazie mille e buona giornata.


luigi7 ha allegato un file: database_nonfunzionante.JPG (94107 bytes)
Clicca qui per guardare l'immagine
PM Quote
Avatar
luigi7 (Normal User)
Pro


Messaggi: 83
Iscritto: 28/06/2011

Segnala al moderatore
Postato alle 17:26
Mercoledì, 28/03/2012
e questo è l'archivio come mi presenta..

non so più che fare..

ciao.


luigi7 ha allegato un file: archivio.jpg (13140 bytes)
Clicca qui per guardare l'immagine
PM Quote
Avatar
ale.gatti96 (Member)
Pro


Messaggi: 71
Iscritto: 29/11/2011

Segnala al moderatore
Postato alle 17:50
Mercoledì, 28/03/2012
Penso che l'errore sia nel GROUP BY, li raggruppa per ogni giorno e non per anno come vorresti tu.

Io lo correggerei così ():
Codice sorgente - presumibilmente Php

  1. <?php
  2. //Visualizzo le date
  3. $strSQL = "SELECT count(*) as Num, year(dtmPubblicazione) as anno FROM articoli GROUP BY anno ORDER BY anno";
  4. $result = mysql_query($strSQL);
  5. //Elenco le date
  6. while($row = mysql_fetch_array($result))
  7.      echo "<li><a href=\"index.php?m=articoli&action=archive&date=$row["anno"]\">$row["anno"]</a></li>\n";
  8. //Libero la memoria
  9. mysql_free_result($result); ?>


In questo modo non devi neanche esplodere la data per ricavarti l'anno, ci pensa MySQL.
Prova e dimmi se funziona.

Ultima modifica effettuata da ale.gatti96 il 28/03/2012 alle 17:55


PM Quote
Avatar
luigi7 (Normal User)
Pro


Messaggi: 83
Iscritto: 28/06/2011

Segnala al moderatore
Postato alle 17:55
Mercoledì, 28/03/2012
ciao, ho provato ma ora non stampa nulla.. il codice è questo ho tolto la mia query e ho messo la tua..
forse sarà problema della dataArray?

Codice sorgente - presumibilmente Php

  1. <?php
  2. //Visualizzo le date
  3. //$strSQL = "SELECT count(*) as Num, dtmPubblicazione FROM articoli GROUP BY dtmPubblicazione";
  4. $strSQL = "SELECT count(*) as Num, year(dtmPubblicazione) as anno FROM articoli GROUP BY anno ORDER BY anno";
  5. $result = mysql_query($strSQL);
  6.  
  7. //Elenco le date
  8. while($row = mysql_fetch_array($result)){
  9.  
  10.        
  11.         $dateArray=explode('-',''.$row["dtmPubblicazione"].'');
  12.         echo "<li><a href=\"index.php?m=articoli&action=archive&date=$dateArray[2]\">$dateArray[2]</a></li>\n";
  13. }
  14.  
  15. //Libero la memoria
  16.  
  17. ?>


PM Quote
Avatar
luigi7 (Normal User)
Pro


Messaggi: 83
Iscritto: 28/06/2011

Segnala al moderatore
Postato alle 17:59
Mercoledì, 28/03/2012
Testo quotato

Postato originariamente da ale.gatti96:

Penso che l'errore sia nel GROUP BY, li raggruppa per ogni giorno e non per anno come vorresti tu.

Io lo correggerei così ():
Codice sorgente - presumibilmente Php

  1. <?php
  2. //Visualizzo le date
  3. $strSQL = "SELECT count(*) as Num, year(dtmPubblicazione) as anno FROM articoli GROUP BY anno ORDER BY anno";
  4. $result = mysql_query($strSQL);
  5. //Elenco le date
  6. while($row = mysql_fetch_array($result))
  7.      echo "<li><a href=\"index.php?m=articoli&action=archive&date=$row["anno"]\">$row["anno"]</a></li>\n";
  8. //Libero la memoria
  9. mysql_free_result($result); ?>


In questo modo non devi neanche esplodere la data per ricavarti l'anno, ci pensa MySQL.
Prova e dimmi se funziona.



niente cosi non stampa nulla.. come mai?

perché io inserisco la data in questo modo 28-03-2012 è il problema formato data?

grazie mille.

PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo