[PHP] Problema con query select

Discussione in 'PHP' iniziata da Max61, 6 Giugno 2019.

  1. Max61

    Max61 Utente Attivo

    Registrato:
    2 Marzo 2014
    Messaggi:
    616
    Mi Piace Ricevuti:
    3
    Punteggio:
    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 && $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
     
  2. marino51

    marino51 Utente Attivo

    Registrato:
    28 Febbraio 2013
    Messaggi:
    2.573
    Mi Piace Ricevuti:
    128
    Punteggio:
    63
    Occupazione:
    free lance
    Località:
    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>";
            }
     
    A Max61 piace questo elemento.
  3. Max61

    Max61 Utente Attivo

    Registrato:
    2 Marzo 2014
    Messaggi:
    616
    Mi Piace Ricevuti:
    3
    Punteggio:
    18
    FUNZIONA!!!
    GRAZIE MILLE
     
Sto caricando...

Condividi questa Pagina