Page 1 sur 1
PHP 5.6 - Fonction SUM
Posté : 22 oct. 2015, 12:13
par polux78
Bonjour les ténors de la profession…,
J’essaie de transposer mes fichiers « mysql » en « mysqli »
J’ai résolu de nombreux problèmes, mais je bloque devant la fonction « SUM »
PHP 5.4
// Fruits : Poids brut
$tempo = 0;
$sum0 = mysql_result(mysql_query("SELECT SUM(p_brut_fin) FROM conserves WHERE nature = 'Fruits' "), 0);
$p_brut_fruits_1 = $sum0/1000;
$p_brut_fruits = number_format($p_brut_fruits_1, 2, ',', ' ');
*****Cela fonctionne, le résultat est bon*****
PHP 5.6
// Fruits : Poids brut
$sum0 = "SELECT SUM(p_brut_fin) FROM conserves WHERE nature = 'Fruits' ";
$req = mysqli_query($link, $sum0);// or die('Erreur SQL !<br>'.$sum0.'<br>'.mysqli_error());
$data = mysqli_fetch_array($req, MYSQLI_ASSOC);
$data1 = 1000;
$p_brut_fruits_1 = $sum0 / $data1;
// echo $sum0;
$p_brut_fruits = number_format($p_brut_fruits_1, 2, ',', ' ');
*****Pas d’erreur renvoyée par PHP, mais le résultat est toujours à ZERO !???*****
Je ne vois pas ou je bug.
Merci pour votre aide.
Polux78
Re: PHP 5.6 - Fonction SUM
Posté : 22 oct. 2015, 13:16
par Ryle
Peut être ici :
$sum0 = "SELECT SUM(p_brut_fin) FROM conserves WHERE nature = 'Fruits' ";
...
$data1 = 1000;
$p_brut_fruits_1 = $sum0 / $data1;
une chaine de caractère ($sum0) divisé par 1000 ($data1), ça risque pas de faire grand chose

Re: PHP 5.6 - Fonction SUM
Posté : 22 oct. 2015, 15:43
par polux78
OK Ryle,
Merci d'avoir répondu.
Cependant je n'arrive pas à lire le résultat de $sum0.
Par rapport à ma formulation en PHP 5.4 qui fonctionne,
Je ne vois pas comment résoudre mes lignes de programme en PHP 5.6
Amicalement
Polux78
Re: PHP 5.6 - Fonction SUM
Posté : 22 oct. 2015, 17:22
par or 1
$data = mysqli_fetch_array($req, MYSQLI_ASSOC);
donc le résultat de la requete est dans $data, et $data n'est plus utilisée par la suite....
Re: PHP 5.6 - Fonction SUM
Posté : 22 oct. 2015, 18:38
par polux78
Merci OR 1 pour ta réponse
Cependant je patauge grave...
Ligne 88
$data = mysqli_fetch_array($req, MYSQLI_ASSOC);
echo $data;
Notice: Array to string conversion in F:\EasyPHP_VC11\data\localweb\conserves\stats.php on line 88
Ligne 89
$data1 = $data / 1000;
Fatal error: Unsupported operand types in F:\EasyPHP_VC11\data\localweb\conserves\stats.php on line 89
Ligne 92
$p_brut_fruits_1 = number_format($p_brut_fruits_1, 2, ',', ' ');
Warning: number_format() expects parameter 1 to be double, array given in F:\EasyPHP_VC11\data\localweb\conserves\stats.php on line 92
FICHIER ACTUEL
// Fruits : Poids brut
$sum0 = "SELECT SUM(p_brut_fin) FROM conserves WHERE nature = 'Fruits' ";
$req = mysqli_query($link, $sum0);// or die('Erreur SQL !<br>'.$sum0.'<br>'.mysqli_error());
$data = mysqli_fetch_array($req, MYSQLI_ASSOC);
echo $data;
$data1 = $data / 1000;
$p_brut_fruits_1 = $data;
// echo $p_brut_fruits_1;
$p_brut_fruits_1 = number_format($p_brut_fruits_1, 2, ',', ' ');
PHP 5.6 me pose de gros problèmes vu le nombre de fichiers que j’ai à reprendre…,
Pourquoi tant d’erreurs par rapport à PHP 5.4
Merci pour votre aide.
Cordialement
polux78
Re: PHP 5.6 - Fonction SUM
Posté : 23 oct. 2015, 10:54
par Ryle
Bonjour,
$data est un tableau et pas une chaine de caractères, tu ne peux pas l'afficher avec un echo, il faut utiliser print_r ou var_dump
Le principe :
// construire la requête
$sum0 = "SELECT SUM(p_brut_fin) FROM conserves WHERE nature = 'Fruits' ";
// exécuter la requête
$req = mysqli_query($link, $sum0) or die('Erreur SQL !<br>'.$sum0.'<br>'.mysqli_error());
// récupérer le résultat
$data = mysqli_fetch_array($req);
// afficher le résultat : premier index du tableau
// print_r($data);
// utiliser le résultat
$somme = $data[0] / 1000;
Pour plus de lisibilité et il vaut mieux mettre un alias à la colonne retournée et utilisé cet index pour récupérer le résultat
$sum0 = "SELECT SUM(p_brut_fin) AS somme FROM conserves WHERE nature = 'Fruits' "; // alias
$req = mysqli_query($link, $sum0) or die('Erreur SQL !<br>'.$sum0.'<br>'.mysqli_error());
$data = mysqli_fetch_assoc($req);
$somme = $data['somme'] / 1000; // utilisation de l'alias comme index
Re: PHP 5.6 - Fonction SUM
Posté : 25 oct. 2015, 17:31
par polux78
Bonjour Ryle
Grand merci pour ton mini cours
J'ai résolu mes listings et lecture d'une fiche d'après le listing.
Maintenant je me bat avec la modification de fiche et la duplication de fiche
Je souffre !!!
Cordialement
Polux78