Problème avec les boucles
Fermé
yani65
-
15 févr. 2015 à 12:24
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 - 16 févr. 2015 à 10:50
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 - 16 févr. 2015 à 10:50
5 réponses
jordane45
Messages postés
38241
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 septembre 2024
4 688
Modifié par jordane45 le 15/02/2015 à 15:23
Modifié par jordane45 le 15/02/2015 à 15:23
Bonjour,
Plutôt que de faire le calcul via des boucles PHP ... pourquoi ne pas les faire en SQL directement ?
Il existe des fonctions telles que SUM , COUNT .... ainsi que des fonctions de manipulation de temps comme Timediff ... sans oublier, bien sûr..., le GROUP BY
Cordialement,
Jordane
Plutôt que de faire le calcul via des boucles PHP ... pourquoi ne pas les faire en SQL directement ?
Il existe des fonctions telles que SUM , COUNT .... ainsi que des fonctions de manipulation de temps comme Timediff ... sans oublier, bien sûr..., le GROUP BY
Cordialement,
Jordane
yani65
Messages postés
8
Date d'inscription
mardi 13 janvier 2015
Statut
Membre
Dernière intervention
2 mars 2015
Modifié par yani65 le 15/02/2015 à 16:21
Modifié par yani65 le 15/02/2015 à 16:21
Bonsoir jordane45 ;
J'ai 1500 tables!
Pour chaque Enseignant, il ya anviron 23 tables !!!!!,mdl_ens1_1,mdl_ens1_2,.....,mdl_ens1_68. Elles sont extraites d'une base de données d'une plate-forme d'enseignement à Distance!
Vous comprenez maintenant, pourquoi je ne peux pas le faire via sql? c'est pénible!
J'ai 1500 tables!
Pour chaque Enseignant, il ya anviron 23 tables !!!!!,mdl_ens1_1,mdl_ens1_2,.....,mdl_ens1_68. Elles sont extraites d'une base de données d'une plate-forme d'enseignement à Distance!
Vous comprenez maintenant, pourquoi je ne peux pas le faire via sql? c'est pénible!
jordane45
Messages postés
38241
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 septembre 2024
4 688
15 févr. 2015 à 16:18
15 févr. 2015 à 16:18
Je ne comprends pas où est le souci. ..
tu fais bien des requêtes sur ces tables non ?
Donc au lieu de faire tes calculs en php...tu les fais en sql....
tu fais bien des requêtes sur ces tables non ?
Donc au lieu de faire tes calculs en php...tu les fais en sql....
yani65
Messages postés
8
Date d'inscription
mardi 13 janvier 2015
Statut
Membre
Dernière intervention
2 mars 2015
16 févr. 2015 à 08:42
16 févr. 2015 à 08:42
Bonjour;
C'est vrai, mais mon responsable veut que j'automatise ces tâches, car au fur et à mesure , le nombre d'enseignants augmente ainsi que le volume horaire.
Je suis désolé pour le dérangement.
C'est vrai, mais mon responsable veut que j'automatise ces tâches, car au fur et à mesure , le nombre d'enseignants augmente ainsi que le volume horaire.
Je suis désolé pour le dérangement.
jordane45
Messages postés
38241
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 septembre 2024
4 688
16 févr. 2015 à 09:41
16 févr. 2015 à 09:41
Déjà... le fait qu'il y ait autant de tables que d'enseignants... montre un souci de conception de l'application ! (t'imagines si FB ou CCM devait ajouter une table à chaque inscription d'un utilisateur ??)
Quoi qu'il en soit.... automatiser ne veut pas forcément dire "QUE" en php....
Le fait de le faire via des requêtes est une "automatisation" également !
NB: je ne te dis pas de ne pas utiliser de PHP... je te conseilles simplement d'optimiser les requêtes pour qu'elles fassent les calculs directement et qu'ensuite dans ton PHP tu en récupères les résultat pour les manipuler (les afficher) dans tes pages php !
Mais bon.... si tu tiens absolument à le faire en PHP (en partant du code que tu nous as donné....)
pourquoi ne stockes tu pas le résultat de tes calculs dans un tableau ?
Un truc comme ça devrait faire l'affaire...
(codé de tête sans avoir testé....)
Quoi qu'il en soit.... automatiser ne veut pas forcément dire "QUE" en php....
Le fait de le faire via des requêtes est une "automatisation" également !
NB: je ne te dis pas de ne pas utiliser de PHP... je te conseilles simplement d'optimiser les requêtes pour qu'elles fassent les calculs directement et qu'ensuite dans ton PHP tu en récupères les résultat pour les manipuler (les afficher) dans tes pages php !
Mais bon.... si tu tiens absolument à le faire en PHP (en partant du code que tu nous as donné....)
pourquoi ne stockes tu pas le résultat de tes calculs dans un tableau ?
Un truc comme ça devrait faire l'affaire...
(codé de tête sans avoir testé....)
$som = 0; $total_mois =0; $result=array(); while ($i++<$k-1) { echo $i .'<br>'; // Remise à zero du compteur $total_mois if (($mois[$i]!=$mois[$i-1]) ){ $total_mois =0; } // Remise à zero du compteur $som ( jour) if ($jour[$i]!=$jour[$i-1]){ $som=0; } $H_prec = isset($heure[$i-1])?$heure[$i-1]:0; $M_prec = isset($minute[$i-1])?$minute[$i-1]:0; $som += (($heure[$i]*60)+($minute[$i]))-(($H_prec*60)+($M_prec)); $total_mois += $som ; $result[$mois[$i]][$jour[$i]]['somme'] = $som; $result[$mois[$i]]['total_mois'] = $total_mois; } // Affichage du tableau de résultats: print_r( $result);
yani65
Messages postés
8
Date d'inscription
mardi 13 janvier 2015
Statut
Membre
Dernière intervention
2 mars 2015
16 févr. 2015 à 10:25
16 févr. 2015 à 10:25
Merci beaucoup , je vais essayer .
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ElementW
Messages postés
4816
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 228
Modifié par gravgun le 16/02/2015 à 10:52
Modifié par gravgun le 16/02/2015 à 10:52
'lut, pour ta gouverne, l'extension MySQL et ses fonctions
Cela s'explique par le fait que cette extension ne dispose pas de requêtes préparées, menant très fréquemment a des possibilités d'injection SQL, autrement dit à la modification ou destruction de ta BDD par n'importe qui.
Aussi, le dit module n'est plus mis à jour, donc toute faille de sécurité découverte dedans ne sera pas corrigée.
Regarde du coté de PDO; ou de l'extension MySQLi qui a l'avantage d'avoir un style de code proche du module MySQL.
from human import idiocy
del idiocy
mysql_*est obsolète et donc à ne plus utiliser, encore moins pour l'apprentissage de l'utilisation de BDD. D'ailleurs, elle est déconseillée depuis PHP5, obsolète depuis PHP 5.5, et sera supprimée dans les versions suivantes de PHP.
Cela s'explique par le fait que cette extension ne dispose pas de requêtes préparées, menant très fréquemment a des possibilités d'injection SQL, autrement dit à la modification ou destruction de ta BDD par n'importe qui.
Aussi, le dit module n'est plus mis à jour, donc toute faille de sécurité découverte dedans ne sera pas corrigée.
Regarde du coté de PDO; ou de l'extension MySQLi qui a l'avantage d'avoir un style de code proche du module MySQL.
from human import idiocy
del idiocy