Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [PHP] Algoritmo ciclo while e condizione if

    Salve a tutti,

    Avrei bisogno di capire come stampare dei valori a fine ciclo inerenti a quella query.

    In pratica da database prelevo tutti i clienti. Ad ogni cliente corrispondono degli ordini.
    Un cliente può avere uno o più ordini e mediante un if divido i clienti e i loro ordini nel ciclo.

    codice:
    if(mysql_num_rows($post_sql) > 0){ 
    	while($post_obj = $data->estrai($post_sql)){
    		$cliente = stripslashes($post_obj->Cliente);
                    $ordine = stripslashes($post_obj->Ordine);
    
    		if($cliente <> $oldcliente) {
    			echo "Cliente : ".$cliente;
    		} else {
    			echo "";
    		}
    		echo "Ordine: ".$ordine;
    		$oldcliente = $cliente;
            }
    } else {
    	echo "non ci sono valori";
    }
    Alla fine degli ordini, cioè quando il $cliente sarà nuovamente diverso da $oldcliente, prima devo scrivere il totale degli ordini!

    Grazie in anticipo.
    No Blitz No Party!

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    Un modo:

    Codice PHP:
    if(mysql_num_rows($post_sql) > 0){ 
        
    $subtot false;
        while(
    $post_obj $data->estrai($post_sql)){
            
    $cliente stripslashes($post_obj->Cliente);
                    
    $ordine stripslashes($post_obj->Ordine);
            if (
    $cliente <> $oldcliente) {
                if (!(
    $subtot===false) { // non è il primo cliente
                    // QUI STAMPI $subtot per il cliente "precedente"
                    
    echo "Totale : ".$subtot;
                    
    $subtot 0// inizializzo per il successivo;
                
    };
                echo 
    "Cliente : ".$cliente;
            } else {
                echo 
    "";
            };
            echo 
    "Ordine: ".$ordine;
            
    $subtot += ...; // qui devi fare la somma
            
    $oldcliente $cliente;
            };
            echo 
    "Totale : ".$subtot;
    } else {
        echo 
    "non ci sono valori";
    }; 
    In pratica mentre stampi gli ordini fai il totale, che poi stampi al ciclo successivo. L'ultimo deve essere stampato fuori dal ciclo, ovviamente.

    Un'altra soluzione (preferibile) è memorizzare i dati nel ciclo e poi stamparli con un nuovo ciclo:
    Codice PHP:
    $dati = array();
    if(
    mysql_num_rows($post_sql) > 0){
        while(
    $post_obj $data->estrai($post_sql)){
            
    $cliente stripslashes($post_obj->Cliente);
                    
    $ordine stripslashes($post_obj->Ordine);
            if (!isset(
    $dati[$cliente])) $dati[$cliente] = array('ordini' => array(), 'totale' => 0);
            };
            
    $dati[$cliente]['ordini'][]=$ordine;
            
    $dati[$cliente]['totale'] += ...; // aggiorna totale;
            
    };
            foreach (
    $dati as $cliente=>$info) {
                print 
    "Cliente: ".$cliente;
                foreach (
    $info['ordini'] as $ordine) {
                    print 
    "Ordine: ".$ordine;
                };
                print 
    "Totale: ".$info['totale'];
            };
    } else {
        echo 
    "non ci sono valori";
    }; 
    ..da ri-verificare :) e i totali puoi anche calcolarli nel 2o ciclo...

  3. #3
    Perfetto, grazie mille per l'aiuto!
    No Blitz No Party!

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    De nada.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.