• User Attivo

    Estrarre dati da Mysql e riportarli con colori diversi

    Salve ,

    ho un database molto semplice con un' unica tabella , dal quale devo estrarre tutti i dati di tutte le linee e riportarle a schermo .

    il database è così composto :

    *ID | TITOLO | DESCRIZIONE | COLORE

    *dove nel campo colore in pratica ho inserito una stringa che è il nome di una classe inserita in css esterno .

    Vado a stampare tutti i dati a schermo ( sono tutti link e DEVONO avere differenti colori ognuno ) ed assegno una variabile al colore , ma mi succede che tutta pa pagina , cioè tutti i link cambiano il loro colore sulla base dell' ultimo inserito . In pratica ( da quel poco che capisco io ) il puntatore arriva in fondo al database e sulla base di quel colore , mi colora tutto uguale anzichè diversi come dovrebbero essere ...
    infatti basta inserire una nuova riga , con colore diverso che tutto assume il colore di quesll' ultima riga ..

    dove sbaglio ? come posso risolvere ?

    Grazie mille in anticipo !

    🙂


  • User Attivo

    Help !! mi sono spiegato male , vero ??

    ci riprovo:

    io dovrei fare in modo che leggendo il database e riportando i dati appena letti , le varie righe del database appaiano di colori diversi , sulla base ( ho pensato io , ma non escludo altre soluzioni ) di un campo del database stesso ( che è *COLORE *) che nient' altro è che il nome di una classe all' inteno di un CSS .

    In pratica come posso dire : riportami tutte le linee ognuna con il colore assegnato ?

    ciò che invece ottengo al momento è che mi riporta tutte le linee ma con il colore assegnato all' ultima che trova ..

    non so se ora è più chiaro .. spero di sì ..

    grazie in anticipo !!

    🙂


  • ModSenior

    Ciao tanaka,

    Magari posta il codice che stai usando che non funziona...


  • User Attivo

    Ciao Darkita e grazie ; ecco qua ..

    <?php
    require_once("includes/config.php"); // includo le variabili di connessione

    // mi collego al database
    $db_connection = mysql_connect ($DBHost, $DBUser, $DBPass) OR die (mysql_error());
    $db_select = mysql_select_db ($DBName) or die (mysql_error());
    $db_table = $TBL_PR . "events"; // in questo caso mi collego alla tabella calendar_events

    IF(!isset($_GET['year'])){
    $_GET['year'] = date("Y");
    }
    IF(!isset($_GET['month'])){
    $_GET['month'] = date("n")+1;
    }

    $month = addslashes($_GET['month'] - 1);
    $year = addslashes($_GET['year']);

    $query = "SELECT event_id,event_title,event_day,event_time,event_team FROM $db_table WHERE event_month='$month' AND event_year='$year' ORDER BY event_time";

    $query_result = mysql_query ($query);
    while ($info = mysql_fetch_array($query_result))
    {
    $day = $info['event_day'];
    $event_id = $info['event_id'];
    $events[$day][] = $info['event_id'];
    $event_info[$event_id]['0'] = substr($info['event_title'], 0, 100);;
    $event_info[$event_id]['1'] = $info['event_time'];
    $event_team = $info['event_team'];
    }

    $todays_date = date("j");
    $todays_month = date("n");

    $days_in_month = date ("t", mktime(0,0,0,$_GET['month'],0,$_GET['year']));
    $first_day_of_month = date ("w", mktime(0,0,0,$_GET['month']-1,1,$_GET['year']));
    $first_day_of_month = $first_day_of_month + 1;
    $count_boxes = 0;
    $days_so_far = 0;

    IF($_GET['month'] == 13){
    $next_month = 2;
    $next_year = $_GET['year'] + 1;
    } ELSE {
    $next_month = $_GET['month'] + 1;
    $next_year = $_GET['year'];
    }

    IF($_GET['month'] == 2){
    $prev_month = 13;
    $prev_year = $_GET['year'] - 1;
    } ELSE {
    $prev_month = $_GET['month'] - 1;
    $prev_year = $_GET['year'];
    }

    ?>
    <html>
    <head>

    <script language="JavaScript" type="text/JavaScript">
    <!--
    function MM_jumpMenu(targ,selObj,restore){ //v3.0
    eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
    if (restore) selObj.selectedIndex=0;
    }
    function MM_openBrWindow(theURL,winName,features) { //v2.0
    window.open(theURL,winName,features);
    }
    //-->
    </script>

    <style type="text/css">
    <!--
    .Stile2 {
    color: #666666;
    font-size: 10px;
    }
    .Stile3 {
    color: #fefa05;
    font-size: 9px;
    }
    .Stile4 {
    font-size: 9
    }
    .Stile5 {font-size: 8px}
    .Stile6 {font-size: 9px}
    -->
    </style>
    </head>
    <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
    <div align="center">
    <table id="Tabella_01" width="686" height="501" border="0" cellpadding="0" cellspacing="0">
    <!--DWLayoutTable-->
    <tr>
    <td height="64" colspan="2" valign="top">
    <img src="../immagini/privato_01.jpg" width="191" height="64" alt=""></td>
    <td colspan="4" valign="top"><img src="immagini/vide_logo.jpg" width="509" height="64" alt=""></td>
    </tr>

    <tr>
        <td height="605" colspan="6" valign="top">
      
      <div align="center"><span class="currentdate">
        <br><? echo date ("F Y", mktime(0,0,0,$_GET['month']-1,1,$_GET['year'])); ?></span><br>
        <br>
      </div>
      <div align="center">
        <table width="700" border="0" cellspacing="0" cellpadding="0">
          <tr> 
            <td><div align="right"><span class="freccine"><a href="<? echo "index.php?month=$prev_month&amp;year=$prev_year"; ?>">&lt;&lt;</a></span></div></td>
            <td width="200"><div align="center">
              
              <select name="month" id="month" onChange="MM_jumpMenu('parent',this,0)">
                <?php
            for ($i = 1; $i <= 12; $i++) {
                $link = $i+1;
                IF($_GET['month'] == $link){
                    $selected = "selected";
                } ELSE {
                    $selected = "";
                }
                echo "<option value=\"index.php?month=$link&amp;year=$_GET[year]\" $selected>" . date ("F", mktime(0,0,0,$i,1,$_GET['year'])) . "</option>\n";
            }
            ?>
                </select>
              <select name="year" id="year" onChange="MM_jumpMenu('parent',this,0)">
                <?
          for ($i = 2008; $i <= 2012; $i++) {
              IF($i == $_GET['year']){
                $selected = "selected";
            } ELSE {
                $selected = "";
            }
              echo "<option value=\"index.php?month=$_GET[month]&amp;year=$i\" $selected>$i</option>\n";
          }
          ?>
                </select>
              </div></td>
            <td><div align="left"><span class="freccine"><a href="<? echo "index.php?month=$next_month&amp;year=$next_year"; ?>">&gt;&gt;</a></span></div></td>
          </tr>
          </table>
        <br>
      </div>      <table width="700" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#000000">
        <tr>
          <td><table width="100%" border="0" cellpadding="0" cellspacing="1">
            <tr class="topdays"> 
              <td><div align="center">Sunday</div></td>
                <td><div align="center">Monday</div></td>
                <td><div align="center">Tuesday</div></td>
                <td><div align="center">Wednesday</div></td>
                <td><div align="center">Thursday</div></td>
                <td><div align="center">Friday</div></td>
                <td><div align="center">Saturday</div></td>
              </tr>
            <tr valign="top" bgcolor="#FFFFFF"> 
              <?php
        for ($i = 1; $i <= $first_day_of_month-1; $i++) {
            $days_so_far = $days_so_far + 1;
            $count_boxes = $count_boxes + 1;
            echo "<td width=\"100\" height=\"100\" class=\"beforedayboxes\"></td>\n";
        }
        for ($i = 1; $i <= $days_in_month; $i++) {
               $days_so_far = $days_so_far + 1;
                $count_boxes = $count_boxes + 1;
            IF($_GET['month'] == $todays_month+1){
                IF($i == $todays_date){
                    $class = "highlighteddayboxes";
                } ELSE {
                    $class = "dayboxes";
                }
            } ELSE {
                IF($i == 1){
                    $class = "dayboxes";
                } ELSE {
                    $class = "dayboxes";
                }
            }
            echo "<td width=\"100\" height=\"100\" class=\"$class\">\n";
            $link_month = $_GET['month'] - 1;
            echo "<div align=\"right\"><span class=\"toprightnumber\">\n<a href=\"javascript:MM_openBrWindow('event_add.php?day=$i&amp;month=$link_month&amp;year=$_GET[year]','','width=500,height=400');\">$i</a>&nbsp;</span></div>\n";
            IF(isset($events*)){
                echo "<div align=\"left\"><span class=\"$event_team\">\n";
                while (list($key, $value) = each ($events*)) {
                
                echo "<a href=\"javascript:MM_openBrWindow('event.php?id=$value','','width=500,height=200');\">" . $event_info[$value]['1'] . "<br>" . $event_info[$value]['0']. "<br><br>";
                }
                echo "</span></div>\n";
            }
            echo "</td>\n";
            IF(($count_boxes == 7) AND ($days_so_far != (($first_day_of_month-1) + $days_in_month))){
                $count_boxes = 0;
                echo "</TR><TR valign=\"top\">\n";
            }
        }
        $extra_boxes = 7 - $count_boxes;
        for ($i = 1; $i <= $extra_boxes; $i++) {
            echo "<td width=\"100\" height=\"100\" class=\"afterdayboxes\"></td>\n";
        }
        ?>
    

    </tr>
    </table>
    </div>
    </body>
    </html>

    c'è quasi tutto tranne le cose davvero inutili .. "event_team" è l' assegnazione ad una class in un css esterno .
    si tratta di un calendario all' interno del quale dovrei far apparire scritte di colori diversi ..

    secondo la mia ignoranza la riga incriminata è questa :

            IF(isset($events*)){
                echo "<div align=\"left\"><span class=\"$event_team\">\n";
                while (list($key, $value) = each ($events*)) {
                
                echo "<a href=\"javascript:MM_openBrWindow('event.php?id=$value','','width=500,height=200');\">" . $event_info[$value]['1'] . "<br>" . $event_info[$value]['0']. "<br><br>";
                }
                echo "</span></div>\n";
            }
    

    dove in pratica vorrei dirgli stampami le varie righe del database sulla base di ciò che trovi nella variabile $event_team ..

    che ne pensi ??

    grazie !!


  • User Attivo

    Accade ciò perchè la classe, che deve assegnare leggendo i dati dal DB, non è chiusa nel ciclo (nel tuo caso il while). Così legge l'ultimo record del DB ed il valore della classe rimane proprio l'ultimo. Scusa la ripetizione.

    Prova ad inserire il tag span nel ciclo e vedrai che funzionerà.

    CIAO e fammi sapere


  • User Attivo

    Grazie mille !!!!!!!!! hai capito perfettamente la situazione !!!!!

    però , anche inserendo il tag span nel ciclo di scrittura , cioè così :

    echo "<div align="left">";
    while (list($key, $value) = each ($events*)) {

                echo "<span class=\"$event_team\"><a href=\"javascript:MM_openBrWindow('event.php?id=$v alue','','width=500,height=200');\">" . $event_info[$value]['1'] . "<br>" . $event_info[$value]['0']. "<br><br>";
                }
    

    non funziona lo stessso .... perchè ?? come risolvo ??

    Grazie infinite !!!!


  • User Attivo

    ho quasi risolto ...

    ho inserito un array nel ciclo di lettura così :

    $query = "SELECT event_id,event_title,event_day,event_time,event_team FROM $db_table WHERE event_month='$month' AND event_year='$year' ORDER BY event_time"; // estraggo titolo , giorno , // orario e team dalla
    // tabella in ordine di tempo
    $query_result = mysql_query ($query);
    while ($info = mysql_fetch_array($query_result))
    {
    $day = $info['event_day'];
    $event_id = $info['event_id'];
    $events[$day][] = $info['event_id'];
    $event_info[$event_id]['0'] = substr($info['event_title'], 0, 100);;
    $event_info[$event_id]['1'] = $info['event_time'];
    $event_info[$event_id]['2'] = $info['event_team']; // metto il team di appartenenza che identifica il colore qui

    }

    e nel ciclo di scrittura :

    while (list($key, $value) = each ($events*)) {
    $colore = $event_info[$value]['2'];// setto una variabile che contenga il dato letto prima
    echo "<span class="$colore"><a href="javascript:MM_openBrWindow('event.php?id=$value','','width=500,height=200');">" . $event_info[$value]['1'] . "<br>" . $event_info[$value]['0']. "<br><br>";// riporto il la variabile associandola al tag span
    }
    echo "</span></div>\n";

    però ... tutto va bene finchè due scritte non compaiono nella medesima casellina .. in quel caso quella che ha un orario precedente " vince " colorando le altre ..

    perchè ???


  • User Attivo

    mi rispondo da me , in modo da poter aiutare magari qualcun altro ..

    è stato sufficiente spostare la chiusra span e div interna al ciclo :

    while (list($key, $value) = each ($events*)) {
    $colore = $event_info[$value]['2'];// setto una variabile che contenga il dato letto prima
    echo "<span class="$colore"><a href="javascript:MM_openBrWindow('event.php?id=$v alue','','width=500,height=200');">" . $event_info[$value]['1'] . "<br>" . $event_info[$value]['0']. "<br><br>";// riporto il la variabile associandola al tag span
    echo "</span></div>\n"; // ecco qua ..... risolto ..

    }

    ciao e grazie !