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

    algoritmo per categorie a n livelli

    Ciao,
    in un db mysql ho questa struttura

    id_categoria
    id_categoria_superiore
    nome_categoria

    Ovviamente le categorie di primo livello avranno come id_categoria_superiore il valore zero, mentre le altre avranno l'id della categoria.

    una struttura del genere è ad n livelli, può darsi che alla categoria
    "auto"
    ci siano solo due sottocat benzina/diesel
    mentre alla categoria "computer"
    ci siano monitor, con a sua volta la sotto.sotto.cat lcd/display
    oppure mouse con ottici, a sua volta con sfera o laser
    ecc.

    Come potrei eseguire uno script che mi calcoli il totale di tutti i prodotti raggruppato per categorie principali (quindi solo i totali di auto o solo i totali di computer)?

  2. #2
    ricorsivita' ... una lunga storia
    http://forum.html.it/forum/showthrea...hreadid=746201
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  3. #3
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Questo l'ho fatto in 5 minuti, quindi si può scrivere meglio, ma all'incirca avrai:

    Il DB di esempio è questo
    codice:
    -- 
    -- Struttura della tabella `categorie`
    -- 
    
    CREATE TABLE `categorie` (
      `idc` int(11) NOT NULL auto_increment,
      `idcs` int(11) NOT NULL default '0',
      `nome` varchar(255) NOT NULL default '',
      `qta` int(11) NOT NULL default '0',
      PRIMARY KEY  (`idc`)
    ) TYPE=MyISAM AUTO_INCREMENT=9 ;
    
    -- 
    -- Dump dei dati per la tabella `categorie`
    -- 
    
    INSERT INTO `categorie` VALUES (1, 0, 'computer', 0);
    INSERT INTO `categorie` VALUES (2, 1, 'monitor', 0);
    INSERT INTO `categorie` VALUES (3, 2, 'lcd', 5);
    INSERT INTO `categorie` VALUES (4, 2, 'crt', 10);
    INSERT INTO `categorie` VALUES (5, 1, 'mouse', 11);
    INSERT INTO `categorie` VALUES (6, 0, 'auto', 0);
    INSERT INTO `categorie` VALUES (7, 6, 'benzina', 4);
    INSERT INTO `categorie` VALUES (8, 6, 'diesel', 3);
    Il codice della pagina è
    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Documento senza titolo</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <meta name="cache-control" content="no-cache">
    </head>
    
    <body>
    <?php
    
    function calcola($v){ 
      $v2=NULL;
      $query="select * from categorie where idcs='{$v['idc']}'";
      $res=mysql_query($query);
      while($rec=mysql_fetch_array($res)) $v2[]=$rec;
      if(is_null($v2)) 
        return $v['qta'];
      else{
        $tot=0;
        foreach($v2 as $j) $tot=$tot+calcola($j);
        return $tot;
      }
    }
    
    $conn=mysql_connect("localhost:3306","WEBUSER","PASSWORD");
    mysql_select_db("test");
    $query="select * from categorie where idcs=0";
    $res=mysql_query($query);
    $inizio=NULL;
    while($rec=mysql_fetch_array($res)) $inizio[]=$rec;
    foreach($inizio as $v) echo "Totale per {$v['nome']} è ".calcola($v)."
    ";  
    mysql_close($conn);
    
    ?>
    </body>
    </html>

  4. #4
    Originariamente inviato da Grino
    Questo l'ho fatto in 5 minuti
    usi il solito metodo a ricorsivita' in sottoqueries ... ovvero 100 o piu' queries ( a seconda del database ) per ogni utente, ergo sistema a meretrici con un' utenza oltre le 2 persone alla volta



    se leggi il post che ho linkato hai la soluzione simile ( identica ) alla tua ed un' altra soluzione a singola query studiata da me
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

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.