[PHP] Sommare campi e aggiornare tabella

ltatas

Nuovo Utente
17 Apr 2009
38
0
6
Salve sto provando a fare questo ma ho qualche problemino.
Ho una tabella dove vengono indicati diversi parametri e devo sommare alcuni e poi aggiornare una seconda tabella
Quando eseguo

$row01=mysql_fetch_assoc(mysql_query("SELECT SUM(durata) FROM table WHERE origine='roma'"));

Se provo la singola select su SQL funziona ho il valore esatto ma se provo su una pagina PHP ottengo

ARRAY
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
ciao
prova a correggere così
PHP:
$row01=mysql_fetch_assoc(mysql_query("SELECT SUM(durata) as somma FROM table WHERE origine='roma'"));
echo $row01['somma'];
un consiglio: abbandona le vecchie istruzioni php mysql_... (deprecate) e passa alle nuove mysqli_...
 

ltatas

Nuovo Utente
17 Apr 2009
38
0
6
Si ora va.
E se volessi aggiornare una seconda tabella dello stesso DB con il risultato?
Grazie
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
ciao
PHP:
//....
$row01=mysql_fetch_assoc(mysql_query("SELECT SUM(durata) as somma FROM table WHERE origine='roma'"));
$somma= $row01['somma'];

$query_stringa="UPDATE altra_tabella SET somma=$somma WHERE qui_lo_sai_tu='ma?'";
//ecc...
 

ltatas

Nuovo Utente
17 Apr 2009
38
0
6
Mi risponde ARRAY

$row01=mysql_fetch_assoc(mysql_query("SELECT SUM(durata) as somma01 FROM cdr WHERE origine='roma'"));
echo $row01['somma01'];

$min_roma="UPDATE orari_minuti SET min_tot=$row01 WHERE origine='roma'";
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
ciao
strano che ti risponda array, comunque fai questa prova
PHP:
$row01=mysql_fetch_assoc(mysql_query("SELECT SUM(durata) as somma FROM table WHERE origine='roma'"));
echo "<pre>";//serve solo per visualizzare meglio l'output
var_dump($row01);
var_dump($row01['somma']);
echo "</pre>"
e posta quanto ti riportano i due var_dump
 

ltatas

Nuovo Utente
17 Apr 2009
38
0
6
Dimenticavo di dirti che è una macchina , e che usa PHP 5 solo per generare report banali e/o comandi di controllo.
Ho fatto come mi hai detto tu ma la risposta è

E visualizzo

array(1) {
["somma01"]=>
string(5) "15594"
}
string(5) "15594"

Ho corretto il post xk ho copiato il tuo script e nel tuo manca il ; alla fine del secondo echo
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
ciao
da quello che ho capito vuoi ottenere il totale di 'durata' nella tabella cdr e con quanto hai ottenuto uppare il campo min_tot della tabella orari_minuti, giusto?
intanto una cosa in tabella orari_minuti come hai settato il campo min_tot?
se a intero (int)
PHP:
$row01=mysql_fetch_assoc(mysql_query("SELECT SUM(durata) as somma01 FROM cdr WHERE origine='roma'"));
$durata= (int)$row01['somma01'];
$min_roma=mysql_query("UPDATE orari_minuti SET min_tot=$durata WHERE origine='roma'");
se invece l'hai settato come stringa (varchar)
PHP:
$row01=mysql_fetch_assoc(mysql_query("SELECT SUM(durata) as somma01 FROM cdr WHERE origine='roma'"));
$durata= $row01['somma01'];
$min_roma=mysql_query("UPDATE orari_minuti SET min_tot='$durata' WHERE origine='roma'"); //$durata tra gli apici

p.s.
non puoi usare direttamente $row01 in quanto è un array, ma l'elemento dell'array $row01['somma01']
come giustamente ti riportano i var_dump
 

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
se non devi utilizzare il risultato di somma intermedio, puoi gestire con una sola query,
PHP:
"
UPDATE orari_minuti
SET min_tot=(SELECT SUM(durata) FROM cdr WHERE cdr.origine=orari_minuti.origine)
WHERE origine='roma'
"
in questo modo puoi aggiornare più "origini" in una sola volta, casomai servisse
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
ciao @marino
giusto, ma un piccolo dubbio (non sulla tua query, ma in generale) se nella tabella che deve essere uppata (min_tot) il record con origine='roma' non esistesse cosa succede?
non si potrebbe implementare la query con INSERT.. ON DUPLICATE KEY ... UPDATE ?
 

ltatas

Nuovo Utente
17 Apr 2009
38
0
6
Ciao allora aggiorno, in questo periodo sono molto incasinato e mi scuso per il ritardo per la risposta e il ringrazioamento.
Funziona, riesco ad aggiornare la tabella e fare quello che voglio.
Ultimo quesito, se volessi fare anche un array dove specifico tutte le destinazioni
$array = roma,milano,napoli,firenze,ecc ecc ecc
Come posso modificare in modo che che conteggi automaticamente tutto?
Grazie
 

ltatas

Nuovo Utente
17 Apr 2009
38
0
6
Ciao no solo un elenco con tutte le destinazioni, mi serve per evitare di fare un copia e incolla con tutte le destinazioni ed inserire una variabile ogni destinazione.
Spero di essere stato chiaro
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
ciao
prova qualcosa del genere, sempre se ho capito bene quello che vuoi fare
PHP:
//.........
//ti ricavi le origini che hai registrate nella tabella
$origini=array();
$query="SELECT origine as citta FROM cdr GROUP BY origine";
$ris=mysql_query($query);
while($riga=mysql_fetch_assoc($ris)){
    $origini[]=$riga['citta'];//$origini[0]=>'roma', $origini[1]=>'milano' ecc....
}

foreach($origini as $citta){//cicli l'array che hai creato
    //query per la somma
    $q_s="SELECT SUM(durata) as somma01, origine as citta FROM cdr WHERE origine='$citta'";
    $ris_s=mysql_query($q_s);
    $row01=mysql_fetch_assoc($ris_s);
    $durata= $row01['somma01'];
    //query per uppare
    $q_u="UPDATE orari_minuti SET min_tot=$durata WHERE origine='$citta'";
    $ris_u=mysql_query($q_u);
    //eventuale verifica
    if($ris_u){
        echo "la durata della citt&agrave; di $citta &egrave; stata aggiornata<br>";
    }else{
        echo "errore nell'aggiornamento della citt&agrave; di $citta<br>";
    }
}
//......
dimenticavo:
per uppare puoi mettere la query che ti ha suggerito marino dentro il foreach, sostituento a 'roma' $citta
 
Discussioni simili
Autore Titolo Forum Risposte Data
M [PHP] Sommare due campi calcolati PHP 3
A Sommare campi stringa MYSQL PHP PHP 3
maxnegri Sommare i prezzi dei prodotti aggiunti al carrello di diverse aziende con Select sum php mysqli PHP 10
C [PHP] Sommare o sottrarre a ZERO PHP 7
M [PHP] Sommare ore e minuti PHP 22
elpirata [PHP][RISOLTO] Sommare gli importi estratti da un ciclo while PHP 3
ste80 [PHP] sommare le ore PHP 24
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 5
F Scrivere dei dati in word con php PHP 0
D PHP leggere cartella di Windows PHP 1
I dominio aruba versione php server linux Domini 3
G Colorare menu select attraverso ricerca php PHP 0
L PHP motore di ricerca nel sito PHP 1
S PHP e Mysqli PHP 0
Y Stampare da php su un foglio A6 attraverso una stampante esterna PHP 1
M Visulizzare immagine con php PHP 8

Discussioni simili