Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Archivio

  1. #1

    Archivio

    Salve a tutti,
    devo fare un archivio... particolare...
    cioè devo visualizzare tutti i record di una tabella TRANNE gli ultimi 10 inseriti....

    dall'alto della mia ignoranza ho fatto 1000 prove ma risultati meno di zero....
    non sto neanche a postarvi il codice.... xchè l'ho ripristinato, cioè l'ho rimesso senza limiti... quindi ora visualizzo tutti i record....

    AIUTATEMI!!!!!!!!!

  2. #2
    ci sono varie soluzioni, te ne butto una al volo

    codice:
    $Result=mysql_query("SELECT * FROM Tabella ORDER BY IDUnivoco");
    $NRec=mysql_num_rows($Result);
    $Visualizzati=0;
    while ($R=mysql_fetch_array($Result) && $Visualizzati<$NRec-10) {
      //visualizza il record $R corrente
      $Visualizzati++;
    }
    l'ordinamento crescente per ID univoco (spero che ci sia un ID univoco nella tua tabella) o eventualmente per data/ora di memorizzazione (un campo timestamp potrebbe andare) ti garantisce che gli ultimi record che verranno messi in $Result sono quelli che vuoi scartare.

    prova,

  3. #3
    allora.... facciamo le cose passo passo senò

    <?php
    mysql_select_db($database_nomeConnessione, $nomeConnessione);
    $query_prop_arc = "SELECT * FROM proposte_legge ORDER BY id DESC";
    $prop_arc = mysql_query($query_prop_arc, $nomeConnessione) or die(mysql_error());
    $row_prop_arc = mysql_fetch_assoc($prop_arc);
    $totalRows_prop_arc = mysql_num_rows($prop_arc);
    ?>

    questo è quello che ho all'inizio del codice....

    poi in una tabella ho messo questo codice xchè lo devo visualizzare su 2 colonne:

    <?php
    $maxcells = 2;
    $i = 0;
    while ($row_prop_arc = mysql_fetch_assoc($prop_arc))
    {
    $i++;
    if ($i == 1)
    {
    echo "<tr class=\"centratura\">";
    }
    ?>
    <td width="2%">[img]IMG/pallino.gif[/img]</td>
    <td width="46%" height="18"><span class="bold"><?php echo $row_prop_arc['data']; ?></span> - <?php echo $row_prop_arc['titolo']; ?></td>
    <td width="2%"></td>
    <?PHP
    if ($i == $maxcells)
    {
    echo "</tr>";
    $i = 0;
    }
    }
    ?>

    il codice che mi hai dato... lo metto in cima al codice prima della chiusura?

  4. #4
    <?php
    mysql_select_db($database_nomeConnessione, $nomeConnessione);
    $query_prop_arc = "SELECT * FROM proposte_legge ORDER BY id ASC ";
    $prop_arc = mysql_query($query_prop_arc, $nomeConnessione) or die(mysql_error());

    $NRec=mysql_num_rows($prop_arc);

    //$row_prop_arc = mysql_fetch_assoc($prop_arc); perchè questa riga di codice? cosi' non esamini il primo record perché rimane fuori dal ciclo
    $totalRows_prop_arc = mysql_num_rows($prop_arc);
    ?>

    questo è quello che ho all'inizio del codice....

    poi in una tabella ho messo questo codice xchè lo devo visualizzare su 2 colonne:

    <?php
    $maxcells = 2;
    $i = 0;
    while ($row_prop_arc = mysql_fetch_assoc($prop_arc) && $i<$NRec-10 )
    {
    $i++;
    if ($i == 1)
    {
    echo "<tr class=\"centratura\">";
    }
    ?>
    <td width="2%">[img]IMG/pallino.gif[/img]</td>
    <td width="46%" height="18"><span class="bold"><?php echo $row_prop_arc['data']; ?></span> - <?php echo $row_prop_arc['titolo']; ?></td>
    <td width="2%"></td>
    <?PHP
    if ($i == $maxcells)
    {
    echo "</tr>";
    $i = 0;
    }
    }
    ?>

    prova cosi'

  5. #5
    ti ringrazio per il codice, ma ho risolto.... cioè mi sono fatta aiutare.... in questo modo:

    <?php
    $archivio = 10;
    mysql_select_db($database_nomeConnessione, $nomeConnessione);
    $query_prop_arc = "SELECT * FROM proposte_legge";
    $prop_arc = mysql_query($query_prop_arc, $nomeConnessione) or die(mysql_error());
    $totale = mysql_num_rows($prop_arc);
    $query2 = "SELECT * FROM `proposte_legge` WHERE `id` <= ($totale - $archivio) ORDER BY id DESC";
    $prop_arc = mysql_query($query2, $nomeConnessione) or die(mysql_error());
    ?>

    Nel body ho lasciato com'era... spero che serva a qualquno e cmq grazie MDM, 6 stato gentilissimo....

  6. #6
    è una soluzione leggeremente più pesante per il DB perché fai 2 letture invece di una ma funziona, che è la cosa + importante.


  7. #7
    Originariamente inviato da claudia_c82
    ti ringrazio per il codice, ma ho risolto.... cioè mi sono fatta aiutare.... in questo modo:

    <?php
    $archivio = 10;
    mysql_select_db($database_nomeConnessione, $nomeConnessione);
    $query_prop_arc = "SELECT * FROM proposte_legge";
    $prop_arc = mysql_query($query_prop_arc, $nomeConnessione) or die(mysql_error());
    $totale = mysql_num_rows($prop_arc);
    $query2 = "SELECT * FROM `proposte_legge` WHERE `id` <= ($totale - $archivio) ORDER BY id DESC";
    $prop_arc = mysql_query($query2, $nomeConnessione) or die(mysql_error());
    ?>

    Nel body ho lasciato com'era... spero che serva a qualquno e cmq grazie MDM, 6 stato gentilissimo....
    per alleggerire fai cosi

    <?php
    $archivio = 10;
    mysql_select_db($database_nomeConnessione, $nomeConnessione);
    $query_prop_arc = "SELECT COUNT(*) FROM proposte_legge";
    $prop_arc = mysql_query($query_prop_arc, $nomeConnessione) or die(mysql_error());
    list($totale) = mysql_fetch_row($prop_arc);
    $query2 = "SELECT * FROM proposte_legge WHERE id <= ($totale - $archivio) ORDER BY id DESC";
    $prop_arc = mysql_query($query2, $nomeConnessione) or die(mysql_error());
    ?>

    cosi fai sempre 2 query ma praticamente la prima ci sta meno di un nano secondo ad eseguirla mentre con mysql_num_rows doveva estrarre le righe una per una e contarle ... un'operazione massacrante ripetuta due volte
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

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.