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

Langage PHP Discussion :

Calcul qui ne marche pas


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 22
    Points : 10
    Points
    10
    Par défaut Calcul qui ne marche pas
    Bonsoir,

    J'ai crée un script qui doit celon le resultat calculé modifier des donnees de ma BDD. Mais le souci c'est qu'il passe au Else.

    Voici le script en question:

    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
    <?php
     
    session_start();
     
    require('config.php');
     
    if( isset($_SESSION['id']) )
    {
                    $id = intval($_SESSION['id']);
                    $sql = 'SELECT mine_or FROM batiment WHERE id=' . $id;
                    $req = mysql_query($sql) or die (mysql_error());                
                    $mine_or = mysql_result($req, 0, mine_or);       
     
                    $sql = 'SELECT titane, population FROM ressources WHERE id=' . $id;
                    $result = mysql_query($sql) or die(mysql_error());            
                    $titane = mysql_result($result, 0, titane);
                    $pop = mysql_result($result, 0, population);
     
                    $mult_cal1= ($mine_or * $mine_or) * $mine_or;
                    $mult_cal2= $mult_cal1 * 10;
                    $calcul= $mult_cal2 / 2;
                    $calcul1= $pop + 1 ;
                    $calcul2= $mult_cal1;
                    $level= $mine_or + 1 ;
     
                    if( isset($_SESSION['logged']) && $_SESSION['logged'] === true )
     
                    {
     
                                    if( $titane >= $calcul && $pop >= $calcul1)
                                    {
                                                    $sql = 'UPDATE ressources SET titane=titane-'.$calcul.', population=population-'.$calcul1.' WHERE id=' . $id;        
                                                    $req = mysql_query($sql) or die (mysql_error());
     
                                                    $sql = 'UPDATE batiment SET mine_or='.$level.' WHERE id=' . $id;
                                                   $req = mysql_query($sql) or die (mysql_error());
     
                                                   $sql = 'UPDATE membres SET points=points+'.$calcul2.' WHERE id=' . $id;
                                                   $req = mysql_query($sql) or die (mysql_error());
                                            echo '<p>Vous venez d\'ameliorer votre batiment.<br /><a href="../batiment.php">Cliquer ici pour retourner au site</a></p>';
                                    }
     
                                    else
                                    {
                                    echo' Vous n\'avez pas assez de ressources </br>
                                    <a href="index.php">Cliquer ici pour retourner au site</a>';
                                    }
                                    }
                                    }
                                    ?>
    Je voudrait donc savoir si mon bug vien de mon calcul où de mes variable (mauvaise utilisation). Et comment le resoudre.

    Merci d'avance

  2. #2
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    En faisant comme ceci :
    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
    <?php
     
    session_start();
     
    require('config.php');
     
    if( isset($_SESSION['id']) )
    {
                    $id = intval($_SESSION['id']);
                    $sql = 'SELECT mine_or FROM batiment WHERE id=' . $id;
                    $req = mysql_query($sql) or die (mysql_error());                
                    $row = mysql_fetch_array($req);
                    $mine_or = $row['mine_or'];       
                    
                    $sql = 'SELECT titane, population FROM ressources WHERE id=' . $id;
                    $result = mysql_query($sql) or die(mysql_error());            
                    $row = mysql_fetch_array($result);
                    $titane = $row['titane'];
                    $pop = $row['population'];
                    
                    $mult_cal1= ($mine_or * $mine_or) * $mine_or;
                    $mult_cal2= $mult_cal1 * 10;
                    $calcul= $mult_cal2 / 2;
                    $calcul1= $pop + 1 ;
                    $calcul2= $mult_cal1;
                    $level= $mine_or + 1 ;
                    
                    if( isset($_SESSION['logged']) && $_SESSION['logged'] === true )
                    
                    {
                    
                                    if( $titane >= $calcul && $pop >= $calcul1)
                                    {
                                                    $sql = 'UPDATE ressources SET titane=titane-'.$calcul.', population=population-'.$calcul1.' WHERE id=' . $id;        
                                                    $req = mysql_query($sql) or die (mysql_error());
                                    
                                                    $sql = 'UPDATE batiment SET mine_or='.$level.' WHERE id=' . $id;
                                                   $req = mysql_query($sql) or die (mysql_error());
                                                   
                                                   $sql = 'UPDATE membres SET points=points+'.$calcul2.' WHERE id=' . $id;
                                                   $req = mysql_query($sql) or die (mysql_error());
                                            echo '<p>Vous venez d\'ameliorer votre batiment.<br /><a href="../batiment.php">Cliquer ici pour retourner au site</a></p>';
                                    }
                                    
                                    else
                                    {
                                    echo' Vous n\'avez pas assez de ressources </br>
                                    <a href="index.php">Cliquer ici pour retourner au site</a>';
                                    }
                                    }
                                    }
                                    ?>

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 22
    Points : 10
    Points
    10
    Par défaut
    Ben je vois aucune difference entre ton script et le mien .

  4. #4
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    As-tu testé au moins ? La différence est entre la récupération des données depuis la bdd. Ce qui est le problème dans ton code à mon avis. Pour un test, gardes ta première version et fais un echo de, par exemple, $mine_or juste après la récupération.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 22
    Points : 10
    Points
    10
    Par défaut
    Il y a quelque chose car en faite celui ci est un test d'amelioration d'un script qui marche (et qui utilise les meme variable). C'est pour ca que je trouve bizarre que ca ne marche pas.

  6. #6
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Juste comme ca : comment une variable peut etre supérieur à une autre si tu la définis en inférieur. Je m'explique. Tu mets ceci :
    Et plus bas tu testes $pop >= $calcul c'est logiquement impossible

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 22
    Points : 10
    Points
    10
    Par défaut
    Ben moi je trouve ca assez logique (bon aussi c'est moi qui l'est fait )

    Car ce n'est pas la meme variable vu que je l'est modifier. Et puis ce n'est pas juste egale c'est superieur ou egale.

    Sinon je ne vois pas quoi faire d'autre.

    P.S: Non mais dans mon script avant il n'y avé pas ces calcul ^^

  8. #8
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Voici la logique :

    $pop a une valeur bien précise, par exemple 5.
    Tu mets dans $calcul1, $pop +1 ce qui fait que $calcul1 sera égale à 6.
    C'est un exemple. Mais la logique dit que si tu fais ceci, calcul1 sera TOUJOURS supérieur de 1 à $pop. Donc condition de test Illogique

    Donc ca
    C'est faux d'où la redirection else

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 22
    Points : 10
    Points
    10
    Par défaut
    C'est bon j'ai trouvez ^^ . Merci de ton aide.

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

Discussions similaires

  1. Requete avec champs calculés qui ne marche pas
    Par The_Super_Steph dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 05/06/2007, 15h39
  2. [SWING] KeyListener qui ne marche pas
    Par kindool dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 10/01/2005, 20h04
  3. Iptables configuration qui ne marche pas....
    Par The_Nail dans le forum Sécurité
    Réponses: 7
    Dernier message: 03/02/2004, 15h27
  4. Réponses: 3
    Dernier message: 08/09/2003, 16h06
  5. Réponses: 9
    Dernier message: 07/05/2003, 13h57

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