Executer un code php au bout d'un moment.

Fermé
Utilisateur anonyme - 16 févr. 2011 à 20:13
 Utilisateur anonyme - 18 févr. 2011 à 19:28
Bonjour,

je souhaite créer un jeu par navigateur et pour cela il faut faire le temps de construction.
Savez-vous comment faire pour que au moment où la personne clique sur le bouton, cela enclenche un script qui au bout d'un temps définit dans une BDD exécute un autre script (entre autre pour moi une requette SQL)...

Merci d'avance.
Cordialement, Louchton.


A voir également:

4 réponses

avion-f16 Messages postés 19250 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 22 décembre 2024 4 505
16 févr. 2011 à 22:45
Salut.

Pourquoi ne pas simplement stocker la date au moment où la construction a été demandée ?

Pour savoir si la chose est construite, il suffira de vérifié si la date du début de la création + le temps nécessaire à celle-ci soit antérieure à la date au moment de l'exécution du script.
1
Utilisateur anonyme
17 févr. 2011 à 17:57
Comment faire ?
0
avion-f16 Messages postés 19250 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 22 décembre 2024 4 505
Modifié par avion-f16 le 18/02/2011 à 18:05
Tu peux utiliser le timestamp ou les dates en SQL.
https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/915206-les-dates-en-sql

Le timestamp est le nombre de secondes écoulées depuis le 01/01/1970.
Ce nombre peut représenter n'importe quel moment après cette date.
En faisant la différence de timestamp entre deux moment, on obtient le nombre de secondes entre ces deux moment.
En PHP, tu peux l'obtenir avec la fonction time() ou la variable $_SERVER['REQUEST_TIME']
0
Utilisateur anonyme
17 févr. 2011 à 10:49
salut,

bouton ->
fonction javascript->
fonction setTimeout()->
temps ecroulé ->
iframe->
modification du src->
page php->
code php ->
execution du code sql->
retour du resultat avec parent (javascript)->
affichage dans la page actuelle

tout se fait dans la même page à toi de jouer. construit ton code
hop le chrono est lancé dans quelques temps ce post disparaitra si tu n'as pas trouvé de code ^^
@+
0
Utilisateur anonyme
17 févr. 2011 à 17:53
JavaScript c'est pas mon truc !! Moi c'est PHP et SQL !!
0
et tu es un programmeur ! Tu ne maitrises pas l'orienté objet proprement dit pour des applications web , le php et sql c'est pour des gamins. Comment tu veux faire un jeux web et gerer le temps sans langage client !
regarde ce code:
page centrale:
<html>  
<head>  
<title> .....</title>  
<script type="text/javascript">  
var time_s=0;  
var minut=0;  
var heur=0;  
function temps(heure,min,sec)  
{  
obj=document.getElementById('temps');  
document.getElementById('temps').style.visibility="visible";  
document.getElementById('bouton').style.visibility="hidden";  
if(time_s>60){  
minut=minut+1;  
time_s=0;  
}  
if(minut>60){  
heur=heur+1;  
minut=0;  
}  


obj.innerHTML="TEMPS "+heur+" : "+minut+" : "+time_s;  
time_s++;  
if(heur==heure&&minut==min&&time_s==sec){  
heur=0;  
minut=0;  
time_s=0;  
document.getElementById('frame1').src="traitement.php";  
}  
else{  
setTimeout("temps("+heure+","+min+","+sec+")",1000);  
}  
}  
function retour(param)  
{  
alert(param);  
document.getElementById('bouton').style.visibility="visible";  
document.getElementById('temps').style.visibility="hidden";  
}  
</script>  
</head>  
<body >  
<div id="temps"></div>  
<input type="button" value="commencer" id="bouton" onclick="temps(0,2,24)" style="position:absolute;left:40%;top:40%;width:15%;height:10%" >  
<!-- je definit le temps à 2min 24 sec tu peux le modifier -->  
<iframe id="frame1" frameborder="no"  ></frame>  
</body>  
</html>  


