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 :

division par zero et variable indefini en erreur


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Août 2015
    Messages : 93
    Par défaut division par zero et variable indefini en erreur
    bonjour,
    voila j'ai créer un code pour un jeu, il permet de calculer
    la distance et le temps

    j'utilise 2 fonction qui sont propre au jeu pour réalisé cette opération mais j'en est une ( la plus importante ) celle qui me donne le temps me sort 2 erreur voir ci dessous

    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
     
    duration :
    ( ! ) Notice: Undefined variable: Distance in C:\wamp\www\Outils-MX\calculateur2.php on line 153
    Call Stack
    #	Time	Memory	Function	Location
    1	0.0007	255688	{main}( )	..\index4.php:0
    2	0.0021	299400	include( 'C:\wamp\www\Outils-MX\calculateur2.php' )	..\index4.php:6
     
    ( ! ) Warning: Division by zero in C:\wamp\www\Outils-MX\calculateur2.php on line 146
    Call Stack
    #	Time	Memory	Function	Location
    1	0.0007	255688	{main}( )	..\index4.php:0
    2	0.0021	299400	include( 'C:\wamp\www\Outils-MX\calculateur2.php' )	..\index4.php:6
    3	0.0023	301992	GetMissionDuration( )	..\calculateur2.php:153
    1
    a titre informatif je recoi les donnee utile pour ces calcul via un formulaire de sélection qui m’envoie bien les donnée que je souhaite du coup je ne comprend pas d'où cela peu venir
    je sais que la division par zero viens d'une variable vide "$Distance"
    et l'autre erreur viens d'une variable qui n'est pas définie dans la page "$Distance"
    pour tant elle sont toutes ces erreur ne devrais être puisque il y a une fonction qui les définie et de plus n'est pas vide a l'origine
    si quelqu'un pouvez m'aider svp je l'en remercie d'avance

    voila le code complet de la page :

    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
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
     
    <?php
    //deplacement de flotte
    	$OrigGalaxy = $_POST['OrigGalaxy'];
    	$DestGalaxy = $_POST['DestGalaxy'];
    	$OrigSystem = $_POST['OrigSystem'];
    	$DestSystem = $_POST['DestSystem'];
    	$OrigPlanet = $_POST['OrigPlanet'];
    	$DestPlanet = $_POST['DestPlanet'];
     
    // technologie
    	$combustion = $_POST['combustion'];
    	$propulsion = $_POST['propulsion'];
    	$impulsion = $_POST['impulsion'];
     
    //temps de vol
    	$depart = $_POST['depart'];
    	$tmp_restant = $_POST['tmp_restant'];
     
    // vaiseaux le plus lent selectionner par fomulaire
    	$vaisseaux = $_POST['vaisseaux'];
     
    //selection du calcul par rapport au vaisseaux selectionner
    		switch( $vaisseaux ) 
    		{	
    			case 'PT':
    				$PT = (10000*10/100)*$_POST['impulsion']+10000;
    				$result = $PT;
    				break;
    			case 'GT':
    				$GT = (7500*10/100)*$_POST['combustion']+7500;
    				$result = $GT;
    				break;
    			case 'Chasseur_leger':
    				$Chasseur_leger = (12500*10/100)*$_POST['combustion']+12500;
    				$result = $Chasseur_leger;
    				break;
    			case 'Chasseur_lourd':
    				$Chasseur_lourd = (10000*20/100)*$_POST['impulsion']+10000;
    				$result = $Chasseur_lourd;
    				break;
    			case 'Croiseur':
    				$Croiseur = (15000*20/100)*$_POST['impulsion']+15000;
    				$result = $Croiseur;
    				break;
    			case 'VB':
    				$VB = (10000*30/100)*$_POST['propulsion']+10000;
    				$result = $VB;
    				break;
    			case 'Colo':
    				$Colo = (2500*20/100)*$_POST['impulsion']+2500;
    				$result = $Colo;
    				break;
    			case 'Recycleur':
    				$Recyleur = (2000*10/100)*$_POST['combustion']+2000;
    				$result = $Recycleur;
    				break;
    			case 'Sonde':
    				$Sonde = (100000000*10/100)*$_POST['combustion']+100000000;
    				$result = $Sonde;
    				break;
    			case 'Bomb':
    				$Bomb = (5000*30/100)*$_POST['propulsion']+5000;
    				$result = $Bomb;
    				break;
    			case 'Destro':
    				$Destro = (5000*30/100)*$_POST['propulsion']+5000;
    				$result = $Destro;
    				break;
    			case 'Rip':
    				$Rip = (100*30/100)*$_POST['propulsion']+100;
    				$result = $Rip;
    				break;
    			case 'Traquos':
    				$Traquos = (10000*30/100)*$_POST['propulsion']+10000;
    				$result = $Traquos;
    				break;
    			case 'Supernova':
    				$Supernova = (300*30/100)*$_POST['propulsion']+300;
    				$result = $Supernova;
    				break;
    			case 'Attack':
    				$Attack = (5000*30/100)*$_POST['propulsion']+5000;
    				$result = $Attack;
    				break;
    			case 'Dart':
    				$Dart = (2000*30/100)*$_POST['propulsion']+2000;
    				$result = $Dart;
    				break;
    			case 'C_rep':
    				$C_rep = (150*30/100)*$_POST['propulsion']+150;
    				$result = $C_rep;
    				break;
    			case 'Explorateur':
    				$Explorateur = 40;
    				$result = $Explorateur;
    				break;
    			case 'Cite':
    				$Cite = (100*30/100)*$_POST['propulsion']+100;
    				$result = $Cite;
    				break;
    			case 'Extracteur':
    				$Extracteur = (10000*20/100)*$_POST['impulsion']+10000;
    				$result = $Extracteur;
    				break;
    			case 'Jumper':
    				$Jumper = (10500*30/100)*$_POST['propulsion']+10500;
    				$result = $Jumper;
    				break;
    	default: 
    		echo 'une erreur est arriver lors du calcul merci de recommencer, si le probleme persiste contacter l\'admin du site';
    			}
     
    echo 'og :'.$OrigGalaxy.'<br>dg :' .$DestGalaxy.'<br>os :' .$OrigSystem.'<br>ds :' .$DestSystem.'<br>op :' .$OrigPlanet.'<br>dp :' .$DestPlanet.'<br>';
    echo 'comb :'.$combustion.'<br>prop :' .$propulsion.'<br>imp :' .$impulsion.'<br>dep :' .$depart.'<br>tmp rest :' .$tmp_restant.'<br>vaisseaux :' .$vaisseaux.'';
     
    // calcul de distance
    function GetTargetDistance ($OrigGalaxy, $DestGalaxy, $OrigSystem, $DestSystem, $OrigPlanet, $DestPlanet)
     
    {
        $Distance = 0;
     
        if (($OrigGalaxy - $DestGalaxy) != 0)
            $Distance = abs($OrigGalaxy - $DestGalaxy) * 20000;
        elseif (($OrigSystem - $DestSystem) != 0)
            $Distance = abs($OrigSystem - $DestSystem) * 5 * 19 + 2700;
        elseif (($OrigPlanet - $DestPlanet) != 0)
            $Distance = abs($OrigPlanet - $DestPlanet) * 5 + 1000;
        else
            $Distance = 5;
     
        return $Distance;
     
    } 
     
    // vitesse du joueur
    $GameSpeed = 100;
    $MaxFleetSpeed = $result;
    $SpeedFactor = $MaxFleetSpeed/2500;
     
    //resultat final en temps a donnee a l'utilisateur
    //$temps*=*round(((35000*/*$GameSpeed***sqrt($Distance***10*/*$MaxFleetSpeed)*+*10)*/*$SpeedFactor));
     
    function GetMissionDuration ($GameSpeed, $MaxFleetSpeed, $Distance, $SpeedFactor)
    {
        //$Duration = 0;
        $Duration = round(((35000 / $GameSpeed * sqrt($Distance * 10 / $MaxFleetSpeed) + 10) / $SpeedFactor));
        return $Duration;
    } 
     
    echo '<br>'.$GameSpeed.'<br>' .$MaxFleetSpeed.'<br> '.$SpeedFactor.'<br> distance :';
    echo GetTargetDistance($OrigGalaxy, $DestGalaxy, $OrigSystem, $DestSystem, $OrigPlanet, $DestPlanet);
    echo '<br>&nbsp;<br> duration :';
    echo GetMissionDuration($GameSpeed, $Distance, $MaxFleetSpeed, $SpeedFactor);
    //echo '<br>' . $temps;
    ?>

  2. #2
    Membre averti Avatar de Vice555
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 19
    Par défaut déclaration variables
    Je pense que tu devrais déclarer tes variables, hors des fonctions, c'est pour cela que tu as ses erreurs malgré qu'elles aient une valeur dans une fonction.

    De plus si tu initialises ta variables à 0 et que tu as une division à faire ... Ne l'initialise pas à 0, cherche une valeur que tu pourrais initialiser autre que 0

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Le $Distance que tu utilises dans la fonction, n'existe pas en dehors de la fonction.
    Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $Distance  = GetTargetDistance($OrigGalaxy, $DestGalaxy, $OrigSystem, $DestSystem, $OrigPlanet, $DestPlanet);
    echo '<br>'.$GameSpeed.'<br>' .$MaxFleetSpeed.'<br> '.$SpeedFactor.'<br> distance :' . $Distance;
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Août 2015
    Messages : 93
    Par défaut
    j'avais essayè de le déclarer de la façon suivante mais cela me causer une erreur aussi du coup je seché !
    en fait je m’aperçois que j'ai pas réfléchi sur ce coup là
    j'ai essaye d'affiché le résultat tous en déclarant la variable donc erreur
    merci pour vos réponses
    sujet résolu
    +1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo ''$Distance  = GetTargetDistance($OrigGalaxy, $DestGalaxy, $OrigSystem, $DestSystem, $OrigPlanet, $DestPlanet)'';

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

Discussions similaires

  1. Erreur division par zero sélection colonne
    Par Jordywolf dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/08/2013, 12h14
  2. Réponses: 4
    Dernier message: 29/07/2013, 12h05
  3. Erreur division par zero
    Par nancy38 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/03/2013, 13h00
  4. [QReport] Erreur "division par zero en virgule flottante"
    Par dj_techno dans le forum QuickReport
    Réponses: 6
    Dernier message: 26/09/2008, 18h05
  5. Erreur divisée par zero
    Par winow dans le forum C++Builder
    Réponses: 2
    Dernier message: 20/09/2007, 21h44

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