Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Conteggi ogni box

  1. #1

    Conteggi ogni box

    Buongiorno,
    ho creato un codice che permette di sapere quanti box sono per ogni 5 righe, così funziona ma qualcosa ho sbagliato ovvero:

    Codice PHP:
    $array_spedizione range(136);
    $index_spedizione 1;
    $quantita_prodotti_spedizione $numPacco_2 5;
    $conta_cinque 0;        foreach($array_spedizione as $value_spedizione){            if(!(($index_spedizione++) % 5))    {                $conta_cinque += 1;
            echo 
    "<p>"$value_spedizione ."<p><hr>";
        } else {                echo 
    "<p>"$value_spedizione ."<p>";            }        }
    echo
    "<b>TOTALE OGNI 5 RIGHT =</b> "$conta_cinque
    Così diventa 7 ed è sbagliato, dovrebbe essere 8 anche se all'ultimo c'è una sola riga...
    Cosa ho sbagliato?

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao, non so se hai già risolto ma analizzando il codice mi pare chiaro che il risultato sia esattamente quello.

    Per ottenere il conteggio stai andando ad incrementare la variabile $conta_cinque, ma questo lo fai solo nella condizione in cui si crea una nuova riga. In sostanza la prima serie dei 5 viene saltata dal conteggio.
    codice:
        if(!(($index_spedizione++) % 5))    {
            $conta_cinque += 1;
            echo "<p>". $value_spedizione ."<p><hr>";
    Qui vai ad inserire un <hr> dopo ogni 5 iterazioni, ed infatti alla fine risultano 7 <hr>, esattamente come il tuo conteggio.

    C'è quindi un problema di impostazione del sistema usato. Io eseguirei il calcolo a prescindere dal ciclo, cioè semplicemente dividendo per 5 il numero di elementi dell'array e arrotondando per eccesso:
    Codice PHP:
    $conta_cinque ceil(count($array_spedizione) / 5); 
    Inoltre anche la condizione (if else) può essere migliorata; dal momento che questa parte ("<p>". $value_spedizione ."<p>") dovrà sempre essere stampata, non ha senso metterla dentro l'else; puoi lasciarla fuori e mettere solo <hr> dentro la condizione.

    Ottimizzando un po' di cose:
    Codice PHP:
    $array_spedizione range(136);
    $conta_cinque ceil(count($array_spedizione) / 5);

    foreach(
    $array_spedizione as $index_spedizione => $value_spedizione){
        echo 
    "<p>$value_spedizione<p>";
        if(!((
    $index_spedizione+1) % 5)) echo "<hr>";
    }

    echo 
    "<b>TOTALE OGNI 5 RIGHT =</b> "$conta_cinque
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

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.