Warning: Division by zero in G:\wamp\www\www\optracom\detection-
gerald33
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
Fallentree Messages postés 2309 Date d'inscription Statut Membre Dernière intervention -
Fallentree Messages postés 2309 Date d'inscription Statut Membre Dernière intervention -
bonjour a tout le monde, je ne maitrise pas encore la programmation en php, et j'ai écris un scrip pour calculer cette formule:
$rlf = (7 * (array_sum($bh) / count($bh))) / (10 * 8 * $K * nombrefreq($ma_list));
j'utilise les données de deux bases de données différentes.
je me suis heurté a deux problèmes majeurs: premièrement toutes les valeurs que j'affiche donnent zéro, et j'ai reçu les messages d'erreurs suivant:
Notice: Undefined index: date_fin in G:\wamp\www\www\optracom\detection-2\calculer-le-rlf-des-cellules.php on line 362
Warning: Division by zero in G:\wamp\www\www\optracom\detection-2\calculer-le-rlf-des-cellules.php on line 69
aidez moi svp
$rlf = (7 * (array_sum($bh) / count($bh))) / (10 * 8 * $K * nombrefreq($ma_list));
j'utilise les données de deux bases de données différentes.
je me suis heurté a deux problèmes majeurs: premièrement toutes les valeurs que j'affiche donnent zéro, et j'ai reçu les messages d'erreurs suivant:
Notice: Undefined index: date_fin in G:\wamp\www\www\optracom\detection-2\calculer-le-rlf-des-cellules.php on line 362
Warning: Division by zero in G:\wamp\www\www\optracom\detection-2\calculer-le-rlf-des-cellules.php on line 69
aidez moi svp
A voir également:
- Warning: Division by zero in G:\wamp\www\www\optracom\detection-
- Warning zone telechargement - Accueil - Outils
- Téléchargement et streaming illégal : voici les adresses des sites pirates que les FAI vont bloquer - Accueil - Services en ligne
- Cpu fan fail warning control - Forum Matériel & Système
- Symbole warning word ✓ - Forum Word
- Quota warning free - Guide
2 réponses
Bonjour,
N'étant pas devant votre micro, on est bien incapables de trouver l'erreur.
Avant calcul de votre formule mettez ceci:
et regardez les valeurs des données injectées dans la formule.
N'étant pas devant votre micro, on est bien incapables de trouver l'erreur.
Avant calcul de votre formule mettez ceci:
echo "<pre>"; echo "bh: ". $bh . "\n"; echo "K: ". $K. "\n"; echo "ma_list: ". $ma_list. "\n"; echo "</pre>";
et regardez les valeurs des données injectées dans la formule.
mrc mais les erreurs persistent toujours, quant je fais un error_reporting(1); la il ny a plus de problème mais toutes les valeurs sont a 0.
voici le code complet:
<?php
error_reporting(1);
session_start() ;
//$_SESSION['date_debut'] = $_POST['date_debut'];
//$_SESSION['date_fin'] = $_POST['date_fin'];
$bdd = new PDO('mysql:host=127.0.0.1;dbname=alcatel', 'root', '',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
$bdd2 = new PDO('mysql:host=172.21.91.71;dbname=alcatel', 'sam', 'sam',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
function nombrefreq($ma_liste)
{
//calcule la différence entre les fréquence ds le MA ds un intervale
$intervalle = substr ($ma_liste, 1, (strlen($ma_liste)-1));
$tab = explode('-', $intervalle);
$ma_liste = $tab[1] - $tab[0];
return $ma_liste;
}
function RLFcellule($name, $ddeb, $dfin, $bdd, $bdd2 ){
try {
$sql = 'SELECT MC380A, MC380B FROM bh_R110_1 WHERE (date_debut_mesure BETWEEN :vddeb AND :vdfin ) AND CELL_NAME LIKE :vname ORDER BY date_debut_mesure ASC';
$sql1 = 'SELECT ma_liste FROM table_ma_list WHERE Nom LIKE :vname';
$sql2 = 'SELECT Nb_hopping_TCH ,Nb_hopping_TS FROM valeur_K WHERE cellule LIKE :vname';
$req = $bdd2->prepare($sql);
$req1 = $bdd->prepare($sql1);
$req2 = $bdd->prepare($sql2);
} catch (Exception $e) {
die('Erreur : ' . $e->getMessage());
}
try {
$req->execute(array(
'vddeb' => $ddeb,
'vdfin' => $dfin,
'vname' => $name
));
$bh = array();
while ($donnee = $req->fetch()) {
if(count($donnee)>0){
$mc380a[] = $donnee['MC380A'] ;
$mc380b[] = $donnee['MC380B'] ;
$bh[] = (($donnee['MC380A'] + $donnee['MC380B']) / 3600 );
}
else{
$bh[] = 0;
}
}
$req->closeCursor();
$req1->execute(array(
'vname' => $name
));
while ($donnee1 = $req1->fetch()) {
$ma_list = $donnee1['ma_liste'] ;
}
$req1->closeCursor();
$req2->execute(array(
'vname' => $name
));
while ($donnee2 = $req2->fetch()) {
$Nb_hopping_TCH = $donnee2['Nb_hopping_TCH'] ;
$Nb_hopping_TS = $donnee2['Nb_hopping_TS'] ;
$K = $donnee2['Nb_hopping_TCH'] / $donnee2['Nb_hopping_TS'];
}
$req2->closeCursor();
$rlf = (7 * (array_sum($bh) / count($bh))) / (10 * 8 * $K * nombrefreq($ma_list));
return $rlf;
}
catch (Exception $e) {
die('Erreur : ' . $e->getMessage());
}
}
?>
<?php
// On ne s'interesse qu'aux cellules voisnes qui ont un % de flux de HO > 2 %
// fabriquons la liste de toutes les cellules cibles
$liste_cible = array();
$liste_cible[] = $_SESSION['donnees_a_traiter']["source_cible1"]["nom_cible"] ;
for($count = 1; $count<count($_SESSION['donnees_a_traiter']);$count++){
if(!in_array($_SESSION['donnees_a_traiter']["source_cible".($count+1)]["nom_cible"], $liste_cible)){
$liste_cible[] = $_SESSION['donnees_a_traiter']["source_cible".($count+1)]["nom_cible"];
}
}
// echo count($liste_cible);
// calculons le pourcentage total de flux entrant vers ces cellules
$_SESSION["cible_pourcentage"] = array();
for($i=0;$i<count($liste_cible);$i++)
{
$nom_cible = $liste_cible[$i];
$_SESSION["cible_pourcentage"]["nom_cible".($i+1)] = $nom_cible ;
// on parcourt toutes leslignes qu ont pour cellule cible cette cellule
$liste_flux = array();
for($j = 0; $j<count($_SESSION['donnees_a_traiter']); $j++)
{
if(strcmp($nom_cible,$_SESSION['donnees_a_traiter']["source_cible".($j+1)]["nom_cible"])==0)
{
$liste_flux[] = $_SESSION['donnees_a_traiter']["source_cible".($j+1)]["pourcentage"] ;
}
}
$_SESSION["cible_pourcentage"]["pourcentage".($i+1)] = array_sum($liste_flux) / count($liste_flux) ;
}
//Affichage des résultats
?>
<center> RLF des cellules</center>
<br/>
<div style="width: 100%; height: 300px; overflow-y: scroll; display: none;">
<table style="width: 99%;">
<tr style="background-color: orange;">
<td><center>
</center>
</td>
<td><center>
Nom de la cellule
</center>
</td>
<td><center>
% Flux HO
</center>
</td>
</tr>
<?php
$_SESSION["cellule_RLF"] = array() ;
$indice = 1 ;
for($count =0; $count < count($liste_cible); $count++){
if($_SESSION["cible_pourcentage"]["pourcentage".($count+1)]>=0){
?>
<tr style="background-color: skyblue;">
<td>
<center>
<?php echo $count + 1; ?>
</center>
</td>
<td>
<center>
<?php
echo $_SESSION["cible_pourcentage"]["nom_cible".($count+1)] ;
$_SESSION["cellule_RLF"]["nom_cellule".$indice] = $_SESSION["cible_pourcentage"]["nom_cible".($count+1)] ;
$indice++;
?>
</center>
</td>
<td>
<center>
<?php echo $_SESSION["cible_pourcentage"]["pourcentage".($count+1)] ;
?>
</center>
</td>
</tr>
<?php
}
else{
?>
<tr>
<td>
<center>
<?php echo $count + 1; ?>
</center>
</td>
<td>
<center>
<?php echo $_SESSION["cible_pourcentage"]["nom_cible".($count+1)] ; ?>
</center>
</td>
<td>
<center>
<?php echo $_SESSION["cible_pourcentage"]["pourcentage".($count+1)] ; ?>
</center>
</td>
</tr>
<?php
}
}
?>
</table>
</div>
<?php
// on ne s'interesse maintenant qu'aux cellules qui ont un % HO > 2 %
//ces cellules st dans le tableau $_SESSION["cellule_RLF"] ;
//seuil du RLF (RLF > 6)
for($k=1; $k<=40; $k++){
if($rlf = RLFcellule($_SESSION["cellule_RLF"]["nom_cellule".$k], $_SESSION['date_debut'], $_SESSION['date_fin'], $bdd, $bdd2))
{
$_SESSION['cellule_RLF']['RLF'.$k] = $rlf;
}
// else{
// $_SESSION['cellule_RLF']['RLF'.$k] = '0' ;
// }
}
//echo count ($_SESSION['cellule_RLF']);
?>
<div style="width: 90%;">
<table style="width: 100%;">
<tr>
<td>
<center>
Nom des cellules
</center>
</td>
<td>
<center>
RLF des cellules
</center>
</td>
</tr>
<?php
for($i=0; $i<50; $i++){
if((strlen($_SESSION["cellule_RLF"]["nom_cellule".($i+1)]))!=0){
?>
<tr >
<td><center>
<?php echo $_SESSION["cellule_RLF"]["nom_cellule".($i+1)]; ?>
</center></td>
<td><center>
<?php echo 100*$_SESSION['cellule_RLF']['RLF'.($i+1)]; ?>
</center></td>
</tr>
<?php
}
}
?>
merci d'avance
voici le code complet:
<?php
error_reporting(1);
session_start() ;
//$_SESSION['date_debut'] = $_POST['date_debut'];
//$_SESSION['date_fin'] = $_POST['date_fin'];
$bdd = new PDO('mysql:host=127.0.0.1;dbname=alcatel', 'root', '',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
$bdd2 = new PDO('mysql:host=172.21.91.71;dbname=alcatel', 'sam', 'sam',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
function nombrefreq($ma_liste)
{
//calcule la différence entre les fréquence ds le MA ds un intervale
$intervalle = substr ($ma_liste, 1, (strlen($ma_liste)-1));
$tab = explode('-', $intervalle);
$ma_liste = $tab[1] - $tab[0];
return $ma_liste;
}
function RLFcellule($name, $ddeb, $dfin, $bdd, $bdd2 ){
try {
$sql = 'SELECT MC380A, MC380B FROM bh_R110_1 WHERE (date_debut_mesure BETWEEN :vddeb AND :vdfin ) AND CELL_NAME LIKE :vname ORDER BY date_debut_mesure ASC';
$sql1 = 'SELECT ma_liste FROM table_ma_list WHERE Nom LIKE :vname';
$sql2 = 'SELECT Nb_hopping_TCH ,Nb_hopping_TS FROM valeur_K WHERE cellule LIKE :vname';
$req = $bdd2->prepare($sql);
$req1 = $bdd->prepare($sql1);
$req2 = $bdd->prepare($sql2);
} catch (Exception $e) {
die('Erreur : ' . $e->getMessage());
}
try {
$req->execute(array(
'vddeb' => $ddeb,
'vdfin' => $dfin,
'vname' => $name
));
$bh = array();
while ($donnee = $req->fetch()) {
if(count($donnee)>0){
$mc380a[] = $donnee['MC380A'] ;
$mc380b[] = $donnee['MC380B'] ;
$bh[] = (($donnee['MC380A'] + $donnee['MC380B']) / 3600 );
}
else{
$bh[] = 0;
}
}
$req->closeCursor();
$req1->execute(array(
'vname' => $name
));
while ($donnee1 = $req1->fetch()) {
$ma_list = $donnee1['ma_liste'] ;
}
$req1->closeCursor();
$req2->execute(array(
'vname' => $name
));
while ($donnee2 = $req2->fetch()) {
$Nb_hopping_TCH = $donnee2['Nb_hopping_TCH'] ;
$Nb_hopping_TS = $donnee2['Nb_hopping_TS'] ;
$K = $donnee2['Nb_hopping_TCH'] / $donnee2['Nb_hopping_TS'];
}
$req2->closeCursor();
$rlf = (7 * (array_sum($bh) / count($bh))) / (10 * 8 * $K * nombrefreq($ma_list));
return $rlf;
}
catch (Exception $e) {
die('Erreur : ' . $e->getMessage());
}
}
?>
<?php
// On ne s'interesse qu'aux cellules voisnes qui ont un % de flux de HO > 2 %
// fabriquons la liste de toutes les cellules cibles
$liste_cible = array();
$liste_cible[] = $_SESSION['donnees_a_traiter']["source_cible1"]["nom_cible"] ;
for($count = 1; $count<count($_SESSION['donnees_a_traiter']);$count++){
if(!in_array($_SESSION['donnees_a_traiter']["source_cible".($count+1)]["nom_cible"], $liste_cible)){
$liste_cible[] = $_SESSION['donnees_a_traiter']["source_cible".($count+1)]["nom_cible"];
}
}
// echo count($liste_cible);
// calculons le pourcentage total de flux entrant vers ces cellules
$_SESSION["cible_pourcentage"] = array();
for($i=0;$i<count($liste_cible);$i++)
{
$nom_cible = $liste_cible[$i];
$_SESSION["cible_pourcentage"]["nom_cible".($i+1)] = $nom_cible ;
// on parcourt toutes leslignes qu ont pour cellule cible cette cellule
$liste_flux = array();
for($j = 0; $j<count($_SESSION['donnees_a_traiter']); $j++)
{
if(strcmp($nom_cible,$_SESSION['donnees_a_traiter']["source_cible".($j+1)]["nom_cible"])==0)
{
$liste_flux[] = $_SESSION['donnees_a_traiter']["source_cible".($j+1)]["pourcentage"] ;
}
}
$_SESSION["cible_pourcentage"]["pourcentage".($i+1)] = array_sum($liste_flux) / count($liste_flux) ;
}
//Affichage des résultats
?>
<center> RLF des cellules</center>
<br/>
<div style="width: 100%; height: 300px; overflow-y: scroll; display: none;">
<table style="width: 99%;">
<tr style="background-color: orange;">
<td><center>
</center>
</td>
<td><center>
Nom de la cellule
</center>
</td>
<td><center>
% Flux HO
</center>
</td>
</tr>
<?php
$_SESSION["cellule_RLF"] = array() ;
$indice = 1 ;
for($count =0; $count < count($liste_cible); $count++){
if($_SESSION["cible_pourcentage"]["pourcentage".($count+1)]>=0){
?>
<tr style="background-color: skyblue;">
<td>
<center>
<?php echo $count + 1; ?>
</center>
</td>
<td>
<center>
<?php
echo $_SESSION["cible_pourcentage"]["nom_cible".($count+1)] ;
$_SESSION["cellule_RLF"]["nom_cellule".$indice] = $_SESSION["cible_pourcentage"]["nom_cible".($count+1)] ;
$indice++;
?>
</center>
</td>
<td>
<center>
<?php echo $_SESSION["cible_pourcentage"]["pourcentage".($count+1)] ;
?>
</center>
</td>
</tr>
<?php
}
else{
?>
<tr>
<td>
<center>
<?php echo $count + 1; ?>
</center>
</td>
<td>
<center>
<?php echo $_SESSION["cible_pourcentage"]["nom_cible".($count+1)] ; ?>
</center>
</td>
<td>
<center>
<?php echo $_SESSION["cible_pourcentage"]["pourcentage".($count+1)] ; ?>
</center>
</td>
</tr>
<?php
}
}
?>
</table>
</div>
<?php
// on ne s'interesse maintenant qu'aux cellules qui ont un % HO > 2 %
//ces cellules st dans le tableau $_SESSION["cellule_RLF"] ;
//seuil du RLF (RLF > 6)
for($k=1; $k<=40; $k++){
if($rlf = RLFcellule($_SESSION["cellule_RLF"]["nom_cellule".$k], $_SESSION['date_debut'], $_SESSION['date_fin'], $bdd, $bdd2))
{
$_SESSION['cellule_RLF']['RLF'.$k] = $rlf;
}
// else{
// $_SESSION['cellule_RLF']['RLF'.$k] = '0' ;
// }
}
//echo count ($_SESSION['cellule_RLF']);
?>
<div style="width: 90%;">
<table style="width: 100%;">
<tr>
<td>
<center>
Nom des cellules
</center>
</td>
<td>
<center>
RLF des cellules
</center>
</td>
</tr>
<?php
for($i=0; $i<50; $i++){
if((strlen($_SESSION["cellule_RLF"]["nom_cellule".($i+1)]))!=0){
?>
<tr >
<td><center>
<?php echo $_SESSION["cellule_RLF"]["nom_cellule".($i+1)]; ?>
</center></td>
<td><center>
<?php echo 100*$_SESSION['cellule_RLF']['RLF'.($i+1)]; ?>
</center></td>
</tr>
<?php
}
}
?>
merci d'avance