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 :

Problème de production [gestion de temps etc..] [MySQL]


Sujet :

PHP & Base de données

  1. #21
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Toujours la même question
    est-ce que mon code calcule bien le temps écoulé entre deux actions ?
    Visiblement vous inscrivez le temps pour chaque mine, est-ce que ça a un intérêt par rapport aux règles de votre jeu ?
    Si vous gardez un temps pour chaque mine, alors il faut le mettre à jour manuellement lors de la "recolte", le "ON UPDATE" ne se produisant puisque la table des mines_joueur n'est pas mise à jour.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  2. #22
    Futur Membre du Club Avatar de Lothaliel
    Homme Profil pro
    IT Project Manager
    Inscrit en
    Juillet 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : IT Project Manager
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Je n’arrive pas à mettre cela en place. J’aimerai avoir beaucoup plus d’explications sur la manière de faire cela ?

    PS - Le temps sera le meme pour chaque mine. Il sera aussi le meme pour l’heure de la derniere actualisation.

  3. #23
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Je n’arrive pas à mettre cela en place.
    Enfin la question était simple pourtant et je ne peux pas y répondre à ta place.

    Mettez le temps dans les ressources du joueur (puisque pour l'instant vous n'avez qu'une ligne de ressource par joueur).
    Avec le "ON UPDATE CURRENT_TIMESTAMP" le temps se mettre à jour quand les ressources seront mises à jour.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #24
    Nouveau membre du Club
    Homme Profil pro
    Autre
    Inscrit en
    Mai 2016
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mai 2016
    Messages : 64
    Points : 26
    Points
    26
    Par défaut
    Bonjour, bon nous avons fait plusieurs modifications, la nous avons une meilleur production lol mais toujours des bugs.
    La je vois que sa double chaque chiffre,1/2/4/8/16/32/64/128 etc...
    - A chaque fois que j'actualise il me sort des chiffres assez incroyable quand même de zéro en 5 clic et donc 5 secondes je peux être a des millions.
    Donc voici le dernier que l'on a testé!

    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
    <?php
     
    	require_once 'connexion_bdd.php';
    	$planete_utilise=htmlentities($_SESSION['planete_utilise']);
    	$id_membre=htmlentities($_SESSION['id']);
     
    		$mine=$bdd->prepare('SELECT * FROM mines_joueur WHERE id_planete = ? AND id_mine = ?'); // RECUPERE LES INFOS POUR LA MINE 1 : MINE OR
    		$mine->execute(array($planete_utilise,1));
    		$mine_o=$mine->fetch();
     
    		$mine=$bdd->prepare('SELECT * FROM mines_joueur WHERE id_planete = ? AND id_mine = ?'); // RECUPERE LES INFOS POUR LA MINE 2 : MINE TITANE
    		$mine->execute(array($planete_utilise,2));
    		$mine_t=$mine->fetch();
     
    		$mine=$bdd->prepare('SELECT * FROM mines_joueur WHERE id_planete = ? AND id_mine = ?'); // RECUPERE LES INFOS POUR LA MINE 3 : MINE ORINIA
    		$mine->execute(array($planete_utilise,3));
    		$mine_c=$mine->fetch();
     
    		$mine=$bdd->prepare('SELECT * FROM mines_joueur WHERE id_planete = ? AND id_mine = ?'); // RECUPERE LES INFOS POUR LA MINE 4 : MINE CRISTAL
    		$mine->execute(array($planete_utilise,4));
    		$mine_orinia=$mine->fetch();
     
    		$mine=$bdd->prepare('SELECT * FROM mines_joueur WHERE id_planete = ? AND id_mine = ?'); // RECUPERE LES INFOS POUR LA MINE 5 : MINE ORINIUM
    		$mine->execute(array($planete_utilise,5));
    		$mine_orinium=$mine->fetch();
     
    		$mine=$bdd->prepare('SELECT * FROM mines_joueur WHERE id_planete = ? AND id_mine = ?'); // RECUPERE LES INFOS POUR LA MINE 6 : MINE MATIERE ORGANIQUE
    		$mine->execute(array($planete_utilise,6));
    		$mine_org=$mine->fetch();
     
    		// RECUPERE STOCK DE Ressources
    		$ress=$bdd->prepare('SELECT * FROM ressource WHERE id_planete = ? AND id_membre = ?'); // RECUPERE LES INFOS DE STOCK
    		$ress->execute(array($planete_utilise,$id_membre));
    		$r=$ress->fetch();
     
    	$heureactuelle 				= time();
    	$derniereActualisation 			= strtotime($r['temps']); // Récupération du temps depuis la dernière actualisation dans la BDD
     
    	$reserve_or				= $r['gold']; // Récupération de l'or possédé par le joueur dans la BDD
    	$reserve_titane				= $r['titane']; // Récupération du titane possédé par le joueur dans la BDD
    	$reserve_cristal			= $r['cristal']; // Récupération du cristal possédé par le joueur dans la BDD
    	$reserve_orinia				= $r['orinia']; // Récupération de l'orinia possédé par le joueur dans la BDD
    	$reserve_orinium			= $r['orinium']; // Récupération de l'orinium possédé par le joueur dans la BDD
    	$reserve_matiere_organique		= $r['organique']; // Récupération de la matière organique possédé par le joueur dans la BDD
     
    	$production_base_or 			= 15; // Or produites par heure.
    	$production_base_titane 		= 25; // Titane produites par heure.
    	$production_base_cristal 		= 15; // Cristal produites par heure.
    	$production_base_orinia 		= 5; // Orinia produites par heure.
    	$production_base_orinium 		= 10; // Orinium produites par heure.
    	$production_base_matiere_organique 	= 65; // Matière Organique produites par heure.
     
    	$nombre_ouvrier_or			= $mine_o['ouvrier']; // Récupération du nombre d'ouvrier de la mine d'or dans la BDD
    	$nombre_ouvrier_titane			= $mine_t['ouvrier']; // Récupération du nombre d'ouvrier de la mine de titane dans la BDD
    	$nombre_ouvrier_cristal			= $mine_c['ouvrier']; // Récupération du nombre d'ouvrier de la mine de cristal dans la BDD
    	$nombre_ouvrier_orinia			= $mine_orinia['ouvrier']; // Récupération du nombre d'ouvrier de la mine d'orinia dans la BDD
    	$nombre_ouvrier_orinium			= $mine_orinium['ouvrier']; // Récupération du nombre d'ouvrier de la mine d'orinium dans la BDD
    	$nombre_ouvrier_matiere_organique	= $mine_org['ouvrier']; // Récupération du nombre d'ouvrier de la mine de matière organique dans la BDD
     
    	$production_ouvrier			= 1; // Ressources produites par heure grâce à un ouvrier.
     
    	$nombre_esclave_or			= $mine_o['esclave'] ; // Récupération du nombre d'esclave de la mine d'or dans la BDD
    	$nombre_esclave_titane			= $mine_t['esclave']; // Récupération du nombre d'esclave de la mine de titane dans la BDD
    	$nombre_esclave_cristal			= $mine_c['esclave']; // Récupération du nombre d'esclave de la mine de cristal dans la BDD
    	$nombre_esclave_orinia			= $mine_orinia['esclave']; // Récupération du nombre d'esclave de la mine d'orinia dans la BDD
    	$nombre_esclave_orinium			= $mine_orinium['esclave']; // Récupération du nombre d'esclave de la mine d'orinium dans la BDD
    	$nombre_esclave_matiere_organique	= $mine_org['esclave']; // Récupération du nombre d'esclave de la mine de matière organique dans la BDD
     
    	$production_esclave			= 2; // Ressources produites par heure grâce à un esclave.
     
    // On mets les ressources du joueur à jour :
     
    	$OrDuJoueur 			= $reserve_or + (($heureactuelle - $derniereActualisation) * ($production_base_or / 3600) + (($nombre_ouvrier_or * $production_ouvrier) / 3600) + (($nombre_esclave_or * $production_esclave) / 3600));
    	$TitaneDuJoueur 		= $reserve_titane + (($heureactuelle - $derniereActualisation) * ($production_base_titane / 3600) + (($nombre_ouvrier_titane * $production_ouvrier) / 3600) + (($nombre_esclave_titane * $production_esclave) / 3600));
    	$CristalDuJoueur 		= $reserve_cristal + (($heureactuelle - $derniereActualisation) * ($production_base_cristal / 3600) + (($nombre_ouvrier_cristal * $production_ouvrier) / 3600) + (($nombre_esclave_cristal * $production_esclave) / 3600));
    	$OriniaDuJoueur 		= $reserve_orinia + (($heureactuelle - $derniereActualisation) * ($production_base_orinia / 3600) + (($nombre_ouvrier_orinia * $production_ouvrier) / 3600) + (($nombre_esclave_orinia * $production_esclave) / 3600));
    	$OriniumDuJoueur 		= $reserve_orinium + (($heureactuelle - $derniereActualisation) * ($production_base_orinium / 3600) + (($nombre_ouvrier_orinium * $production_ouvrier) / 3600) + (($nombre_esclave_orinium * $production_esclave) / 3600));
    	$Matiere_organiqueDuJoueur 	= $reserve_matiere_organique + (($heureactuelle - $derniereActualisation) * ($production_base_matiere_organique / 3600) + (($nombre_ouvrier_matiere_organique * $production_ouvrier) / 3600) + (($nombre_esclave_matiere_organique * $production_esclave) / 3600));
     
    	// UP dans la BDD des nouvelles ressources
    	$mineo=$bdd->prepare('UPDATE ressource SET gold = gold+?, titane=titane+?, cristal=cristal+?, orinia=orinia+?, orinium=orinium+?, organique=organique+? WHERE id_planete = ? AND id_membre = ?');
    	$mineo->execute(array($OrDuJoueur,$TitaneDuJoueur,$CristalDuJoueur,$OriniaDuJoueur,$OriniumDuJoueur,$Matiere_organiqueDuJoueur,$planete_utilise,$id_membre));
     
    	//UP du temps dans la BDD
    	$up=$bdd->prepare('UPDATE ressource SET temps = NOW() WHERE id_membre = ? AND id_planete = ?');
    	$up->execute(array($id_membre,$planete_utilise));
     
    	//----SECOND QUI A ETE ESSAYE--------//
    	/*
    	//UP du temps dans la BDD
    	$up=$bdd->prepare('UPDATE ressource SET temps = (ON UPDATE CURRENT_TIMESTAMP) WHERE id_membre = ? AND id_planete = ?');
    	$up->execute(array($id_membre,$planete_utilise));
    
    	*/
    ?>
    Et voici le SQL de la table:

    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
    -- phpMyAdmin SQL Dump
    -- version 4.0.10.14
    -- http://www.phpmyadmin.net
    --
    -- Client: localhost:3306
    -- Généré le: Lun 01 Août 2016 à 13:27
    -- Version du serveur: 10.0.26-MariaDB
    -- Version de PHP: 5.4.31
     
    SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
    SET time_zone = "+00:00";
     
     
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8 */;
     
    --
    -- Base de données: `weblobsd_test`
    --
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `ressource`
    --
     
    CREATE TABLE IF NOT EXISTS `ressource` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `gold` decimal(11,0) unsigned DEFAULT NULL,
      `cristal` decimal(11,0) unsigned DEFAULT NULL,
      `titane` decimal(11,0) unsigned DEFAULT NULL,
      `orinia` decimal(11,0) unsigned DEFAULT NULL,
      `orinium` decimal(11,0) unsigned DEFAULT NULL,
      `energie` decimal(11,0) unsigned DEFAULT NULL,
      `organique` decimal(11,0) unsigned DEFAULT NULL,
      `temps` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      `id_planete` int(11) DEFAULT NULL,
      `id_membre` int(11) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
     
    --
    -- Contenu de la table `ressource`
    --
     
    INSERT INTO `ressource` (`id`, `gold`, `cristal`, `titane`, `orinia`, `orinium`, `energie`, `organique`, `temps`, `id_planete`, `id_membre`) VALUES
    (1, '1031', '8', '16', '0', '8', '3000', '40', '2016-08-01 11:25:47', 1, 1),
    (2, '99999998975', '99999999389', '99999999453', '99999999154', '99999999999', '900', '99999999999', '2016-08-01 11:10:49', 2, 2),
    (3, '91909402', '91902250', '153151950', '30626142', '61249500', '1000', '398121735', '2016-08-01 11:10:49', 3, 3),
    (4, '145540', '13938', '16266', '5532', '0', '1000', '0', '2016-08-01 11:10:49', 4, 4);
     
    /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
    /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
    /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
    Au niveau de la BDD on a essayé avec la valeur NULL : 00:00:00:00
    Cela faisait pareil

    Cordialement,

  5. #25
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Au niveau mathématique ça serait plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $reserve_or += ($heureactuelle - $derniereActualisation) * ($production_base_or + ($nombre_ouvrier_or * $production_ouvrier) + ($nombre_esclave_or * $production_esclave)) / 3600;
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #26
    Nouveau membre du Club
    Homme Profil pro
    Autre
    Inscrit en
    Mai 2016
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mai 2016
    Messages : 64
    Points : 26
    Points
    26
    Par défaut
    D'accord j'essaie pour le reste cela semble bon? niveau BDD et requête d'update?

  7. #27
    Nouveau membre du Club
    Homme Profil pro
    Autre
    Inscrit en
    Mai 2016
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mai 2016
    Messages : 64
    Points : 26
    Points
    26
    Par défaut
    Bon je confirme c'était aussi les calculs pas bon, j'ai viré surtout réserve au début car il prenait en compte la réserve. Me semblait pas logique et la je crois que sa fonctionne, je test sur 01heure et je vais voir cela me semble bon

    merci!

  8. #28
    Futur Membre du Club Avatar de Lothaliel
    Homme Profil pro
    IT Project Manager
    Inscrit en
    Juillet 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : IT Project Manager
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Pour le moment cela fonctionne bien

    PS - Je tiens à te féliciter sabotage pour ton délai de réponse à nos questions et aussi pour tes explications qui nous ont bien aidées.

  9. #29
    Nouveau membre du Club
    Homme Profil pro
    Autre
    Inscrit en
    Mai 2016
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mai 2016
    Messages : 64
    Points : 26
    Points
    26
    Par défaut
    merci oui! Production opérationnelle!

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. problème avec la gestion du temps
    Par jurams dans le forum SDL
    Réponses: 10
    Dernier message: 08/07/2011, 10h24
  2. [SDL-jeux]problème gestion de temps
    Par men1n2 dans le forum SDL
    Réponses: 33
    Dernier message: 13/11/2007, 18h06
  3. Aide pour l'analyse d'un problème de gestion de temps
    Par PAINCO dans le forum Décisions SGBD
    Réponses: 8
    Dernier message: 03/06/2005, 15h49
  4. [VB.NET] Gestion en temps réel d'une bdd access
    Par qwiskas dans le forum Windows Forms
    Réponses: 6
    Dernier message: 12/02/2005, 19h37
  5. fonction de gestion du temps
    Par fati dans le forum C
    Réponses: 5
    Dernier message: 26/12/2002, 16h32

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