[PHP] Problema con query select

Max61

Utente Attivo
2 Mar 2014
678
3
18
Salve come da titolo ho un problema in una select, mi spiego:
questa è la query di partenza che mi estrae tutti i record della condizione WHERE
PHP:
// numero di risultati da visualizzare per pagina
        $per_page = 500;

        // calcola le pagine totali
               $result = mysql_query("SELECT * FROM anticipazione WHERE (peso_X_congiunturale >= 4000 OR peso_X_congiunturale <=-4000)");
       
        $total_results = mysql_num_rows($result);
        $total_pages = ceil($total_results / $per_page);

        // controlla se la variabile 'page' è impostata nell'URL (es: view-paginated.php?page=1)
        if (isset($_GET['page']) && is_numeric($_GET['page']))
        {
                $show_page = $_GET['page'];

                // mi assicuro che il valore di $show_page sia valido
                if ($show_page > 0 && $show_page <= $total_pages)
                {
                        $start = ($show_page -1) * $per_page;
                        $end = $start + $per_page;
                 }
                else
                {
                        // errore - mostra il primo set di risultati
                        $start = 0;
                        $end = $per_page;
                }
        }
        else
        {
                // se la pagina non è impostata, mostra il primo set di risultati
                $start = 0;
                $end = $per_page;
        }

        // visualizza impaginazione
        //echo "<p><h4><a class='nounderline' href='TestamentiCaricatiAll.php'>Visualizza Tutti</a> | <b>Visualizza impaginato:</b> ";
       
        for ($i = 1; $i <= $total_pages; $i++)
        {
                //echo "<a href='viewpaginated.php?page=$i'>$i</a> ";
        }
        echo "</p>";
              
        // visualizza i dati in tabella
        echo "<table border='1' cellpadding='5'>";
        echo "<tr> <th>Codice</th> <th>Prodotto</th> <th>Posizione</th> <th>Peso</th> <th>Tendenziale</th> <th>Congiunturale</th> <th>Peso X congiunturale</th></tr>";

        // loop tra i risultati della query del database, visualizzandoli in tabella
        for ($i = $start; $i < $end; $i++)
        {
                // mi assicuro che PHP non cerchi di mostrare risultati che non esistono
                if ($i == $total_results) { break; }

                // emissione del contenuto di ogni riga in una tabella
                echo "<tr>";
                echo '<td>' . mysql_result($result, $i, 'id') . '</td>';
                echo '<td>' . mysql_result($result, $i, 'prodotto') . '</td>';
                echo '<td>' . mysql_result($result, $i, 'posizione') . '</td>';
                echo '<td>' . mysql_result($result, $i, 'peso') . '</td>';
                echo '<td>' . mysql_result($result, $i, 'tendenziale') . '</td>';
                echo '<td>' . mysql_result($result, $i, 'congiunturale') . '</td>';
                echo '<td>' . mysql_result($result, $i, 'peso_X_congiunturale') . '</td>';
                echo "</tr>";

        }
        // chiude la tabella>
        echo "</table>";
ho voluto dare un pò di colore al risultato, infatti adesso ho:
valori positivi: righe colore verde
valori negativi: righe colore rosso
valore pari a zero: righe colore blu
ed ho modificato la query così (la parte di codice mancante la ometto perchè è identica):
PHP:
 // mi assicuro che PHP non cerchi di mostrare risultati che non esistono
                if ($i == $total_results) { break; }

while ($riga = mysql_fetch_array($result)) {
        
    if($riga['peso_X_congiunturale'] < 0){
    echo "<td>$id</td>";
    echo "<td>$prodotto</td>";
       echo "<td>$posizione</td>";
    echo "<td>$peso</td>";
    echo "<td>$tendenziale</td>";
    echo "<td>$congiunturale</td>";
       echo "<td>$peso_X_congiunturale</td>";
        $colore="#ff0000";
    
 } elseif($riga['peso_X_congiunturale'] > 0){
        $colore="green";
    echo "<td>$id</td>";
    echo "<td>$prodotto</td>";
       echo "<td>$posizione</td>";
    echo "<td>$peso</td>";
    echo "<td>$tendenziale</td>";
    echo "<td>$congiunturale</td>";
       echo "<td>$peso_X_congiunturale</td>";
        $colore="green";
 
 } elseif($riga['peso_X_congiunturale'] == 0){
    echo "<td>$id</td>";
    echo "<td>$prodotto</td>";
       echo "<td>$posizione</td>";
    echo "<td>$peso</td>";
    echo "<td>$tendenziale</td>";
    echo "<td>$congiunturale</td>";
       echo "<td>$peso_X_congiunturale</td>";
        $colore="blue";
 }

    
echo "<tr style=\"color:$colore; \">";
    $id=$riga['id'];
    $prodotto=$riga['prodotto'];
    $posizione=$riga['posizione'];
    $peso=$riga['peso'];
    $tendenziale=$riga['tendenziale'];
    $congiunturale=$riga['congiunturale'];
    $peso_X_congiunturale=$riga['peso_X_congiunturale'];
 }
   echo "</table>";
La query modificata mi conta correttamente i record che sono nel db, ma me ne fa vedere a video uno in meno cioè manca l'ultimo ed il primo rigo a video è vuoto...
Qualcuno sa dirmi dov'è l'errore?
Grazie
Max61
 

marino51

Utente Attivo
28 Feb 2013
2.912
162
63
Lombardia
forse ti basta inserire il colore nello script originale, che funzionava ….
PHP:
        for ($i = $start; $i < $end; $i++)
        {
                // mi assicuro che PHP non cerchi di mostrare risultati che non esistono
                if ($i == $total_results) { break; }

                // colora la riga
                $p = mysql_result($result, $i, 'peso_X_congiunturale');

                if ($p < 0) { $colore = "red";   } else
                if ($p > 0) { $colore = "green"; } else
                            { $colore = "blue";  }

                // emissione del contenuto di ogni riga in una tabella
                echo "<tr style='color:" . $colore . ";'>";
                echo '<td>' . mysql_result($result, $i, 'id') . '</td>';
                echo '<td>' . mysql_result($result, $i, 'prodotto') . '</td>';
                echo '<td>' . mysql_result($result, $i, 'posizione') . '</td>';
                echo '<td>' . mysql_result($result, $i, 'peso') . '</td>';
                echo '<td>' . mysql_result($result, $i, 'tendenziale') . '</td>';
                echo '<td>' . mysql_result($result, $i, 'congiunturale') . '</td>';
                echo '<td>' . $p . '</td>';
                echo "</tr>";
        }
 
  • Like
Reactions: Max61