IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Warning: Division by zero in.. [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé Avatar de Sekigawa
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    432
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 432
    Par défaut Warning: Division by zero in..
    Bonjour,

    Oua je galère depuis toute la journée pour trouvée où est l'erreur mais incroyable j'ai encore et toujours ce message qui s'affiche :

    Warning: Division by zero in c:\easyphp1-7\www\testguillaume\graphmonth.php on line 113

    Warning: Division by zero in c:\easyphp1-7\www\testguillaume\graphmonth.php on line 113

    Warning: Division by zero in c:\easyphp1-7\www\testguillaume\graphmonth.php on line 113

    Warning: Division by zero in c:\easyphp1-7\www\testguillaume\graphmonth.php on line 113

    Warning: Division by zero in c:\easyphp1-7\www\testguillaume\graphmonth.php on line 113

    Warning: Division by zero in c:\easyphp1-7\www\testguillaume\graphmonth.php on line 113

    Warning: Division by zero in c:\easyphp1-7\www\testguillaume\graphmonth.php on line 113

    Warning: Division by zero in c:\easyphp1-7\www\testguillaume\graphmonth.php on line 115
    Voici le code je met en rouge les lignes concernées par l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    for($m = 1 ; $m <= $moisCourant ; $m++)
      {
    	    $moisConcerne = date("m",mktime(0,0,0,$m,1,$anneeCourante)) ;
    	    $jourFinMoisConcerne = date("d",mktime(0,0,0,$m+1,0,$anneeCourante)) ;
    	    $periodeDebutMois = "$anneeCourante-$moisConcerne-01" ;
    	    $periodeFinMois = "$anneeCourante-$moisConcerne-$jourFinMoisConcerne" ;
    	    $total=0;
    
    	    $TableauEsites = array() ;
    	    $hitsIP = array() ;
    
    	//Cette requête renvoie le compte des hits de chaque IP sur la base de données. 
    	    $queryIP=("select UserIP as ip,sum(count) as hits from LogsTableIP where Date >= '$periodeDebutMois' and Date <= '$periodeFinMois' group by ip") ;
    	    $resIP=mysql_query($queryIP) or die('Erreur SQL !<br>'.$queryIP.'<br>'.mysql_error());
    	    for($i=0; $hitsIP=mysql_fetch_array($resIP); $i++)
    	  {
    		$IP[$i]=$hitsIP["ip"];
    		$ipHitsHits[$i]=$hitsIP["hits"];
    		$ipHits[$i] = ip2long($IP[$i]) ;
    		
    	   }	
    
    	//Cette requête renvoie le comptage total des hits des IP dans la base de données. 
    	     $totalIP=("select sum(count) as total from LogsTableIP where Date >= '$periodeDebutMois' and Date <= '$periodeFinMois'") ;
    	     $restotal=mysql_query($totalIP) or die('Erreur SQL !<br>'.$totalIP.'<br>'.mysql_error());
    	     $totalHits=mysql_fetch_row($restotal);	
    
    			$totalRepartition = array(0,0,0,0,0,0,0) ;
    
    			$msgFin = "" ;
    
    			//Distribution de pays : chaque IP est examinée et si une des IP appartient à un masque d'IP, le pays auquel appartient l’IP est incrémenté. 
    			//Si l'IP n'est pas identifiée, une valeur booléenne ($reussite) est réglée et des disques d'essai de l'IP et le nombre de fois où cet IP non inscrit apparaît. 
    			 
    			 $unknown=0;
    			 
    			 for($i=0 ; $i<count($IP) ; $i++)
    			{
    				$reussite=0;
    				
    			    
    				    for($j = 0 ; $j < count($countries) ; $j++)
    				    {
    						if($ipHits[$i] >= $ipMaskStart[$j] && $ipHits[$i] <= $ipMaskEnd[$j])
    							 {
    								$totalRepartition[$j] = $totalRepartition[$j]+$ipHitsHits[$i] ;
    								$reussite = 1 ;
    								break ;
    							}
    				     }  
    
    				if($reussite == 0)
    				{
    					$unknown=$unknown+$ipHitsHits[$i]; //Comptage des hits des ips n'appartenant pas à un des pays du graph
    				}
    			}
    
    			//S'il y a un ou plusieurs IPS non inscrits, le script doit recalculer le comptage total de l'IPS enregistré.
    			  if($msgFin != "")
    			  {
    			    $IPDetectees = 0 ;
    			    for($i = 0 ; $i < count($countries) ; $i++)
    			    {
    			      $IPDetectees = $IPDetectees + $totalRepartition[$i] ;
    			    }
    			  }
    			  			  
    			$values=array(0,0,0,0,0,0,0,0);
    
    				for($i=0; $i<count($countries); $i++)
    				{
    					$values[$i]=round(100*($totalRepartition[$i]/$totalHits["total"]),2);
    				}
    					$values[7]=round(100*($unknown/$totalHits["total"]),2);
    
    ?>
    J'ai biensûr fais des test pour voir si ma variable était récupérée et elle l'est je ne comprend vraiment pas...

    Aidez moi svp !!

  2. #2
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 102
    Par défaut
    Je pense que ton souci se situe au niveau de ton $totalHits["total"]...

    En effet, tu utilise la fonction mysql_fetch_row() pour exploiter ton résultat SQL... Or, je te recommande de vérifier comment l'utiliser.

    Chaque colonne est enregistrée sous la forme d'un tableau commençant à la position 0.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $totalHits=mysql_fetch_row($restotal);
    Tu ne peux utiliser ton tableau $totalHits qu'avec des valeurs numériques.
    Exemple : $totalHits[0], $totalHits[1]...

  3. #3
    Membre éclairé Avatar de Sekigawa
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    432
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 432
    Par défaut
    Ok, mais j'ai esssayé avec mysql_fetch_array() et mysql_fetch_assoc() et j'ai tjrs la même erreur...

    Une idée ???

  4. #4
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    $totalHits["total"] serait vide ou non numérique ?
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  5. #5
    Membre éclairé Avatar de Sekigawa
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    432
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 432
    Par défaut
    Bah en faites j'ai 3 totaux, un pour janvier, février et mars mais on dirait qu'il ne veut pas le récupérer...
    Je vais éssayer encore quelques trucs vu que je suis re au boulot et je vous tiens au courant.
    Si vous avez une idée ou me dire ce que signifie ce message d'erreur exactement je suis ouvert à toutes propositions ^^

  6. #6
    Membre chevronné
    Profil pro
    Responsable de service informatique
    Inscrit en
    Septembre 2004
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 352
    Par défaut
    Si vous avez une idée ou me dire ce que signifie ce message d'erreur exactement
    Le message en lui-même est explicite : ça a tenté de faire une division du type 10/0 ou 10/null.

  7. #7
    Membre éclairé Avatar de Sekigawa
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    432
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 432
    Par défaut
    C'est en effet explicite !!

    Je suis bloqué ça va m'énerver !!!

  8. #8
    Membre chevronné
    Profil pro
    Responsable de service informatique
    Inscrit en
    Septembre 2004
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 352
    Par défaut
    T'as regardé du côté mysql ce que retournait ta requête ? Si tu trouves null comme total pour mars, c'est là l'erreur :p.

    Si c'est le cas, avant de faire ta division, tu testes si le total ne vaut pas 0 ou null. Si tu tombes dans ces, il faudra diviser par 1.

  9. #9
    Membre éclairé Avatar de Sekigawa
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    432
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 432
    Par défaut
    AH j'ai une valeur null pour avril... je crois que c'est le problème... lol

    Donc je vais essayer de régler ça !!!

    Merci pour votre aide je pense mettre le topic en résolu vu que l'erreur a été trouvée maintenant à moi de la corriger !!

    Merci beaucoup pour ton aide Chengj !!

    Tcho mais je pense que vous allez encore entendre parler de moi aujourd'hui

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. warning division by zero in
    Par pagal dans le forum WordPress
    Réponses: 7
    Dernier message: 09/04/2013, 12h58
  2. Warning: Division by zero in
    Par kalagan_11 dans le forum Langage
    Réponses: 5
    Dernier message: 27/05/2009, 10h24
  3. Warning: Division by zero
    Par nissaexpa dans le forum Langage
    Réponses: 6
    Dernier message: 03/07/2007, 11h24
  4. [Math][Info]division par zéro
    Par niko8181 dans le forum Général Java
    Réponses: 9
    Dernier message: 23/05/2005, 09h58
  5. Réponses: 3
    Dernier message: 16/09/2004, 14h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo