Partage
  • Partager sur Facebook
  • Partager sur Twitter

[XAJAX] Gérer plusieurs retours de réponse (return)

Sujet résolu
    28 avril 2009 à 18:58:24

    Bonjour amis Zéro ! :D

    J'ai un petit problème concernant le framework XAJAX (Tuto ici), j'aimerais pouvoir gérer plusieurs retours de réponse RETURN dans ma fonction mais cela ne fonctionne pas, ce qui est normal il me semble. Dès que le premier return s'effectue, la fonction s'arrête.

    Je m'explique un peu sur mon script : J'ai une requête qui va chercher chacune de mes tables SQL dans ma base de données, et par la suite j'applique une boucle while standard pour pouvoir travailler sur chacune des tables. Dans ma page, j'ai une phrase qui nous informe sur quel table le script est entrain de travailler <<Table en cour d'exécution : xxxxxx>>, et c'est la le problème, j'aimerais que le nom de la table change automatiquement dès que la boucle est terminée.

    Comme j'avais indiqué, sa fonctionne ... mais seulement le premier tour de boucle vu que le return va arrêter la fonction par la suite.

    Voici la partie de mon script :

    // On fait une boucle pour travailler sur toutes les tables SQL
    while($donneesTables = mysql_fetch_array($LesTablesMySql))
    {
    	
    	// Nom de la table SQL
    	$NomDeLaTable = $donneesTables[0];
    	
    	// On affiche quel table est en cour d'exécution :
    	$reponse->assign('TableNameExecution', 'innerHTML', $NomDeLaTable);
    	return $reponse;
    	
    	// Requête pour recherche si la colonne 'PSEUDO' existe dans cette table
    	$LesColonnesMySql = mysql_query("SHOW COLUMNS FROM $NomDeLaTable LIKE 'pseudo'") or exit(MysqlError(__FILE__,__LINE__));
    	$NBR_LesColonnesMySql = mysql_num_rows($LesColonnesMySql);
    	
    	// Si une colonne pseudo est trouvé, on efface les entrés de cet utilisateur
    	if ($NBR_LesColonnesMySql >= 1)
    	{
    		
    		// On supprime ce qui appartient à ce compte d'utilisateur
    		mysql_query("DELETE FROM $NomDeLaTable WHERE pseudo='$pseudo'") or exit(MysqlError(__FILE__,__LINE__));
    		
    	}
    	
    }
    


    Je vous remercie d'avance si vous pouvez m'aider , ... !

    Bonne Soirée :)
    • Partager sur Facebook
    • Partager sur Twitter
      29 avril 2009 à 10:21:49

      Ben tu fais return $reponse à la fin !
      • Partager sur Facebook
      • Partager sur Twitter
        29 avril 2009 à 18:44:56

        Mouais ... je crois que personne n'a compris le problème ! ...

        Le bout de code que j'ai donné plus haut n'est qu'une section de la fonction, et le return à la fin se trouve bien là, mais il se trouve aussi dans la boucle, ce qui fait que la fonction s'arrête dès le premier return dans la boucle se crée.

        M'enfin .. j'ai trouvé une solution par moi-même, je la mets ici si jamais quelqu'un à le même problème.

        Le but est de créer un array avec la boucle while, et de crées plusieurs fonction qui s'appelle entre chacune d'elle, doncen ayant plusieurs fonctions, on peut passer plusieurs return.

        <?php
        
        function TableExecutionScript($NomDeLaTable, $y, $pseudo, $ID_utilisateur, $NBR_LesTablesMySql)
        {
        	//Création d'une instance de xajaxResponse pour traiter les réponses serveur
        	$reponse = new xajaxResponse();
        	
        	// On incrémente le numéro de table SQL que nous sommes rendu
        	$y++;
        	
        	// On vérifie a quel pourcentage du nombre de table nous sommes rendu
        	$Pourcent = ceil($y * 100 / $NBR_LesTablesMySql);
        	$Pourcent = $Pourcent . '%';
        	
        	// On affiche quel table est en cour d'exécution :
        	$reponse->assign('TableNameExecution', 'innerHTML', $NomDeLaTable);
        	
        	// On affiche le pourcentage actuel
        	$reponse->assign('TablePourcentExecution', 'style.width', $Pourcent);
        	
        	// On rappelle encore une fois la fonction pour désinscrire le joueur et on fais passer à l'autre table SQL
        	$reponse->call('xajax_UtilisateurDesinscription', $ID_utilisateur, $y, $pseudo);
        	
        	return $reponse;
        	
        }
        function UtilisateurDesinscription($ID_utilisateur, $y, $pseudo)
        {
        	//Création d'une instance de xajaxResponse pour traiter les réponses serveur
        	$reponse = new xajaxResponse();
        	
        	// Récupération des variables POST et traitement
        	$ID_utilisateur = $ID_utilisateur;
        	$pseudo = $pseudo;
        	
        	//
        	// On effectue une requête permettant de rechercher toutes les tables SQL du site
        	//
        	$LesTablesMySql = mysql_query("SHOW TABLES") or exit(MysqlError(__FILE__,__LINE__));
        	$NBR_LesTablesMySql = mysql_num_rows($LesTablesMySql); // Nombre de table trouvés
        	
        	// Si le nombre de tanle trouvé est supérieur a 1
        	if ($NBR_LesTablesMySql >= 1)
        	{
        		
        		// - - - - - - - - - - - - - - - - - - - - - - - - - - - 
        		// Création de l'Array qui contient le nom des tables ainsi que leurs numéros respectifs
        		// - - - - - - - - - - - - - - - - - - - - - - - - - - - 
        		$TableNameArray = array (); // Initialisation de l'array
        		$i = 0;
        		while($donneesTables = mysql_fetch_array($LesTablesMySql))
        		{
        			// On ajoute une clé à l'array avec cette fonction
        			$TableNameArray[$i] = $donneesTables[0];
        			
        			$i++;
        		}
        		// - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
        		
        		// On s'assure que la variable ne soit pas vide ...
        		if ($y == NULL) {$y = 0;} else {$y = $y;}
        		
        		// Si il y a encore des tables à travailler, on continu le script ...
        		if ($y < $NBR_LesTablesMySql)
        		{
        			
        			// Nom de la table
        			$NomDeLaTable = $TableNameArray[$y];
        			
        			// Requête pour recherche si la colonne 'PSEUDO' existe dans cette table
        			$LesColonnesMySql = mysql_query("SHOW COLUMNS FROM $NomDeLaTable LIKE 'pseudo'") or exit(MysqlError(__FILE__,__LINE__));
        			$NBR_LesColonnesMySql = mysql_num_rows($LesColonnesMySql);
        			
        			// --------------- DEBUG MODE --------------------------
        			//$reponse->alert('Table : ' . $TableNameArray[$y] . ' - Pseudo : ' . $pseudo . ' - ID Utilisateur : ' . $ID_utilisateur . ' - Table NBR : ' . $NBR_LesTablesMySql);
        			// --------------- FIN DEBUG MODE ----------------------
        			
        			// Si une colonne pseudo est trouvé, on efface les entrés de cet utilisateur
        			if ($NBR_LesColonnesMySql >= 1)
        			{
        				// On supprime ce qui appartient à ce compte d'utilisateur
        				mysql_query("DELETE FROM $NomDeLaTable WHERE pseudo='$pseudo'") or exit(MysqlError(__FILE__,__LINE__));
        			}
        			
        			// On apelle le script qui permet d'afficher le pourcentage et la table en cour ...
        			$reponse->call('xajax_TableExecutionScript', $TableNameArray[$y], $y, $pseudo, $ID_utilisateur, $NBR_LesTablesMySql);
        			
        		}
        		else // Sinon on confirme la désinscription
        		{
        			
        			// On cache le message de chargement
        			$reponse->script("hideLoadingMessageDesinscription();");
        			
        			// On informe ici que le joueur a été désinscrit avec succès !
        			$reponse->script("document.getElementById('DesinscriptionDemande').style.display='none';");
        			$reponse->script("document.getElementById('MessageConfirmDesinscription').style.display='block';");
        			
        		}
        		
        		
        	}
        	else // Si aucune table sql n'est trouvé, un affiche ce message d'erreur ...
        	{
        		$reponse->alert('Aucune table SQL n\'a été trouvé dans la base de données ! Contactez un administrateur !');
        		$reponse->script("document.getElementById('DesinscriptionDemande').style.display='block';");
        	}
        	
        	return $reponse;
        	
        }
        
        ?>
        
        • Partager sur Facebook
        • Partager sur Twitter

        [XAJAX] Gérer plusieurs retours de réponse (return)

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown