[RISOLTO]PHP assegnare nome variabile a valori tabella mysql

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
abranca
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 306
Iscrizione: mercoledì 23 gennaio 2013, 11:48
Desktop: Gnome
Distribuzione: Ubuntu GNOME 15.04
Sesso: Maschile

[RISOLTO]PHP assegnare nome variabile a valori tabella mysql

Messaggio da abranca »

ciao ragazzi,

continuo a proporre problematiche che incontro.
ho una tabella chiamata "tasse" cosi composta:
id | nome | valore
1 rivalsa 4
2 marcabollo 2
3 iva 22

ho una form dove posso aggiungere i valori che voglio.
ora, tramite un'altro form inserisco delle voci di una fattura (descrizione, unitamisura, quantita, prezzo) e una select multipla che contiene i valori recuperati dalla tabella tasse e tramite foreach riesco a visualizzare i valori delle voci selezionate.

ora viene il problema vero e proprio.
nel mio caso particolare ho una partita iva a regime dei mini (quindi esente da iva, ecc.) e devo applicare al totale della fattura il 4% + 2 euro di marca da bollo quindi seleziono dalla tabella tasse i primi due campi, ma se vado a sommare al totale dei prezzi entrambi i valori selezionati non ritrovo il valore corretto.

avevo pensato di fare una cosa inversa. estrarre dalla select i campi che mi interessano e assegnargli una variabile per poter fare i conteggi.
quindi se seleziono i campi rivalsa e marcabollo vorrei riuscire ad ottenere una cosa del genere:
$var1 = 4 (valore della prima voce selezionata)
$var2 = 2 (valore della seconda voce selezionata)
ecc.

in modo tale da potermi permettere di fare calcoli e somme corrette.
nel mio caso specifico il totale vorrei riuscire ad ottenere questa formula finale.
$somma (somma dei prezzi inseriti in fattura)+$rivalsa (che sara il risultato di $somma*$var1/100)+$var2

spero in un vostro aiuto come sempre.
Grazie a tutti!
Ultima modifica di abranca il martedì 19 agosto 2014, 14:06, modificato 1 volta in totale.
bennes
Prode Principiante
Messaggi: 190
Iscrizione: lunedì 14 luglio 2014, 0:50
Desktop: KDE
Distribuzione: Linux Kubuntu 15.04 x86_64

Re: [PHP] assegnare nome variabile a valori tabella mysql

Messaggio da bennes »

Con quale codice fai la query select al db?
Se fossi in te io farei cosi'

Codice: Seleziona tutto

$result = mysql_query($con,"SELECT valore FROM tasse WHERE id=3");
$row = mysql_fetch_assoc($result);
echo row["valore"]; // Contiene '22'
Usate Google prima del forum ^^
abranca
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 306
Iscrizione: mercoledì 23 gennaio 2013, 11:48
Desktop: Gnome
Distribuzione: Ubuntu GNOME 15.04
Sesso: Maschile

Re: [PHP] assegnare nome variabile a valori tabella mysql

Messaggio da abranca »

Ciao bennes e grazie per la risposta!
allora, ho come dicevo hio un campo select multiplo da cui estraggo i nomitassa e valori con questo codice:

Codice: Seleziona tutto

 <?php
                            $tasse = mysql_query("SELECT * FROM tasse");
                            echo "<select multiple name=\"tassa[]\">";
                            while ($row = mysql_fetch_array($tasse)) {
                                echo "<option value=\"" . $row['id'] . "\">" . $row['tassa'] . "</option>";
                            }
                            echo "</select>";
                        ?>
ti faccio notare che il nome del campo l'ho messo come array "tassa[]", perchè posso selezionare più di una voce.
Poi utilizzo questo foreach per la verifica, e noto che riesco a recuperare gli id del tipo di tassa che mi serve.

Codice: Seleziona tutto

foreach($_POST['tassa'] as $id => $valuetassa){
         echo "tassa[$id] = $valuetassa<br />";
     }
e ottengo come risultato

Codice: Seleziona tutto

tassa[0] = 1 (per me questo id corrisponde al valore rivalsa inps che dovrò utilizzare per un calcolo. al totale dovrò sommare questo 4 che è un 4%)
tassa[1] = 2 (per me questo id corrisponde al valore di una marca da bollo ch edovrò sommare al totale + il 4%)
il mi scopo era fare una sola tabella che conteneva tutti i tipi di tasse, sia percentuali che non, ma ragionandoci su credo sarebbe meglio fare una tabella A nel database che contiene solo le tasse che hanno un valore percentuale (qualunque siano rivalsa inps, iva) e una tabella B che abbia altri tipi di tassa senza percentuale (tipo marche da bollo o altro) che ne dite???
forse mi semplifico la vita in quanto so che la tabbella A contiene solo valori percentuali e la tabella B solo valori interi e mi semplifico anche i calcoli.
volevo, però, nel form avere una sola select con tutte le tasse, sia di tabella A che di B e posso ottenerle con una query del tipo

Codice: Seleziona tutto

SELECT * FROM A UNION SELECT * FROM B
ma avrei casini con gli id successivamente.....
forse sto incasinando una cosa che potrebbe essere più semplice del previsto?


P.S. vorrei specificare che al momento, per il genere di partita iva che utilizzo, non mi servirebbe calcolare valori di iva ma solo questa percentuale del 4% in quanto faccio parte di partita iva agevolata e le fatture che emetto sono esenti da iva. ma se un domani dovessi rientrare in un regime normale, quindi dovrei applicare iva , non voglio fare modifiche particolari. aggiungo alla mia tabella il valore di iva e vorrei che i calcoli venissero eseguiti in autonomia, passando solo una variabile.
abranca
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 306
Iscrizione: mercoledì 23 gennaio 2013, 11:48
Desktop: Gnome
Distribuzione: Ubuntu GNOME 15.04
Sesso: Maschile

Re: [PHP] assegnare nome variabile a valori tabella mysql

Messaggio da abranca »

Allora ho risolto in questa maniera.
Ho creato due tabelle in più nel database.
Una denominata tassa che contiene
id | nome | valore

e una denominata marcabollo che contiene
id | nome | valore

Al termine della fattura, prima di salvarla nel database ho aggiunto due campi select che contengono l'elenco dei valori.

per il totale fattura ho aggiunto questo codice:

Codice: Seleziona tutto

// recupero valori dalle due select
$sommavocifatt = array_sum($pz_array);
$tassa = $_POST['tassa'];
$marcabollo = $_POST['marca'];

$totale = $sommavocifatt + $sommavocifatt*$tassa/100 + $marcabollo;
ovviamente nella query mysql salvo, oltre agli altri valori che mi servono, il valore totale.
Evito problematiche di id duplicati (riportato come dubbio nel post precedente) e, se un domani aggiungerò qualunque valore nella tabella tassa (es. variazione percentuale della ritenuta inps o nuovo tipo di iva o variazione della percentuale dell'iva) non avrò più problemi nel fare il conteggio totale.
mi scuso se ho aperto un post magari inutile, ma lavorandoci e ripensando ai passaggi ho trovato una soluzione.

ovviamente se qualcuno ha idee migliori sono ben accette!
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 12 ospiti