Function tableau requete php

Fermé
nathanael76 Messages postés 17 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 24 janvier 2007 - 24 janv. 2007 à 13:48
nathanael76 Messages postés 17 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 24 janvier 2007 - 24 janv. 2007 à 14:28
Bonjour,

J'aimerais utiliser des fonctions pour optimiser un programme qui calcule les moyennes d'une "table liste".

Je vous remercie par avance, amicalement, Guy.
------------------------------------------------
"table alimliste" :
nom a b url
Abricot 20.000 30.000
banane 7.000 0.900 source1
banane 6.000 1.000 source5
pomme 3.000 9.000 source1
pomme 3.800 12.600
pomme 2.500 10.000 source3
--------------------------------------------------
"table alimmoy" (résultat)
nom a b
Abricot 20.000 30.000
banane 6.500 0.950
pomme 3.100 10.533

-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x
code source :
-----------------------------------------
calcul-moy (version 7)

<?php

$sql = mysql_connect('xxx', 'yyy', 'zzz');
$db = mysql_select_db('kkk', $sql);

$query = "SELECT * FROM alimliste ORDER BY 'nom'";
$query0='delete from alimmoy';
$requete0 = mysql_query($query0) or die( mysql_error() ) ;


//préparation des variables

//compteur darticle du meme nom
$compteur='1';

//nom precedant
$nomprec="0";

//$ta[] = tableau ou sont stoquees les valeurs de larticle en cours de lecture
//nom
$ta[0]=0;

//vitamine a
$ta[1]=0;

//vitamine b
$ta[2]=0;

//initialiser le tableau des cumuls "tc" des nutriments

//vitamine a
$tc[1]="0";

//vitamine b
$tc[2]="0";

//$mi[] = moyennes nutriments a inserer
//vitamine a
$mi[1]="0";

//vitamine b
$mi[2]="0";



// On exécute la requête
$resultat = mysql_query($query);

// Si la requête fonctionne
if ($resultat)
//debut des traitement lies a la requete qui fonctionne
{
while ($valeurs = mysql_fetch_assoc($resultat))
//debut de tant que de la requete qui fonctionne
{
$ta[0]=$valeurs['nom'];
$ta[1]=$valeurs['a'];
$ta[2]=$valeurs['b'];
//est ce que le nom en cours de lecture est-il = au nom precedant?
if ($ta[0]==$nomprec)
//oui donc le nom en cours de lecture = nom precedant
{
$compteur=$compteur+1;
$tc[1]=$tc[1]+$ta[1];
$tc[2]=$tc[2]+$ta[2];
}
//non donc le nom en cours de lecture <> nom precedant
else
{
$mi[1]=$tc[1]/$compteur;
$mi[2]=$tc[2]/$compteur;
$compteur=1;
//et avec le nom en cours de lecture <> nom precedant
//est ce qu en plus le nom en cours de lecture est il le premier de la table ?
if($nomprec=='0')
//oui le nom en cours de lecture <> nom precedant est aussi le premier de la table.
{
$tc[1]=$ta[1];
$tc[2]=$ta[2];
$nomprec=$ta[0];
}
//le nom en cours de lecture <> nom precedant mais n est pas le premier de la table
else
{
$a=$mi[1];
$b=$mi[2];
$query2= "INSERT INTO alimmoy (nom,a,b) VALUES ('$nomprec','$a','$b') " ;
$requete2 = mysql_query($query2) or die( mysql_error() ) ;
};
//une fois les traitements effectues on place le nom actuel dans nomprec
$nomprec=$ta[0];
//et on rempli le cumul des nutriments avec cette première valeur
$tc[1]=$ta[1];
$tc[2]=$ta[2];
//fin du test de comparaison entre le nom lu et le nom precedant.
};
//fin de tant que de la requete qui fonctionne
}
//$mi[1]=$tc[1]/$compteur;
//$a=$mi[1];
$a=$tc[1]/$compteur;
$b=$tc[2]/$compteur;
$query2= "INSERT INTO alimmoy (nom,a,b) VALUES ('$nomprec','$a','$b') " ;
$requete2 = mysql_query($query2) or die( mysql_error() ) ;
echo "<br><br>table des moyennes mise a jour ok";
//fin du traitement lie a la requete qui fonctionne

} else {echo 'Erreur : resultat';}
mysql_close();
?>
------------------------------------------------------------
A voir également:

1 réponse

kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
24 janv. 2007 à 14:07
Tu veux faire des moyennes sur quoi exactement, les valeurs nutritives des différents aliments ?

Car tu peux faire une requête SQL qui te calcule ces moyennes, plutot que d'avoir un script php qui le fait en fonction de ce que retourne la requête sur la base de données.
0
nathanael76 Messages postés 17 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 24 janvier 2007
24 janv. 2007 à 14:28
La banane contien

selon source 1 =
7 g de vitamine a
0.9g de vitamine b

selon source 5 =
6 g de vitamine a
1 g de vitamine b


on veut faire la moyenne par aliment et par nutriment :
la banane contien 6.5 g de a ,0.95 de b...

En te remerciant, amicalement, Guy.
0