salve
ho bisogno di fare la somma di un array ma non ci riesco. Ho provato così:
l'array in questione è $record[3]
ma non funziona. Come posso fare?Codice PHP:
$somma=array($record[3]);
$mix=array_sum($somma);
echo $mix;
ciao e grazie
salve
ho bisogno di fare la somma di un array ma non ci riesco. Ho provato così:
l'array in questione è $record[3]
ma non funziona. Come posso fare?Codice PHP:
$somma=array($record[3]);
$mix=array_sum($somma);
echo $mix;
ciao e grazie
Ultima modifica di dreadnaut : 15-02-2012 alle ore 14.15.01 Motivo: + codice dal posto sotto, tag [php]
array_sum(), come primo parametro deve avere tutta l'array, senza definire l'indice, anche perché non ti stai riferendo ad un singolo elemento dell'array, ma a tutta l'array.
P.S.: Hai scritto lo stesso codice due volte, non fare up, se hai sbagliato codice allora posta meglio il tuo codice.
Ultima modifica di sevenjeak : 11-01-2012 alle ore 17.29.20
grazie x la risposta
ma non ho capito bene, potresti farmi un esempio? grazie
Trovi un mucchio di esempi nella pagina che ti ho linkato.
purtroppo non riesco a capire, qualche aiuto?
Se il tuo array è $record[3], perché non sommi direttamente quello?
Ricorda che array_sum() prende un array contente numeri, e ne somma gli elementi. Se l'array contiene altri dati, o altri array, non funzionerà.Codice PHP:
$mix = array_sum( $record[3] );
echo $mix;
forse allora è quello il problema. I valori del db sono varchar, e forse è per questo che non li somma. Ma che tipi di dati devo usare se devo sommare numeri decimali come 0,99?
ciao
mi dice
NULL
il campo del db è impostato come decimal.
Se ti dice null, non c'è dentro niente. Controlla di estrarre i dati correttamente dal database, e metti unall'inizio del tuo script, così eventuali errori verranno stampati nella pagina.Codice PHP:
error_reporting(E_ALL);
ho fatto e mi dice
i dati nel db e nella colonna sono corretti. Di seguito posto l'intero codiceCodice:Warning: array_sum() [function.array-sum]: The argument should be an array in /membri/provaofferte/ese.php on line 85
Codice PHP:
<html>
<head>
<style type="text/css">
body{
margin-left: .5cm;
margin-right: .5cm;
color: black;
font-family: Verdana, Arial, sans-serif;
font-size: 10pt;
}
</style>
</head>
<?php
$nomeDB = "";
$connessione = mysql_connect("", "", "") or die("Connessione al Server non possibile.");
mysql_select_db($nomeDB, $connessione) or die("Connessione al DB non possibile.");
$q = 'select tab.* from ( select * from tab1 union all select * from tab2 union all select * from tab3) tab where 1=1';
if (isset($_POST['c1']) || isset($_POST['c2']) || isset($_POST['c3'])) {
$q.= " && (1=0";
if (isset($_POST['c1'])) {
$q.= " || genere = 'elemento1' ";
}
if (isset($_POST['c2'])) {
$q.= " || genere = 'elemento2' ";
}
if (isset($_POST['c3'])) {
$q.= " || genere = 'elemento3' ";
}
$q.= ")";
}
$q.= " order by nome";
$id_ris = mysql_query($q)
or die("Non è possibile eseguire la query!<br/>" . $q . "<br/>" . mysql_error());
$num_libri = mysql_num_rows($id_ris);
mysql_data_seek($id_ris, 0);
echo "<table border='0' width='700px'>";
echo "<tr>";
echo "<td><b>Tipo</b></td>";
echo "<td><b>Quantità</b></td>";
echo "<td><b>Prezzo</b></td>";
echo "<td><b>Genere</b></td>";
echo "<td><b>Nome</b></td>";
echo "</tr>";
for ($i = 0; $i < $num_libri; $i++) {
$record = mysql_fetch_array($id_ris);
echo "<td>", $record[0], "</td>";
echo "<td>", $record[1], "</td>";
echo "<td>", $record[2], "</td>";
echo "<td>", $record[3], "</td>";
echo "<td>", $record[4], "</td>";
echo "</tr>";
}
echo "</table>";
echo var_dump($record[2]);
error_reporting(E_ALL);
$mix = array_sum( $record[2] );
echo $mix;
?>
</html>
Ultima modifica di provaofferte : 15-02-2012 alle ore 17.26.35
A parte che error_reporting andrebbe in cima allo script, così da poter vedere tutti gli errori, c'è un problema più grosso.
$record[2] non è neanche lontanamente un'array di numeri, ma un singolo valore. Se vuoi fare la somma di tutte i prezzi hai due possibilità:
- sommi i numeri man mano nel ciclo for in cui li visualizzi, oppure
- usi una query apposita con SUM().
la query non posso usarla perchè lo script è collegato a delle checkbox, e mi deve visualizzare solo i risultati selezionati con le checkbox. Per quanto riguarda il ciclo for non è che potresti dirmi come fare? grazie mille
A fare una somma con un ciclo for?
Codice PHP:
$array = array( 1,2,3,4,5 );
$totale = 0;
for ($i = 0; $i < count($array); $i++)
$totale += $array[$i];
echo $totale;
ma come integro questo ciclo con il codice che ho postato?
Ti consiglio di fare molti esercizi con while/for/if, perché queste cose sono fondamentali.
Ciao!Codice PHP:
for ($i = 0, $somma = 0; $i < $num_libri; $i++) {
$record = mysql_fetch_array($id_ris);
$somma += $record[2];
echo "<td>", $record[0], "</td>";
echo "<td>", $record[1], "</td>";
echo "<td>", $record[2], "</td>";
echo "<td>", $record[3], "</td>";
echo "<td>", $record[4], "</td>";
echo "</tr>";
}
echo '</table>La somma del terzo elemento è: '.$somma;
regolamento altervista_______________ regolamento forum
grazie mille, ma a me servirebbe la somma di ogni tabella estratta dalla query. Come puoi vedere nella query ci sono tre tabelle e io vorrei avere la somma non di tutte e tre inseme ma prima di una e poi delle altre.
Ps - hai ragione x quanto riguarda gli esercizi da fare