Compte à rebours utilisant des données présentes dans un base de données MySQL
Triice
Messages postés4Date d'inscriptionjeudi 5 février 2009StatutMembreDernière intervention 6 février 2009
-
6 févr. 2009 à 12:10
Triice
Messages postés4Date d'inscriptionjeudi 5 février 2009StatutMembreDernière intervention 6 février 2009
-
6 févr. 2009 à 15:05
Bonjour tout le monde,
C'est un appel au secours!
Pour établir le contexte je suis un parfait débutant Flash/Php/MySql
Et je n'ai rien trouvé de mieux à faire qu'un compte à rebours qui utiliserait une date de début et une date de fin présentes dans une base de donnée.
Mon problème vient du fait qu'après plusieurs essais pour le moins infructueux mon meilleur résultat soit l'affichage de NaN à la place de mes champs de texte dynamiques qui auraient du afficher le temps restant divisé en jours, heures, minutes et secondes.
J'aurais pu donner mon code mais après plusieurs essais cela ressemble plus à de la compote qu'à autre chose.
J'ai vu les codes pour un compte à rebours utilisant actionscript mais il semble que mon problème soit principalement la récupération et bonne utilisation des données présentes dans ma base..
$connexion = mysql_connect($host,$user,$mpasse) or die("Connexion a la base de donnee impossible");
$database = "ma_base";
$db = mysql_select_db($database) or die("La base de donnee n'a pas pu etre selectionnee");
?>
//l'accès à la table concernée
<?php
$req = "SELECT * FROM ma_table WHERE principale='oui'";
$result = mysql_query($req) or die ("La requete n'a pas pu etre executee");
$ligne = mysql_fetch_array($result);
extract($ligne);
?>
Mon code actionscript
var temps = new LoadVars();
temps.load('fonctions.php');
temps.onLoad = function (ok)
{
if(ok)
{
fin_serveur = this.end1;
temps_restant = fin_serveur - this.today;
$connexion = mysql_connect($host,$user,$mpasse) or die("Connexion a la base de donnee impossible");
$database = "ma_base";
$db = mysql_select_db($database) or die("La base de donnee n'a pas pu etre selectionnee");
?>
//l'accès à la table concernée
<?php
$req = "SELECT * FROM ma_table WHERE principale='oui'";
$result = mysql_query($req) or die ("La requete n'a pas pu etre executee");
$ligne = mysql_fetch_array($result);
extract($ligne);
?>
// à vue d'oeil je ne peux pas te dire si ton code php fonctionne : il faut juste qu'il renvoie de bonne variable sous cette forme :
// "nom=bali&prenom=balo&age=10&hobbie=flash" etc...
// de préférence déclares toutes tes variables qui sont dans le onEnterFrame() en début de script sans oublier de les typer !!!
var
fin_serveur :Number;
//etc...
var temps = new LoadVars();
temps.onLoad = function (ok)
{
if(ok)
{
// lorsque tu récupères les variables de ton objet LoadVars, leur type est String !!
// qu'il faut convertir dans le type que tu veux, en l'occurence ici c'est du type Number
fin_serveur = Number( this.end1 );
temps_restant = fin_serveur -
Number(
this.today
)
;
}
};
// de préférence l'appel de ton script doit se faire APRÈS la définition de ta fonction onLoad().
// Ton texte dynamique : tu lui as donné un nom d'instance ou tu l'as associé à un nom de variable du _root ?
// fais attention à cela car l'affichage n'est pas le même
BREF, ton problème vient principalement du "castage". C'est à dire de l'oublie de la conversion du type String en type Number.
Tous les autres commentaire en rouge te permettent d'éviter d'autres bugs
C'est sûr que ça marche maintenant
bali_balo....=]
Triice
Messages postés4Date d'inscriptionjeudi 5 février 2009StatutMembreDernière intervention 6 février 2009 6 févr. 2009 à 14:18
En fait j'ai adressé un nom de variable ET un nom d'occurence et j'avoue ne pas savoir lequel utiliser au préférable.
Et là j'essaie de prendre en compte les conseils donnés. J'aimerais bien que ça marche quand même cette histoire!
Triice
Messages postés4Date d'inscriptionjeudi 5 février 2009StatutMembreDernière intervention 6 février 2009 6 févr. 2009 à 14:33
Une chose que je ne comprends pas (quand je comprends je comprends...mais ça prend son temps!), en faisant monTextField.text = tonString
tonString fait référence à ce que je récupère du php n'est ce pas?
Si je récupère un champ text comment puis-je effectuer mes opérations dans ce cas?
(En tout cas merci pour ton aide fort bienvenue)
Vous n’avez pas trouvé la réponse que vous recherchez ?
$begin1 =
strtotime($debut);
// c'est ma date de début du compte à rebours
$end1 =
strtotime($fin);
// ma date de fin du compte à rebours
Donc ce sont mes variables récupérées en php
Et pour mon flash:
//ma frame 1
var fin_serveur :Number;
var temps_restant :Number;
var debut_serveur :Number;
var jrs :Number;
var hrs :Number;
var min :Number;
var sec :Number;
var temps = new LoadVars();
temps.onLoad = function (ok)
{
if(ok)
{
fin_serveur = Number( this.end1 );
debut_serveur = Number( this.begin1);
temps_restant = fin_serveur - debut_serveur ;
}
};
temps.load("fonctions.php");
//ma frame 2
_root.onEnterFrame = function ()
{
restant = temps_restant;
jrs.text = restant / 86400;
jrs.text = Math.floor(jrs.text);
restant = restant - 86400 * jrs.text;
hrs.text = restant / 3600;
hrs.text = Math.floor(hrs.text);
restant = restant - 3600 * hrs;
min.text = restant / 60;
min.text = Math.floor(min.text);
sec.text = restant - 60 * min.text;
}
//ma frame 3
gotoAndPlay(2);
C'est si mauvais que ça??
Et j'ai obtenu des clignotements.
Donc j'ai supprimé le gotoAndPlay, puis ai tout inséré dans ma première frame, dans une seule image clé. Et là c'est le drame.
Il m'a affiché une série d'erreurs, me disant que .text n'existait pas en gros.