• User

    Sommare articoli

    Ciao A tutti,
    come posso eseguire una query dove va a sommarmi le quantità articolo per articolo, in poche parole le quantità presenti in magazzino.
    Grazie


  • Moderatore

    Vuoi eseguire una query dove? potresti almeno dirci il nome della tabella o dei campi, comunque ti faccio un esempio di query mysqli ad oggetti per il conteggio dei prodotti su una tabella fittizia.

    [PHP]
    $query = $mysqli->query("SELECT quantita from prodotti");

    $quantita = 0;

    while($row = $query->fetch_row()){

    $quantita = $quantita + $row[0];

    }

    echo $quantita;
    [/PHP]

    Questo nel caso in cui tu abbia una tabella di nome prodotti con un campo quantita che specifica la quantità presente per quell'articolo, facendo in questo modo vai sommando tramite un ciclo tutte le quantita presenti per tutti gli articoli registrati nel DB.
    Questa è la logica dello script che dovrai fare, il metodo devi vederlo tu.


  • User

    Si scusa è vero....
    Io ho una tabella che si chiama articoli,
    dentro ho le seguenti voci
    Codice
    quantita
    articolo
    A questo punto viene cosi?

    $query = $mysqli->query("SELECT quantita from articoli");

    $quantita = 0;

    while($row = $query->fetch_row()){

    $quantita = $quantita + $row[0];

    }

    echo $quantita;


    Pero da errore;

    Parse error: syntax error, unexpected '$query' (T_VARIABLE) riga 20
    La riga 20 è
    $query = $mysqli->query("SELECT quantita from articolo");


  • Moderatore

    Il mio non era un esempio di codice applicabile al tuo in quanto al 99% utilizzi una stringa o un metodo di connessione diverso da quello che ti ho portato come esempio.

    Ti metto il codice completo per far funzionare il mio, compreso di connessione al DB.

    [PHP]
    <?php

    // connessione a MySQL con l'estensione MySQLi
    $mysqli = new mysqli("localhost", "username", "password", "miodb");

    // verifica dell'avvenuta connessione
    if (mysqli_connect_errno()) {
    // notifica in caso di errore
    echo "Errore in connessione al DBMS: ".mysqli_connect_error(); // interruzione delle esecuzioni i caso di errore
    exit();
    }

    $query = $mysqli->query("SELECT quantita from prodotti");

    $quantita = 0;

    while($row = $query->fetch_row()){

    $quantita = $quantita + $row[0];

    }

    echo $quantita;

    ?>
    [/PHP]

    Adesso sostituisci i parametri con i tuoi e ti dovrebbe andare.


  • User

    Ok, funziona!
    Ma mi somma tutti gli articoli assieme,
    io vorrei che mi sommi articolo per articolo

    cioè se io ho inserito 20 volte l'articolo computer deve ritornarmi una riga sola con

    nr. 20 computer


  • Moderatore

    Certo che funziona 😉

    Allora puoi fare in questa maniera:

    [PHP]
    <?php

    // connessione a MySQL con l'estensione MySQLi
    $mysqli = new mysqli("localhost", "username", "password", "miodb");

    // verifica dell'avvenuta connessione
    if (mysqli_connect_errno()) {
    // notifica in caso di errore
    echo "Errore in connessione al DBMS: ".mysqli_connect_error(); // interruzione delle esecuzioni i caso di errore
    exit();
    }

    $query = $mysqli->query("SELECT articolo,quantita from articoli");

    while($row = $query->fetch_row()){

    echo 'Sono presenti n. '.$row[1].' per l'articolo: <b>'.$row[0].'</b></br>';

    }

    ?>

    [/PHP]

    Enjoy :yuppi:


  • User

    Funziona cosi;

    Sono presenti n. 1 per articolo: Computer
    Sono presenti n. 1 per articolo: Computer
    Sono presenti n. 100 per articolo: Canalina bianca Bocc
    Sono presenti n. 100 per articolo: Canalina bianca Bocc
    Sono presenti n. 100 per articolo: **canalina

    Io però vorrei che il risultato fosse:

    **Sono presenti n. 2 per articolo: Computer

    Sono presenti n. 200 per articolo: Canalina bianca Bocc

    Sono presenti n. 100 per articolo: canalina

    è possibile?


  • Moderatore

  • User

    OK, ho fatto cosi;


    <?php

    // Richiamiamo il file delle connessioni
    require_once('Connessioni/mysqlconn.php');

    // seleziono il database
    mysql_select_db($database, $corso);
    
    // impostiamo una variabile per il successo
    $bSuccesso = true;
    

    // Make a MySQL Connection

    $query = "SELECT codice, SUM(quantita) FROM articolo GROUP BY codice";

    $result = mysql_query($query) or die(mysql_error());

    // Print out result
    while($row = mysql_fetch_array($result)){

      echo "Total ". $row['codice'].  " = Nr.". $row['SUM(quantita)'];
      
    echo "<br />";
    

    }

    ?>


    E funziona mi restituisce:

    Total bbret = Nr.2
    Total LEX40X5451 = Nr.0
    Total OS0330 = Nr.0
    Total reca011 = Nr.200
    Total Reca023 = Nr.100


    Vorrei aggiungere anche articolo e prezzo, ma non ci riesco.
    Mi potete aiutare.
    Grazie


  • Moderatore

    SELECT codice, SUM(quantita) FROM articolo GROUP BY codice

    diventa qualcosa tipo:

    SELECT codice, SUM(quantita), articolo.nome, prezzo FROM articolo GROUP BY codice

    Inoltre ti consiglierei di usare l'AS per il SUM. In pratica scrivendo nella query SUM(quantita) AS somma.
    In questo modo in PHP puoi leggerlo con $row['somma']

    Fammi sapere come va.


  • User

    Ok ,
    ma sulla parte print come faccio;


    // Print out result
    while($row = mysql_fetch_array($result)){

      echo "Total ". $row['codice'].  " = Nr.". $row['SUM(quantita)'];
      
    echo "<br />";
    


  • Moderatore

    echo "Total ". $row['codice']. " = Nr.". $row['somma'];


  • User

    Perdonami ma sono agli inizi....
    Ho fatto cosi,


    <?php

    // Richiamiamo il file delle connessioni
    require_once('Connessioni/mysqlconn.php');

    // seleziono il database
    mysql_select_db($database, $corso);
    
    // impostiamo una variabile per il successo
    $bSuccesso = true;
    

    // Make a MySQL Connection

    $query = "SELECT codice, SUM(quantita), articolo, prezzo FROM articolo GROUP BY codice";

    $result = mysql_query($query) or die(mysql_error());

    // Print out result
    while($row = mysql_fetch_array($result)){

        echo "Total ". $row['codice']. " = Nr.". $row['somma']; 
    
    
      
    echo "<br />";
    

    }

    ?>


    Ma da errore;

    Notice: Undefined index: somma in D:\XAMPP\htdocs\Magazzini\InventarioArticoli.php on line 27
    Total Reca023 = Nr.

    La line 27 è :

    echo "Total ". $row['codice']. " = Nr.". $row['somma'];


  • User

    Ho fatto cosi e funziona.....

    echo "Total ". $row['codice']. " = Nr.". $row['SUM(quantita)'];
    echo "Total ". $row['prezzo']. " = Nr.". $row['articolo'];


  • Moderatore

    Devi modificare anche la query usando l'AS:

    $query = "SELECT codice, SUM(quantita) AS somma, articolo, prezzo FROM articolo GROUP BY codice";


  • User

    ok, fatto.
    Gia che ci siamo, se volessi inserire i risultati in celle tipo excel cosi è più bellino.
    Potresti indicarmi come fare.
    Grazie30000


  • Moderatore

    "tipo excel" che intendi?
    Graficamente simile a excel ma pur sempre una pagina web o vorresti fare proprio un'esportazione in excel?


  • User

    Graficamente simile a excel ma pur sempre una pagina web.


  • Moderatore

    Allora ti serve studiare i css ed imparare a modificarli per avere la resa grafica che vuoi ottenere.
    Non so se esiste qualcosa di già pronto. Prova a cercare.


  • User Attivo

    Ciao
    qua trovi alcuni stili css per tabelle, prova a guardare se qualcuno fa al caso tuo

    https://www.freshdesignweb.com/free-css-tables/