page php de traitement ( le fichier doit être "traitement.php")

<?php  
//requetes sql   
echo "";  
?>  


des questions ??
sinon il y a un grand nombre de tutos sur javascript, faut penser à aller faire un tour!

@+
0
ben-33 Messages postés 43 Date d'inscription vendredi 18 février 2011 Statut Membre Dernière intervention 21 août 2016
18 févr. 2011 à 13:25
Bonjour,
Personnellement, j'utiliserais plus du XMLHttpRequest qu'une iFrame.
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
Modifié par Reivax962 le 18/02/2011 à 14:03
Bonjour,

Oui, la solution de l'iframe est... d'un autre temps. « Pour les gamins », oserais-je dire.

Xavier
0
ahaha !! "pour les gamins" pour un novice en javascript je ne vais pas commencer par utiliser ajax.
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
18 févr. 2011 à 16:46
Bonjour,

En fait, pour répondre correctement à ta question, il faut déjà qu'on sache si ton jeu se déroule dans un univers persistant ou non.
Posée autrement, ma question revient à :
- est-ce que ton jeu ne se déroule que le temps que le navigateur du client est ouvert, ou continue-t-il indépendamment de ses connexions ?

Suivant ta réponse, on s'orientera vers une solution côté client ou côté serveur...

Par exemple, dans la solution proposée par eone2, si le joueur ferme son navigateur, l'action n'est plus réalisée. Est-ce gênant ?

Xavier
0
Utilisateur anonyme
18 févr. 2011 à 17:55
Le jeu continue quand le joueur n'est pas connecté... Comme dans Grepolis, Travian, Ogame, Ikariam,...
0
avion-f16 Messages postés 19250 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 22 décembre 2024 4 505
18 févr. 2011 à 18:01
AJAX, qui est un concept permattant de lancer des requêtes sur le serveur et d'en récupérer le résultat si nécessaire, se réalise en Javascript.
Lorsque le navigateur est fermé, le Javascript s'arrête, donc ta requête AJAX ne sera pas exécutée sauf si la page reste ouverte suffisament longtemps.
0
Utilisateur anonyme
18 févr. 2011 à 18:13
Genre construction maximum de 5h30, je pense pas que le client reste connecté 5h30 !!
0
avion-f16 Messages postés 19250 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 22 décembre 2024 4 505
18 févr. 2011 à 18:19
Donc il faudra faire comme je l'ai expliqué plus : stocker la date de la demande de construction en base de données.
Grâce à celle-ci, tu sauras vérifier si c'est terminer ou pas en comparant avec la date à l'exécution du script.
0
Utilisateur anonyme
18 févr. 2011 à 18:27
Comment faire pour stoker la date, j'ai oublié !! Franchement, c'est le seul script qui me manque sinon les autres je les ai trouvés seul !! Aussi, j'ai 12 ans donc... Un peut de respect !! Merci pour les réponses et c'est pour ça que je n'utilise presque pas JavaScript !!
0
Utilisateur anonyme
18 févr. 2011 à 19:28
Voila le code que j'ai trouvé :

<?php
//Connexion à MYSQL
$batiment = 'mairie';
$new_level = '25';
//Au moment ou il clique sur le bouton (Un autre truc sur lequel j'ai du mal !! mais bon, ça se trouve !!)
if(*clicage*){
$bdd->exec('INSERT INTO construction (batiment, quel_nouveau_niveau, moment_de_clic) VALUES(\'$batiment\', \'$new_level\', \'NOW()\')');
echo 'La construction a bien été lancée !!';
};
$reponse = $bdd->query('SELECT FROM temps_construction WHERE batiment='$batiment'('$temps')');
$temps_max = moment_de_clic +$temps
if (NOW()=< $temps_max){
$bdd->exec('UPDATE jeux_video SET level_mairie = 10 WHERE login = moi');
}
?>

J'avoue que ce code n'est pas correct mais c'est à peut près ça !!
0