Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    855

    array problema difficile

    Salve, ho la seguente situazione che non riesco a risolvere...

    Ho la classica tabella ordini/clienti con i record degli ordini che fanno riferimento anche allo stesso cliente.

    Dunque, tralasciando il contenuto di una funzione chiamata "calcola" che esegue dei calcoli...supponiamo che prende i primi tre ordini per ogni cliente.

    Ho la seguente situazione:


    --- select tutti gli ordini che mi interessano discriminando per cliente (anche se poi nell'array successivo li mette tutti di seguito...)
    --- dichiaro la funzione "calcola" (qui perchè deve prendere dei dati dalla select...)
    --- metto tutti gli ordini in un array (devo necessariamente fare questo)

    --- ciclo l'array e applico la funzione

    Ora il problema è che l'array totale contiene tutti gli ordini che mi interessano di tutti i clienti mentre mi servono degli array per cliente e stampare i risultati calcolati per cliente...

    Mi viene in mente di creare un ciclo for per cliente dove creare di volta in volta un array "dinamico" o meglio con il nome dinamico e poi eseguire la funzione alla fine su ogni array (che però non conosco a priori). Si può fare questo? Se sì come è la sintassi per chiamare l'array, del tipo: $array$i, per esempio, così lo lego al contatore for?

    In sostanza ora ho, per esempio:

    TABELLA
    Pippo Frullatore
    Pluto Lavatrice
    Paperino Lavastoviglie
    Pippo Frigorifero
    Pluto Griglia

    L'array (dopo aver discriminato quelli che mi servono, mi da, per esempio tutte le righe come la tabella e mettendo la funzione conta totale ho il totale di tutto).

    Invece io devo stampare, per esempio:

    Pippo Totale 1000 euro
    Paperino Totale 900 euro
    Pluto Totale 972 euro
    ...
    ...
    ...
    ...

    Non so gestire la creazione di array con nomi diversi e non saprei nemmeno come riprenderli...
    Potrei mettere delle chiavi nell'array se è possibile applicare una funzione a tutti gli elementi dell'array per chiave di volta in volta...

    Voi che dite?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    855

    errata corrige funzione

    Scusate, la funzione calcola trova il totale per cliente...

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Guarda per fare prima mi sono creato una tabella di prova molto semplice, con id, nomecliente, articolo e prezzo.
    codice:
    CREATE TABLE `acquisti` (
      `id` int(10) unsigned NOT NULL auto_increment,
      `nome` varchar(50) NOT NULL,
      `articolo` varchar(50) NOT NULL,
      `prezzo` int(10) NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
    
    -- 
    -- Dump dei dati per la tabella `acquisti`
    -- 
    
    INSERT INTO `acquisti` VALUES (1, 'Andrea', 'Lavastoviglie', 600);
    INSERT INTO `acquisti` VALUES (2, 'Giuseppe', 'Lavatrice', 300);
    INSERT INTO `acquisti` VALUES (3, 'Elisabetta', 'Bicicletta', 200);
    INSERT INTO `acquisti` VALUES (4, 'Angela', 'Forno a Microonde', 300);
    INSERT INTO `acquisti` VALUES (5, 'Andrea', 'Bicicletta', 200);
    INSERT INTO `acquisti` VALUES (6, 'Giuseppe', 'Orologio', 300);
    INSERT INTO `acquisti` VALUES (7, 'Giuseppe', 'Macchina digitale', 230);
    INSERT INTO `acquisti` VALUES (8, 'Andrea', 'Microonde', 300);
    INSERT INTO `acquisti` VALUES (9, 'Giuseppe', 'Bicicletta', 400);
    INSERT INTO `acquisti` VALUES (10, 'Angela', 'TV LCD', 1200);
    Con questa query mi tiro fuori direttamente il tutto

    SELECT nome,SUM(prezzo) AS totale FROM acquisti GROUP BY nome ORDER BY nome ASC

    senza funzione secondaria. Adattala alle tue esigenze (immagino ci saranno delle join su altre tabelle)
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    855

    ok, perfetto però...

    Ok, la query è perfetta e intanto l'ho messa...però dovendo fare anche delle altre cose per ogni cliente ho proprio la necessità di creare pure o un array per cliente oppure di mettere una chiave (id cliente) per ogni elemento dell'array...
    Come si fa a creare array in un ciclo for col nome dinamico (per esempio $array$i VVoVe: ) o ameetere una chiave e soprattutto a richiamarli poi?



    Grazie intanto per la query...

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.