• User

    Semplice domanda su COUNT o mysql_num_rows

    Buonasera a tutti,
    ho una questione da risolvere e spero di essere chiaro sufficientemente chiaro...
    Ho questo codice:

    [PHP]
    <table class="table table-hover">
    <tr>
    <td><b>NOME</b></td>
    <td><b>TOTALE ALV</b></td>
    </tr>
    <?
    $sql = "
    SELECT *
    FROM API
    ORDER BY ID_API ASC
    LIMIT 20";
    $result = mysql_query($sql);
    while($row = mysql_fetch_array($result))
    {
    ?>
    <tr>
    <td><? echo $row['NOME']; ?></td>
    <td>XXX</td>
    </tr>
    <?
    }
    ?>
    </table>
    [/PHP]

    ho una tabella API (richiamata nel codice sopra) e una tabella ALV

    al posto delle XXX del codice sopra vorrei mettere la funzione mysql_num_rows (o alternative possibili) che mi conta quante sono le righe nella tabella ALV (non API) che hanno come ID_API (ovviamente presente anche nella tabella ALV) quello corrispondente alla riga stessa.
    😮
    sapete consigliarmi una soluzione ?
    grazie

    MP


  • User Attivo

    Devi farlo con un'altra query... le risorse che hai in quel codice non sono sufficienti per ottenere quel dato. All'interno del while, prima della stampa

    [php]
    $sql_conteggio = "SELECT COUNT(ID_API) AS conteggio FROM ALV WHERE ID_API = '".$row["ID_API"]."'";
    $query_conteggio = mysql_query($sql);
    $riga_conteggio = mysql_fetch_array($query_conteggio);
    $conteggio = $riga["conteggio"];
    // altre operazioni
    echo "<td>$conteggio</td>";
    ?>
    [/php]

    Non utilizzare MAI mysql_num_rows() SOLO per contare le righe in una tabella, ma usa sempre la funzione count di MySQL. Anche se tu lato PHP richiedi solo il conteggio, il buffer del MySQL ti invia comunque tutti i dati della tabella che gli hai richiesto e se non ti servono realmente rappresentano un passaggio di dati inutile che se effettuato su migliaia di record può seriamente rallentare l'esecuzione dello script, oltre che consumare tanta RAM/CPU inutile.


  • User

    Grazie mille !