bonjour,
suite à un sujet traité sur le typage des données par php, je code une application en flash et php, où flash demande à php des infos placées dans MySQL.
voici un brin du code qui me pose problème:
Code ActionScript :
//------------------ creation base -----------------------------
// le bouton 'btn_validerNombase' lance une routine de contrôle
// qui va vérifier si le nom de base entré dans la zone de texte
// 'nombase' n'existe pas déjà dans MySQL
//--------------------------------------------------------------
_root.envoiVersBase.btn_validerNombase.onRelease=function(){
//dans la listbox qu'on rend visible,
_root.envoiVersBase.listebases._visible=true;
//on charge des données venant de MySQL transitées par php
// (A) *** *** ***
_root.envoiVersBase.btn_listeBases.onRelease();//va lister le nom des bases
//----------------------------------------------------------
//l'utilisateur peut voir le nombre de bases créées (différents projets)
//dans la zone de texte 'remarque' plutôt que de compter des lignes
//dans la listbox
_root.envoiVersBase.remarque=nbrebases;//temporaire
//routine:
//-------------------------- objectif -------------------------
// on veut comparer le contenu d'une zone de texte appelée 'nombase'
// située dans un clip appelé 'envoiVersBase'
// avec celui de chacun des items du contenu d'une listbox appelée
// 'listebases'
//-------------------------------------------------------------
i=0;
existebase=0;
//on scrute la listbox 'listebases' jusqu'à trouver une ligne...
do{lig=_root.envoiVersBase.listebases.getItemAt(i).label;
//...équivalente au contenu de la zone de texte 'nombase'
if(_root.envoiVersBase.nombase==lig){existebase=1;}
i++;
//on scrute la listbox jusqu'à trouver une ligne vide
}while(lig.length >0)
//si le nom existe déjà, la zone de texte se charge d'un message d'alerte
//prévenant de l'existence de ce nom.
// (B) *** *** ***
if(existbase==1){
_root.envoiVersBase.nombase="<Cette BASE Existe déjà : Refaire !>";
}
// traitement oui ou non de la création de la base
//... code suivra ici
}
Observations:
1) Je constate que l'envoi de la requête par Flash vers php prend un certain temps, même s'il est très rapide.
C'est le point (A) *** *** *** du code.
2) Flash ayant envoyé sa requête continue à lire les lignes de code et effectue le passage (B) *** *** *** dans la foulée.
3a) Or, par test, en envoyant un nom de base déjà existant, Flash ne me répond pas que la base existe déjà...
3b)sauf si je clique une deuxième fois sur le bouton 'btn_validerNombase'.
J'en déduis donc que Flash a parcouru le code en totalité alors que php n'a pas encore rendu toutes les infos.
Existe-t-il un moyen de bloquer Flash, le temps que toutes la requête venant de php soit arrivée dans Flash.
Suite à essai, le .getBytesLoaded n'a pas l'air de faire effet, ni l'usage de 'continue' dans une boucle while ajoutable qui ferait attendre.
Je simplifie maintenant ma demande en ce schéma:
-------------------------------------------
a)Flash envoie une requête à php
b) php traite la requête ET Flash attend la totalité du retour de la requête pour poursuivre son code
c) dès que toutes les infos sont absorbées par Flash, Flash reprend la lecture de son code jusqu'à la dernière ligne
C'est un peu comme un automate qui attend un signal pour reprendre son cycle.
------------------------------------------
Question, est-ce ma logique tient debout ?
Est-elle applicable et comment, sinon, quelle solution ou début de solution possible ?
Merci pour vos éclairages
Ailleurs n'est point ici. D'ailleurs ici ou ailleurs, c'est quand même pas là!