- Home
- Categorie
- Coding e Sistemistica
- PHP
- Prendere valori da array multidimensionali ed inserirli nel DB
-
@ldgweb said:
Ciao figurati
Allora ho capito fino al punto di recuperare i valori numerici dal db con explode ma non ho capito sommarli con cosa tra loro??
Sommare i valori del primo piattello, secondo, terzo, etc..., di tutte le serie effettuate.
Mi spiego meglio. Ogni serie contiene, nel campo "piattelli" del DB, la stringa scritta precedentemente. Dovrei sommare tutti i piatteli numero 1, 2, 3, etc... di ogni serie. Questo per fare una statistica, in percentuale, per ogni piattello.Spero sia stato più chiaro.
-
Se devi sommare la serie 1-2-1-2-1-1-1-1-1 ecc..
Dopo aver fatto l'explode avrai un array contenente tutti i piattelli esempio
$piattello[0]
$piattello[1]
$piattello[2]
$piattello[3]a questo punto crei un ciclo for in questo modo
[PHP]
$somma = 0;for(){
$somma = $somma + $piattello*;
}echo $somma; // <-- totale somma tra i vari piattelli
echo count($piattello); // <-- totale serie
[/PHP]
Prova un pò e vediamo se vabbene
-
@ldgweb said:
Se devi sommare la serie 1-2-1-2-1-1-1-1-1 ecc..
Dopo aver fatto l'explode avrai un array contenente tutti i piattelli esempio
$piattello[0]
$piattello[1]
$piattello[2]
$piattello[3]a questo punto crei un ciclo for in questo modo
[PHP]
$somma = 0;for(){
$somma = $somma + $piattello*;
}echo $somma; // <-- totale somma tra i vari piattelli
echo count($piattello); // <-- totale serie
[/PHP]
Prova un pò e vediamo se vabbene
Buon giorno ... innanzitutto.
Se ho ben capito questo esempio mi restituisce la somma dei piattelli della singola serie. A me invece serve sommare il piattello numero uno
(Es.: $serie[0] -> $piattello[0]; $serie[1] -> $piattello[0]; $serie[2] -> $piattello[0]; etc...) e poi di seguito il secondo, terzo, e così via.E' possibile farlo? Se non fosse possibile mi suggeriresti qualcosa?
Grazie ancora per le celeri risposte e la disponibilità.
-
Facciamo cosi scrivimi un risultato tipo dal database cosi come inserito e spiegami in che modo devi effettuare le operazioni ho bisogno di sapere proprio in che modo vengono salvate le informazioni nel database.
Da quello che ho capito la steinga contiene dati:
p-1-0-1-1-1-0 <-- questa è una serie
p sta ad indicare i piattelli
**1 **che corrisponde alla serie
e numeri che seguono sono i vari colpi??
e in un solo record avresti:
p-1-0-1-1-1-0
p-2-0-1-1-1-0
p-3-0-1-1-1-0giusto??
-
@ldgweb said:
Facciamo cosi scrivimi un risultato tipo dal database cosi come inserito e spiegami in che modo devi effettuare le operazioni ho bisogno di sapere proprio in che modo vengono salvate le informazioni nel database.
Da quello che ho capito la steinga contiene dati:
p-1-0-1-1-1-0 <-- questa è una serie
p sta ad indicare i piattelli
**1 **che corrisponde alla serie
e numeri che seguono sono i vari colpi??
e in un solo record avresti:
p-1-0-1-1-1-0
p-2-0-1-1-1-0
p-3-0-1-1-1-0giusto??
NO.
Allora iniziamo da "p-1-1" = nome campo checkbox dove "p-" è statico, "1" rappresenta la prima serie seguito da "1" che rappresenta il primo piattello. Quindi segue "p-1-2", "p-1-3", etc... per la prima serie; "p-2-1", "p-2-2", "p-2-3", etc...., per la seconda serie; etc.....Al DB arrivano i seguenti valori.
id_tiratore = id univoco tiratore
data = 2012-03-07
piattelli = 1-1-1-1-1-0-0-1-0-1-1-1-1-1-0-1-1-1-1-1-1-1-1-1-1
Questi sono i valori di una serie effettuata.
-
Allora tu recuperi le varie serie di un determinato tiratore
[PHP]
$somma = array();
$tot_piattelli = array();while($data = mysql_fetch_assoc($query)){
$data['piattelli']; // <- contiene i valori di una serie
$piattelli[id serie] = explode('-', $data['piattelli']);
$tot_piattelli[id serie] = count($piattelli[id serie]);
$somma[id serie] = 0;for(){
// se il piattello riporta il valore 1 aumento totale conteggio serie
// in questo modo conteggio solo i piattelli con valore 1
if($piattelli[id serie]* == 1){
$somma[id serie]+1;
}
}// ora avrò il totale della prima serie che posso recuperare in questo modo
// $somma[id serie];}
// lista valori creati dalle varie funzioni sopra per capirne meglio
echo print_r($somma); // lista totale conteggi piattelli con valore 1
echo print_r($tot_piattelli); // lista totale conteggi piattelli con valore 1 e 0
// il totale di tutte le serie con valore 1 lo recupererai cosi:
echo array_sum($somma);// il totale generale di tutte le serie indipendentemente se con valore 0 o 1
echo array_sum($tot_piattelli);[/PHP]
-
Che intendi per $variabile[id serie].
[id serie] è l'id (univoco) della serie o cosa?Comunque adesso faccio delle prove e ti posto tutto il mio codice.
Grazie ancora.
-
@mikslap said:
Che intendi per $variabile[id serie].
[id serie] è l'id (univoco) della serie o cosa?
Si.
-
@ldgweb said:
Si.
Così, però, faccio la somma delle serie. Cioè per ogni record della tabella, in cui il campo "piattelli" contiene i valori, sommo i valori precedentemente espolsi.
Il mio intento invece è quello di sommare solo i primi piattelli di tutte le serie con conseguente somma dei secondi, terzi e così via.In pratica se mi ritrovassi una tabella con 53 campi:
id,** id_tiratore**, data, p1, p2, p3, ...... p50 non dovrei fare altro che la selezione della tabella con la clausula SUM dei campi p1, p2, p3, p4, etc....Il risultato finale di tale operazione deve essere la percentuale, in base alle serie effettuate, dei piattelli 1,2,3,4,5,6,7,..... fino a max 50
Il tuo script mi da questo risultato:
Array
Array
0
26
Array
Array
0
26
Array
Array
0
26
Array
Array
0
26
Array
Array tante volte per quante serie sono.Il ciclo for di cui non hai fatto cenno l'ho compilato in questo modo:
for($i = 0; $i <= $tot_piattelli['id'] - 1; $i++) in modo da inizializzare l'array con 0 (zero) concludendolo con 24 o 49.
-
a questo punto mi viene in mente di fare così:
mi creo un array predefinito con i 50 valori
$totale_piattelli = array(0 => 0, 1 => 0, 2 => 0, 3 => 0, ecc. fino a 49);
avrò quindi un array con 50 chiavi tutte con valore iniziale a 0
poi faccio una somma nel ciclo for sulle chiavi dell'arra corrispondenti:
$totale_piattelli* + $piattello_ottentuo_da_explode*;
in teoria l'explode quando divide 1-1-1-1 crea array partendo da 0
$piattello[0] e la chiave array dovrebbe corrispondere al nostro array predefinito $totale_piattelli[0] trovandosi quindi in un ciclo sommerà la prima serie poi la seconda e così via se qualcosa non esiste di default è impostata cmq a 0