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

ActionScript 3 Discussion :

sendAndLoad et array multidimensionnel


Sujet :

ActionScript 3

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 33
    Par défaut sendAndLoad et array multidimensionnel
    Salut

    Je cherche a envoyer un grand lot de variables (240) à un fichier PHP, via la méthode sendAndLoad. Jusque là pas de souci, vu que ca ressemble fortement à de l'AJAX. Mais pour avoir un code plus propre (oui je suis maniaque ^^), je préférerai envoyer toutes ces variables via un tableau à 3 dimensions associatif.

    Mon probleme c'est que je ne suis pas sur de l'équivalence syntaxique en AS de mon tableau PHP, dont voici un extrait :
    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
    //initilisation du tableau...
    $repas = array ("petit dej", 
    		"dej", 
    		"gouter/colation", 
    		"diner");
     
    	$tableau_repas = array ("J-2" => $repas, 
    				"J-1" => $repas, 
    				"J-1" => $repas);
     
    //... puis remplissage
    	/* J-2 */
    $tableau_repas["J-2"]["petit dej"] = array (
    	$j2_ptitdej_nom1 => $a_b_qté1, //nom aliment => qté
    	$j2_ptitdej_nom2 => $j2_ptitdej_qté2, //...
    	$j2_ptitdej_nom3 => $j2_ptitdej_qté3, 
    	$j2_ptitdej_nom4 => $j2_ptitdej_qté4, 
    	$j2_ptitdej_nom5 => $j2_ptitdej_qté5, 
    	$j2_ptitdej_nom6 => $j2_ptitdej_qté6, 
    	$j2_ptitdej_nom7 => $j2_ptitdej_qté7, 
    	$j2_ptitdej_nom8 => $j2_ptitdej_qté8, 
    	$j2_ptitdej_nom9 => $j2_ptitdej_qté9, 
    	$j2_ptitdej_nom10 => $j2_ptitdej_qté10);
     
    $tableau_repas["J-2"]["Dej"] = array (
    	$a_b_nom1 => $a_b_qté1, //nom aliment => qté
    	$a_b_nom2 => $a_b_qté2, //...
    	$a_b_nom3 => $a_b_qté3, 
    	$a_b_nom4 => $a_b_qté4, 
    	$a_b_nom5 => $a_b_qté5, 
    	$a_b_nom6 => $a_b_qté6, 
    	$a_b_nom7 => $a_b_qté7, 
    	$a_b_nom8 => $a_b_qté8, 
    	$a_b_nom9 => $a_b_qté9, 
    	$a_b_nom10 => $a_b_qté10);
     
    //etc
    • Pourriez-vous m'aidez a le convertir en AS pour qu'il reste aussi présentable, svp.


    De plus, je ne pense pas qu'un tableau puissent etre envoyé correctement à mon fichier php via ce code :
    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
    /* Code Action Script */
    var envoie_DATA:LoadVars = new LoadVars();//on déclare un objet d'envoi (instancié avec la classe LoadVars)
     
    /* on ajoute les variables à envoyer */
    envoie_DATA.qui = 11;//indique a php que c'est pour l'algo peau
    envoie_DATA.age = 0; envoie_DATA.taille = 0; envoie_DATA.poid = 0; //profil
    envoie_DATA. = 0; envoie_DATA. = 0; envoie_DATA. = 0; //
    envoie_DATA.tableau_repas:Array = repas;//tableau a creer !
     
    var resultat:LoadVars = new LoadVars();//on déclare un objet de réception
    resultat.onLoad = function(success:Boolean)
    	{//fonction qui s'exécute lorsque l'objet resultat reçoit l'information que les données ont été chargées("success" est un booléen qui est automatiquement renvoyé par onLoad).
    		if (success)//les données ont été correctement chargées
    		{
    			//
    			//ici la lecture du fichier xml généré...
    			//
    		}
    		else//en cas d'échec de la connexion
    		{
    			trace("la connexion a échoué");//message d'erreur pour test, par exemple
    		}
    	};
     
    envoie_DATA.sendAndLoad(fichier_cible_PHP, resultat, "POST");//on envoit les données à PHP avec la méthode sendAndLoad
    //paramètre 1 : le script php cible //paramètre 2 : un objet LoadVars récepteur //la méthode d'envoi (POST ou GET)
    • Y a t il une méthode spéciale pour envoyer un tableau via sendAndLoad ?


    merci d'avance

  2. #2
    Membre chevronné Avatar de IP-Fix
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    421
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 421
    Par défaut
    c est de l as2 ton code, utilise URLRequest ( Google ) URLVariable ( Google ).

    Ensuite pour envoyer un vrai tableau oriente toi vers amfphp qui permet d echanger de vrais objet de php a flash. Sinon echange tes informations avec un format comprehensible par les deux comme le xml ou un string.

    Bon courage =)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 33
    Par défaut
    Merci pour ta réponse !

    Vu que je n'ai que 4-5 tableaux à envoyer je ne vais pas utiliser amfphp, ca me semble un peu disproportionné : tant pis, je vais lister les variables ds mon POST.

    Par contre, peux tu m'indiquer qu'est ce qui est mal écrit pour que ce soit de l'AS3, ou sont mes erreurs ?

    Et pourquoi m'orientes-tu vers URLRequest/URLVariable, sendAndLoad n'est pas suffisant ?

  4. #4
    Membre chevronné Avatar de IP-Fix
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    421
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 421
    Par défaut
    Parce que sendAndLoad n existe plus en as3 =)

    Voila un exemple en as3 :

    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
    //Creation d un data
    var data = new Object();
    data.user = "IP-Fix";
    data.job = "UX"
    //autre data...
     
    //creation de l url request
    var request:URLRequest = new URLRequest(url);
    request.data = data;
    request.method = URLRequestMethod.POST;
     
    // creation du loader qui recupere les valeurs de retour
    var loader:URLLoader = new URLLoader();
    loader.dataFormat = URLLoaderDataFormat.VARIABLES;
    loader.addEventListener(Event.COMPLETE, onLoadComplete);
     
    //et BIM on balance le tout
    loader.load(request);
     
    function onLoadComplete(e:Event):void {
        //envois termine
    }

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 33
    Par défaut
    Donc quelque chose comme ca serait plus correct ?
    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
    var postForm:URLRequest = new URLRequest(fichier_cible_PHP);//initialisation de l'envoyeur
    var urlDATA:urlVariables=new urlVariables();//initialisation des variables
     
    	/* on ajoute les variables à envoyer */
    		urlDATA.qui = 11;//indique a php que c'est pour l'algo peau
     
    		urlDATA.age = 0; urlDATA.taille = 0; urlDATA.poid = 0; //profil
    		urlDATA.xxx = 0; urlDATA.xxx = 0; urlDATA.xxx = 0; //sportif, etc
    		urlDATA.repas["repas[]"] = le_tableau;//tableau des repas
     
    postForm.data = urlDATA;//ajoute les variables a l'URL
    postForm.method = URLRequestMethod.POST;//definie la méthode d'envoie : GET ou POST
     
    var reponsePHP:URLLoader = new URLLoader();//intialisation du recepteur
    reponsePHP.addEventListener(ProgressEvent.PROGRESS, requeteLOAD);//appel requeteLOAD 'pendant' la requete
    reponsePHP.addEventListener(IOErrorEvent.IO_ERROR, requeteFAIL);//appel requeteFAIL lorsqu'une erreur de chargement se produit
    reponsePHP.addEventListener(Event.COMPLETE, requeteSUCCESS);//appel requeteSUCCESS si ca marche
     
    reponsePHP.load(postForm);
     
    function requeteLOAD(event:Event)//gestion du temps d'attente pendant la requete
    {
    	trace(event.target.bytesLoaded+" chargés sur "+event.target.bytesTotal);//trace pour test
    }
     
    function requeteFAIL(e:*)//gestion des erreurs d'envoi de la requete
    {
    	trace( "Erreur lors du chargement : "+ erreur );//trace pour test
    }
     
    function requeteSUCCESS(e:Event)//ici lecture de la réponse renvoyé par PHP
    {
    	/* PHP renverra : */
    	//...
    }

Discussions similaires

  1. haxe - array multidimensionnel avec 2 types de données
    Par Haxor668 dans le forum Flash/Flex
    Réponses: 2
    Dernier message: 28/04/2009, 19h51
  2. [PHP 5.3] [Tableaux] class array multidimensionnels
    Par dad72 dans le forum Langage
    Réponses: 8
    Dernier message: 22/04/2009, 15h46
  3. Réponses: 7
    Dernier message: 19/09/2008, 11h27
  4. [Tableaux] Tri d'un array multidimensionnel
    Par amans dans le forum Langage
    Réponses: 3
    Dernier message: 22/04/2008, 16h11
  5. [Tableaux] Récursivité array multidimensionnel
    Par yanice dans le forum Langage
    Réponses: 10
    Dernier message: 30/01/2008, 20h52

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