Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di HammerFist
    Registrato dal
    May 2005
    Messaggi
    1,110

    ciclo e sommatorie in array

    Ciao ragazzi,
    qualcuno mi può dire come mai $sommeparziali[] non và oltre lo 0?

    Codice PHP:

    $c
    =1;
    $d=0;
            
    $somma=0;
            
    $sommeparziali = array();
            do{            
                if(
    $c<=9){
                        
    $tmp $row_mysql['a'] * $row_mysql['b'];
                        
    $somma += $tmp;
                    }
                else{

                        
    $sommeparziali[$d]=$somma;
                        
    $somma=0;
                        
    $d++;
                        
    $c=0;
                    }
                
    $c++;    

            } while(
    $row_mysql=mysql_fetch_array($sql)); 
    Forumista Kriptoniano

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2012
    residenza
    Lima, Perù
    Messaggi
    212
    si $sommeparziali è un array di 0, magari uno tra $row_mysql['a'] e $row_mysql['b'] è uno string... hai controllato? perché se $c non andasse mai oltre il 9, $c sarebbe empty
    Jamie Ynonan - Web Developer / Desarrollador Web - HTML5 - CSS3 - Javascript/jQuery - PHP/CodeIgniter/Laravel - SQL/MySQL - Wordpress
    Telelavoro / Teleworking - jamiea31[at]gmail.com - Lima - Perù - GMT -5

  3. #3
    Se per, "oltre lo 0", ti riferisci all'indice dell'array allora significa che la query restituisce meno di 19 risultati.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  4. #4
    Utente di HTML.it L'avatar di HammerFist
    Registrato dal
    May 2005
    Messaggi
    1,110
    Quote Originariamente inviata da satifal Visualizza il messaggio
    Se per, "oltre lo 0", ti riferisci all'indice dell'array allora significa che la query restituisce meno di 19 risultati.
    Codice PHP:

            $c
    =0;
            
    $d=0;
            
    $somma=0;
            
    $sommeparziali = array();
            
            do    {            
                                    if(
    $num_rows>&& $c<10){    
                        
                                                
    $c++;    
                    
                                            if(
    $c<9){
                                                
    $tmp $row_mysql['a'] * $row_mysql['b'];
                                                
    $somma += $tmp;                     
                                                }
                                            else{
                                                
    $sommeparziali[$d]=$somma;
                                                
    $somma=0;
                                                
    $d++;
                                                
    $c=1;
                                                
    $num_rows-=9;
                                                }
                                        
                                        }
                                    else{

                                            if(
    $c<$num_rows){
                                                
    $tmp $row_mysql['a'] * $row_mysql['b'];
                                                
    $somma += $tmp;
                                                }
                                            else{
                                                
    $sommeparziali[$d]=$somma;
                                                }    
                                        
    $c++;
                                        }
                } while(
    $row_mysql=mysql_fetch_array($sql)); 
    apportando queste modifice adesso crea correttamente l'array
    ho ancora un problema pero

    in ogni somma contenuta nell'array manca l'ultimo valore da sommare... sbaglio ciclo?
    Forumista Kriptoniano

  5. #5
    Utente di HTML.it L'avatar di HammerFist
    Registrato dal
    May 2005
    Messaggi
    1,110
    ... è il primo valore contenuto nella query a non essere sommato...
    Forumista Kriptoniano

  6. #6
    Il do...while a differenza del while tradizionale esegue il codice prima di verificare la condizione ciò fa sì che alla prima iterazione $row_mysql risulta non valorizzato.
    Se spieghi a parole ciò che vuoi ottenere magari si riesce ad ottimizzare tutto quel codice che hai scritto.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    Utente di HTML.it L'avatar di HammerFist
    Registrato dal
    May 2005
    Messaggi
    1,110
    Quote Originariamente inviata da satifal Visualizza il messaggio
    Il do...while a differenza del while tradizionale esegue il codice prima di verificare la condizione ciò fa sì che alla prima iterazione $row_mysql risulta non valorizzato.
    Se spieghi a parole ciò che vuoi ottenere magari si riesce ad ottimizzare tutto quel codice che hai scritto.
    ok grazie, in poche parole
    faccio una query ed estraggo due numeri per riga, quantita e costo
    dopo di che calcolo il totale di 9 righe e il risultato lo carico in un array...

    quindi nell'array avrò per esempio
    array[0] = totale delle prime 9 righe
    array[1] = il totale delle successive 9 righe
    array[2] = il totale delle eventuali righe rimaste

    attualmente funziona tutto tranne che la prima riga non viene sommata
    quindi i vari totali sono inesatti per un calcolo in meno...
    non so se ho spiegato bene il problema
    Forumista Kriptoniano

  8. #8
    Codice PHP:
    $somme = array();
    $index = -1;
    while(
    $row_mysql mysql_fetch_array($sql)) {
        if (
    $riga++ % == 0) {
            
    $index++;
        }
        
    $somme[$index] += $row_mysql['a'] * $row_mysql['b']; // Puoi effettuare la somma dei due campi direttamente in SQL utilizzando la funzione SUM()
    }
    print_r($somme); 
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  9. #9
    Utente di HTML.it L'avatar di HammerFist
    Registrato dal
    May 2005
    Messaggi
    1,110
    Quote Originariamente inviata da satifal Visualizza il messaggio
    Codice PHP:
    $somme = array();
    $index = -1;
    while(
    $row_mysql mysql_fetch_array($sql)) {
        if (
    $riga++ % == 0) {
            
    $index++;
        }
        
    $somme[$index] += $row_mysql['a'] * $row_mysql['b']; // Puoi effettuare la somma dei due campi direttamente in SQL utilizzando la funzione SUM()
    }
    print_r($somme); 
    grazie funziona
    ho sempre però il problema che il primo risultato della query non viene calcolato... non capisco il perchè...
    Select * from prezzi WHERE id = '10' ORDER BY id
    questa è la query ed effettivamente estrae 12 righe
    però in fase di esecuzione dello script
    la prima di queste 12 righe non viene conteggiata...
    Forumista Kriptoniano

  10. #10
    Impossibile, ho testato lo script per cui il problema dovrebbe essere nella query. Prova ad eseguirla a mano con phpMyAdmin o simili e vedi cosa ti restituisce.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

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.