visualizzazione tabella - come fare???

FAX

Utente Attivo
25 Giu 2004
103
0
0
48
www.mothersmilk.it
ciao!

ho costruito questa tabella:

ID smallint(4) No auto_increment
mese varchar(50) No
data date No 0000-00-00
locale varchar(50) No
info text No
IP varchar(15) No non loggato

per la gestione delle date del mio gruppo musicale.
l'inserimento e la cancellazione dei record funziona.

ora ho un quesito:

devo suddividere le date per mese.
così:

APRILE '05 (letto da $mese)

data 1 / descrizioni

data 2 / descrizioni

etc etc

MAGGIO '05 (letto da $mese)

data 1 / descrizioni

data 2 / descrizioni

etc etc

e via dicendo.

ho un file che mi visualizza l'intero db (legge, ordina e con un ciclo for presenta la visualizzazione), solo che per ogni data mi visualizza anche il mese ($mese)

sapete darmi qualche dritta???
le mie conoscenze di php sono limitate...
tnx!
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
Il mese che vedi nella data non deriva da "$mese" ma dal fatto che inserisci la data nel db come "date".
Non inserire il formato della data come "date", ma come un normale "varchar".
Poi ricava il dato del giorno da una variabile, ad esempio "$data", valorizzata in questo modo:
$data = date("d");
In questo modo visualizzerai solo il giorno del concerto.
 

FAX

Utente Attivo
25 Giu 2004
103
0
0
48
www.mothersmilk.it
non mi sono spiegato.

ogni data inserita ha il titolo indicato da $mese.
la data inserita come date, poi la scompongo e la ordino come GG/MM/AAAA.

ho solo bisogno di sapere come fare un ciclo per raggruppare le date in base al valore di $mese scrivendolo solo all'inizio come ho indicato nello schema.

dal codice php io ordino in base alla data, ma non riesco a fare questo raggruppamento (ci ho provato ma ho abbandonato il codice tutto)

la visualizzazione "completa" la faccio così:

<?


//mi connetto al DB e ottengo l'intera lista di record
include("include/db.inc.php");
$query = "SELECT * FROM tour order by data";
$res = mysql_query($query);

//ottengo il numero di record
$righe = mysql_num_rows($res);



for ($i; $i<$righe; $i++)
{

//leggo dal DB i dati della firma corrente
$ID = mysql_result($res, $i, "ID");
$mese1 = mysql_result($res, $i, "mese");
$data = mysql_result($res, $i, "data");
$locale = mysql_result($res, $i, "locale");
$info = mysql_result($res, $i, "info");

//formatto la data secondo lo standard italiano
list($data, $ora) = explode (" ", $data);
list($anno, $mese, $giorno) = explode ("-", $data);
$data = "$giorno-$mese-$anno";

//converto i "\n" in "<BR>" [ritorno a capo]
$info = nl2br($info);

//creazione delle righe

echo("
<table class=data>
<tr>
<td class=data-td>
<span class=data>$mese1</span>
<span class=data>$data</span>
</td>
</tr>
</table>
");?>

<?echo("
<span class=titolo> $ID</span>
<br>
<span class=titolo> $locale</span>
<br>
<span class=testo>$info</span>

");

}

mysql_close($db);//chiudo il db

?>

notate $mese1 (è la variabile che mi interessa) mi ero dimenticato che $mese lo uso già per scomporre la data.
 

FAX

Utente Attivo
25 Giu 2004
103
0
0
48
www.mothersmilk.it
ho risolto!!!!
:D

<?


//mi connetto al DB e ottengo l'intera lista di record
include("include/db.inc.php");
$query = "SELECT * FROM tour order by data";
$res = mysql_query($query);

//ottengo il numero di record
$righe = mysql_num_rows($res);
$conta=0;



for ($i; $i<$righe; $i++)
{

//leggo dal DB i dati della firma corrente
$ID = mysql_result($res, $i, "ID");
$mese1 = mysql_result($res, $i, "mese");
$data = mysql_result($res, $i, "data");
$locale = mysql_result($res, $i, "locale");
$info = mysql_result($res, $i, "info");

//formatto la data secondo lo standard italiano
list($data, $ora) = explode (" ", $data);
list($anno, $mesedata, $giorno) = explode ("-", $data);
$data = "$giorno-$mesedata-$anno";

//converto i "\n" in "<BR>" [ritorno a capo]
$info = nl2br($info);

//creazione delle righe

$conta++;

if ($conta<2) // visualizza solo se == 1
{
echo("

<span class=data>$mese1</span>
<br><br>
");
}

echo("

<span class=data>$data</span>
<br>
<span class=titolo> $locale</span>
<br>
<span class=testo>$info</span>
<br><br><br>
");?>



$controllo = mysql_result($res, $i+1, "mese");

if ($mese1 != $controllo) // se il prossimo mese è diverso ritorna a 0
{
$conta=0;
}

}

mysql_close($db);//chiudo il db

?>

ho pensato un po alla programmazione C che studiai 10 anni fa alle superiori e ZACK!!!

ora ho solo dei quesiti sull'impaginazione di questa pagina php con le tabelle e i css in linea.

dove posso postare???
 
Ultima modifica:

FAX

Utente Attivo
25 Giu 2004
103
0
0
48
www.mothersmilk.it
allora...tutto il mio entusiasmo è svanito quando ho "farcito" il database con nuovi record.
il codice funziona solo per gruppi di due date al mese.

mi sono sbattuto un po e ho pensato a questa strategia (mi sono fatto un flow chart):

1) start

2) $conta=0; (variabile per l'attivazione della visualizzazione del titolo/mese

3) cilclo for per tutta la lunghezza del DB

4) lettura dati e impostazione $mese1 (corrente) e $controllo (mese successivo)

5) $mese1 = $controllo ???

si > $conta=$conta+1;
no > $conta=0 e vai a riga (6)

6) $conta=1 ???

si > visualizza $mese1
no > vai a riga (7)

7) visualizza il resto del record

ritorno al ciclo FOR.

nel mio piccolo ho fatto delle prove su carta e dovrebbe funzionare.

l'ho tradotto così:

<?


//mi connetto al DB e ottengo l'intera lista di record
include("include/db.inc.php");
$query = "SELECT * FROM tour order by data";
$res = mysql_query($query);

//ottengo il numero di record
$righe = mysql_num_rows($res);
$conta=0;



for ($i; $i<$righe; $i++)
{

$demo=i+1;

//leggo dal DB i dati della firma corrente
$ID = mysql_result($res, $i, "ID");

$mese1 = mysql_result($res, $i, "mese");
$controllo = mysql_result($res, $demo, "mese");

$data = mysql_result($res, $i, "data");
$locale = mysql_result($res, $i, "locale");
$info = mysql_result($res, $i, "info");

//formatto la data secondo lo standard italiano
list($data, $ora) = explode (" ", $data);
list($anno, $mesedata, $giorno) = explode ("-", $data);
$data = "$giorno-$mesedata-$anno";

//converto i "\n" in "<BR>" [ritorno a capo]
$info = nl2br($info);

//creazione delle righe

if ($mese1 = $controllo)
{
$conta = $conta+1;
}

else { $conta=0; }

if ($conta = 1)
{
echo("

<span class=data>$mese1</span>
<br><br>
");
}

echo("
<table class=data>
<tr>
<td class=data-td>
<span class=data>$data</span>
</td>
</tr>
</table>
");?>

<?echo("
<span class=titolo> $ID</span>
<br>
<span class=titolo> $locale</span>
<br>
<span class=testo>$info</span>
<br>
<span class=testo>$conta</span>
<br>
<span class=testo>$demo</span>
<br><br>

");

}

mysql_close($db);//chiudo il db

?>

ma non funziona...
secondo me sbagli la sintassi deli vari cicli IF...
aiuto per favore!!!!
 

FAX

Utente Attivo
25 Giu 2004
103
0
0
48
www.mothersmilk.it
stavolta ce l'ho fatta!!!!

ho aggiunto un controllo anche sul record precedente, in modo da visualizzare la famosa variabile $mese1 solo se è il primo record del gruppo.

<?

//mi connetto al DB e ottengo l'intera lista di record
include("include/db.inc.php");
$query = "SELECT * FROM tour order by data";
$res = mysql_query($query);

//ottengo il numero di record
$righe = mysql_num_rows($res);

$conta=0; // contatore suddivisioni

for ($i; $i<$righe; $i++)
{

$demo=$i+1; // indice per lettura record successivo
$demo1=$i-1; // indice per lettura record precedente

//leggo dal DB i dati correnti
$ID = mysql_result($res, $i, "ID");

$mese1 = mysql_result($res, $i, "mese");
$controllo = mysql_result($res, $demo, "mese"); // variabile per mese successivo
$controllo1 = mysql_result($res, $demo1, "mese"); // variabile per mese precedente

$data = mysql_result($res, $i, "data");
$locale = mysql_result($res, $i, "locale");
$info = mysql_result($res, $i, "info");

//formatto la data
list($data, $ora) = explode (" ", $data);
list($anno, $mesedata, $giorno) = explode ("-", $data);
$data = "$giorno-$mesedata-$anno";

// "\n" = "<BR>"
$info = nl2br($info);

//creazione delle righe

if ($mese1==$controllo)
{
$conta=$conta+1;
} else {
if ($mese1==$controllo1) { // se si, non è il primo, quindi $conta=0
$conta=0;
}
else {
$conta=1; // è il primo record del mese, quindi $conta=1
}
}

if ($conta == 1) // stampa il titolo del mese
{
echo("

<span class=data>$mese1</span>
<br><br>
");
}

echo("
<table class=data>
<tr>
<td class=data-td>
<span class=data>$data</span>
</td>
</tr>
</table>
");?>

<?echo("
<span class=titolo> $locale</span>
<br>
<span class=testo>$info</span>
<br>
<br>

");

}

mysql_close($db);//chiudo il db

?>

ora farò le prove per impostare le <table> come nel vecchio file html.

sono soddisfatto!!!
:byebye:
 

FAX

Utente Attivo
25 Giu 2004
103
0
0
48
www.mothersmilk.it
se può interessare ho ottimizzato il codice inserendo un array per il controllo della visualizzazione del titolo (il nome del mese) una sola volta per ogni gruppo:

<?

//mi connetto al DB e ottengo l'intera lista di record
include("include/db.inc.php");
$query = "SELECT * FROM tour2 order by data";
$res = mysql_query($query);

//ottengo il numero di record
$righe = mysql_num_rows($res);

if ($righe<1) // DB vuoto
{
echo("
<center>
<br><br><br><br>
<span class=data>NESSUN<br>CONCERTO<br>IN<br>PROGRAMMA</span>
</center>

");

}

$controllo = array('1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1'); // array controllo mese
$a=0; // indice per mese corrente
$conta=0; // variabile per la visualizzazione del titolo

for ($i; $i<$righe; $i++)
{

//leggo dal DB i dati correnti
$ID = mysql_result($res, $i, "ID");

$mese1 = mysql_result($res, $i, "mese");

$data = mysql_result($res, $i, "data");
$ilgiorno = mysql_result($res, $i, "ilgiorno");
$locale = mysql_result($res, $i, "locale");
$info = mysql_result($res, $i, "info");

//formatto la data
list($data, $ora) = explode (" ", $data);
list($anno, $mesedata, $giorno) = explode ("-", $data);
$selezione = $mesedata; // serve per il ciclo if
$data = "$ilgiorno $giorno";

// "\n" = "<BR>"
$info = nl2br($info);

// assegnazione indice mese corrente

if($selezione=='01') { $a=0; }
if($selezione=='02') { $a=1; }
if($selezione=='03') { $a=2; }
if($selezione=='04') { $a=3; }
if($selezione=='05') { $a=4; }
if($selezione=='06') { $a=5; }
if($selezione=='07') { $a=6; }
if($selezione=='08') { $a=7; }
if($selezione=='09') { $a=8; }
if($selezione=='10') { $a=9; }
if($selezione=='11') { $a=10; }
if($selezione=='12') { $a=11; }

// controlla se è la prima volta che si sta leggendo la data di un mese ($conta=1) altrimenti ($conta=0)
// incrementando $controllo[$a] ogni volta che si legge un mese nuovo

if($controllo[$a]==1) {
$controllo[$a]++;
$conta=1;
}
else {
$conta=0;
}

//creazione delle righe

// verifica per visualizzazione titolo ($conta==1) o no ($conta==0)

if($conta==1) {

?>
<br>
<hr width=80% height=1>
<br>

<table class=data>
<tr>
<td class=pic1><img src="../immagini/cane-tour.jpg" border="0"></td>
<td cass=text>

<?

echo("

<span class=titolo>$mese1</span>
<br><br>
");

?>

</td>
<td class=pic2><img src="../immagini/cane-tour.jpg" border="0"></td>
</tr>
</table>
<?

}

echo("
<span class=data>$data</span>
<br>
<span class=locale>$locale</span>
<br>
<span class=info>$info</span>
<br>
");

}
mysql_close($db);//chiudo il db
?>

volendo...
c'è quel ciclo if, per l'assegnazione dell'indice alla variabile $a.

sapete se c'è un altro modo per ottimizzarlo???

ciaooo!!!
 
Discussioni simili
Autore Titolo Forum Risposte Data
R Visualizzazione tabella Mysql MySQL 0
R anomalia nella visualizzazione tabella mysql MySQL 1
E php Mysql visualizzazione file *.php in tabella PHP 0
A problema visualizzazione dati da tabella PHP 15
C Problema con visualizzazione dell'immagina da tabella database PHP 5
W visualizzazione tabella ASP.NET 5
S problema con visualizzazione campo in una tabella PHP 12
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
A Visualizzazione due tabelle PHP 1
F Problemi visualizzazione mappa Android studio Sviluppo app per Android 0
M Visualizzazione a video risultati query php PHP 0
M Errore visualizzazione meta tag title e description SEO e Posizionamento 1
D Visualizzazione pagina basata sul valore di un campo del database PHP 2
F Visualizzazione motore di ricerca SEO e Posizionamento 2
T cms con visualizzazione mind map CMS (Content Management System) 0
B margini e padding nella visualizzazione mobile HTML e CSS 6
A Errore visualizzazione selezione testo Photoshop 0
R Visualizzazione barra superiore Google Search Console 0
Beppe2 Visualizzazione sottotitoli video HTML e CSS 2
F Problemi di visualizzazione di un sito su più browser WordPress 0
S Problemi di visualizzazione form contatti sito web HTML e CSS 2
L risolto visualizzazione e ordinamento dati PHP 1
Y Problema visualizzazione PDF generato da fpdf PHP 1
gandalf1959 Youtube e possibilità di visualizzazione delle playlist HTML e CSS 0
P Cambiare visualizzazione con JS Javascript 1
L Mancata visualizzazione di icone su button PHP 0
F [PHP] Visualizzazione video PHP 3
R [PHP] Visualizzazione dati Array PHP 2
pjtertdj Visualizzazione dati in php da mysql con funzione matematica in javascript PHP 1
Giacomo Boccherini Impedire la visualizzazione portrait per alcune mediaqueries jQuery 1
gandalf1959 Estrazione e visualizzazione del simbolo dell'euro php/mysqli PHP 0
M Problema visualizzazione colori in photoshop Photoshop 0
Spown [WordPress] Problemi visualizzazione su più browser + voci menu in movimento WordPress 1
R Visualizzazione elementi Access MS Access 2
D [Photoshop] Visualizzazione a Monitor tasti ALT e CTRL Photoshop 0
Andrea_Ventura [HTML] Problemi con visualizzazione Navigation Bar HTML e CSS 10
M [HTML] Problema visualizzazione immagini su dispositivi HTML e CSS 4
B Visualizzazione interfaccia grafica photoshop cs 5 Photoshop 1
Z [HTML] aiuto per visualizzazione su tablet Offerte e Richieste di Lavoro e/o Collaborazione 6
G [PHP] Visualizzazione errata immagini PHP 3
Antonio Nervi [Javascript] Problema visualizzazione banner accettazione cookies Javascript 6
A Problema visualizzazione photoshop elements 9 Photoshop 1
G [Photoshop][Joomla] Errore visualizzazione immagine Photoshop 1
O Visualizzazione singolo contenuto con php PHP 7
M [Javascript] Visualizzazione mappa Javascript 1
elpirata [PHP] Evitare la visualizzazione del carattere di nuova linea \r\n PHP 5
A WAMP visualizzazione sito in locale Web Server 3
A [Javascript] Problema visualizzazione posizione corrente su mappa Javascript 2
A [PHP] Visualizzazione righe (a capo) file .txt PHP 2
A [PHP] Problema visualizzazione nome utente loggato su sito ecommerce PHP 23

Discussioni simili