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   -
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
A voir également:

2 réponses

mpmp93 Messages postés 6648 Date d'inscription   Statut Membre Dernière intervention   1 340
 
Bonjour,

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.
0
gerald33 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
Fallentree Messages postés 2309 Date d'inscription   Statut Membre Dernière intervention  
 
nombrefreq($ma_list) qui est nulle ou $K ou count($bh) ????
0
Fallentree Messages postés 2309 Date d'inscription   Statut Membre Dernière intervention  
 
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;
}
0
Fallentree Messages postés 2309 Date d'inscription   Statut Membre Dernière intervention  
 
$ma_liste est un string puis devient un entier ....
Ca fait bizarre...

echo "<pre>";
echo "bh: ". $bh . "\n";
echo "K: ". $K. "\n";
echo "ma_list: ". $ma_list. " typeof ".gettype ($ma_list). " \n";
echo "</pre>";
0