Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    133

    visualizzazione perticolare da database

    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 $mese1)

    data 1 / descrizioni

    data 2 / descrizioni

    etc etc

    MAGGIO '05 (letto da $mese1)

    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 ($mese1)

    qui il codice:

    <?
    //connessione per ottenere la lista di record
    include("include/db.inc.php");
    $query = "SELECT * FROM tour order by data";
    $res = mysql_query($query);

    //n° record
    $righe = mysql_num_rows($res);

    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");
    $locale = mysql_result($res, $i, "locale");
    $info = mysql_result($res, $i, "info");

    //formatto la data gg/mm/aaaa
    list($data, $ora) = explode (" ", $data);
    list($anno, $mese, $giorno) = explode ("-", $data);
    $data = "$giorno-$mese-$anno";

    //"\n" = "
    "
    $info = nl2br($info);

    //righe

    echo("
    $mese1
    $data
    ");?>

    <?echo("
    $ID


    $locale


    $info

    ");

    }

    mysql_close($db);//chiudo il db

    ?>

    un'ulteriore problema.
    vi posto il codice della normale visualizzazione del vecchio file html


    <TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0>
    <TR>

    <td width="30%" align="RIGHT" valign="top">
    </td>
    <td width="70%" align="center" valign="top">

    <img src=immagini/tour-2005.jpg border=0>
    </td>

    </TR>
    </TABLE>





    <hr width=80% height=1>






    <TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0>
    <TR>

    <td width="30%" align="RIGHT" valign="center">
    </td>
    <td width="15%" align="RIGHT" valign="center">[img]immagini/cane-tour.jpg[/img]
    </td>
    <td width="40%" align="CENTER" valign="center">
    <DIV align="center" STYLE="font-size:34px; font-family:impact; color:RED">APRILE '05</DIV>
    </td>
    <td width="15%" align="LEFT" valign="center">[img]immagini/cane-tour.jpg[/img]
    </td>

    </TR>
    </TABLE>

    <TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0>
    <TR>

    <td width="30%" align="RIGHT" valign="top">
    </td>
    <td width="70%" align="center" valign="top">
    <DIV align="center" STYLE="font-size:16px; font-weight:bold; font-family:arial; color:ORANGE">venerdì 15</DIV>
    <DIV align="center" STYLE="font-size:16px; font-weight:bold; font-family:arial; color:BLACK">PHENOMENON - Fontaneto (NO)</DIV>
    <DIV align="center" STYLE="font-size:14px;"></DIV>
    <DIV align="center" STYLE="font-size:16px; font-weight:bold; font-family:arial; color:ORANGE">venerdì 22</DIV>
    <DIV align="center" STYLE="font-size:16px; font-weight:bold; font-family:arial; color:BLACK">ISLA GRANDE - Oleggio grande (NO)</DIV>
    <DIV align="center" STYLE="font-size:14px;"></DIV>
    <DIV align="center" STYLE="font-size:16px; font-weight:bold; font-family:arial; color:ORANGE">giovedì 28</DIV>
    <DIV align="center" STYLE="font-size:16px; font-weight:bold; font-family:arial; color:BLACK">Festa Patronale di Varzo (VB)</DIV>


    <hr width=80% height=1>
    </td>

    </TR>
    </TABLE>

    quindi devo visualizzare:

    [immagine di intestazione]

    <hr>

    [immagine] $mese1 [immagine] (ad esempio aprile '05)

    tutte le date raggruppate a $mese1

    <hr>

    [immagine]Smese1 [immagine] (ad esempio maggio '05)

    tutte le date raggruppate a $mese1

    <hr>

    però se provo ad impstare queste tabelle nel codice php, mi da errori (parse error)

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

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    133
    ho risolto!!!!


    <?


    //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 "
    " [ritorno a capo]
    $info = nl2br($info);

    //creazione delle righe

    $conta++;

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

    <span class=data>$mese1</span>



    ");
    }

    echo("

    <span class=data>$data</span>


    <span class=titolo> $locale</span>


    <span class=testo>$info</span>




    ");?>



    $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 mi rimane da capire come visualizzare tutto come in quelle tabelle html che ho indicato...
    nessuno sa aiutarmi???

    tnx!!!!

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    133
    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 "
    " [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>



    ");
    }

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

    <?echo("
    <span class=titolo> $ID</span>


    <span class=titolo> $locale</span>


    <span class=testo>$info</span>


    <span class=testo>$conta</span>


    <span class=testo>$demo</span>




    ");

    }

    mysql_close($db);//chiudo il db

    ?>

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

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    133
    ce l'ho fatta!!!
    bastava un controllo anche sul campo precedente!



    http://www.canistracci-oil.com/tour/tabella.php

    ci sono!!!

    mi rimane solo il problema di inserire le tabelle come in html...

    ho fatto il foglio di stile ma prendiamo questo esempio:
    [...]
    if ($conta == 1) // stampa il titolo del mese
    {
    echo("

    <span class=titolo>$mese1</span>



    ");
    }
    [...]

    se inserisco la tabella come questa
    <TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0>
    <TR>

    <td width="30%" align="RIGHT" valign="center">
    </td>
    <td width="15%" align="RIGHT" valign="center">[img]immagini/cane-tour.jpg[/img]
    </td>
    <td width="40%" align="CENTER" valign="center">
    <DIV align="center" STYLE="font-size:34px; font-family:impact; color:RED">APRILE '05</DIV> // qui va $mese1
    </td>
    <td width="15%" align="LEFT" valign="center">[img]immagini/cane-tour.jpg[/img]
    </td>

    </TR>
    </TABLE>

    mi da un parse error alla linea dove inserisco <table class=... >

    dove sbaglio???
    help!!!

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    133
    ho risolto da solo!!!

    chiudete pure.

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.