Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[Flash-MX]Problème de transmission de variable vers moteur de recherche

2 réponses
Avatar
falatop webforumsuser
Bonjour tout le monde,

J'ai fait une application flash interfacée avec PHP et MYSQL.
PHP et MYSQL sont utilisés pour la réalisation d'un moteur de recherche (classique).

Le moteur fonctionne comme suit:
Je fais une requête SQL qui prend en compte une variable envoyée par un fichier FLASH, via un champ de formulaire (fonction LoadVariableNum() qui appelle un fichier PHP).
Je traite la requête et envoie le résultat à FLASH.

Tout fonctionne presque comme il faut, mais j'ai un souci que je n'arrive pas à expliquer:

Une même recherche peut me donner des résultats comme ne pas m'en donner.
J'ai établi que dans le cas d'une recherche infructueuse (qui doit normalement fournir des résultats), la variable transmise au fichier PHP est vide.
Mais comme cette variable est normalement transmise dans certains cas, je ne parviens pas à comprendre POURQUOI le contenu de la variable transmise parvient VIDE au fichier PHP
(Note: Pour m'assurer de la bonne execution de la requête, je la génère dans un fichier texte.)

Exemple:
Je peux faire 3 fois la même requête sans avoir de résultats, alors que la 4ème va m'en donner, et ce sur le même terme !!

D'autre part, le fichier texte que je génère me montre bien qu'une recherche infructueuse, sur un terme qui doit avoir des réponses, est souvent synonyme de variable vide...

J'aimerais donc savoir si certains d'entre vous ont déjà eu ce problème, ou si vous avez des suggestions à ce sujet ?

Ce problème pourrait-il, par exemple, être lié à une latence d'execution entre Flash et PHP ?

Merci d'avance à tous ceux qui me répondront ou m'aiguilleront

2 réponses

Avatar
estampida
Avant toute chose, il faut vérifier si ta page PHP te retourne bien des
variables correctes, lance donc ta page monscript.php dans ton browser pour
voir ce qu'elle affiche.
Si elle n'affiche pas qqc de correct, le problème vient du script, sinon, du
flash.
Si c'est le flash, question stupide, as-tu bien un loop qui vérifie que
toutes tes variables sont chargées ? (question con mais bon, on sait jamais)
ex, à la fin du script php, tu génères une variable finchargement="ok",
dans ton flash, tant que finchargement est différent de "ok" alors tu
boucles.
Avatar
falatop webforumsuser
Bonjour,
Attention, je reviens la charge ;o)

Bon.
J'ai rajouté une variable "inutile" et une procédure PHP qui retire les retours chariots:
$afficheResultats=ereg_replace("n","",$afficheResultats);
$afficheResultats=ereg_replace("r","",$afficheResultats);

... Et j'ai toujours le même bug: pour un terme recherché, et pour lequel je suis sûr d'obtenir des résultats, le programme alterne entre recherche réussie et recherche loupée... Et même pas de manière régulière :(

Comme il s'agit, à mon sens, d'un problème de transmission de variable de flash vers PHP, je vous donne plus d'indication sur le fonctionnement du FLA:

4 scènes:
- Loader (on s'en fout un peu :) )
- Scene 1
- attente
- resultat

Sur Scene 1:
- j'ai un texte de saisie dont la variable est motCherche
- j'ai un bouton avec le code actionScript suivant:
on (release) {
loadVariablesNum("moteur.php", 0, "POST");
gotoAndPlay("attente", 1);
}

sur attente:
- j'ai un loadVariable sur la première image
loadVariablesNum("moteur.php", 0);

- A l'image 7, j'ai un script qui vérifie le bon chargement du FLA et l'existence d'une variable (fait) qui précise la fin d'execution du script PHP:
if ((_root.fait eq "1") and (getBytesLoaded() == getBytesTotal())) {
gotoAndPlay("execution du chargement de variables");
} else {
gotoAndPlay("attente");
}

"execution du chargement de variables" a pour effet d'aller à la fin de la scene attente et de passer automatiquement à la scene resultat (scene suivante)

Sur resultat:
- j'ai un texte de saisie dont la variable est motCherche
- j'ai un bouton avec le code actionScript suivant:
on (release) {
loadVariablesNum("moteur.php", 0, "POST");
gotoAndPlay("attente", 1);
}
- j'ai un clip avec un code actionscript qui effectue un duplicateMovieClip pour chaque résultat renvoyé par le moteur

Pourquoi une scène 1 et une scène resultat avec les mêmes fonctionnalités ?
Parce que la scène résultat est dédié à l'affichage des résultats (:)!), et qu'il est possible de relancer une recherche à partir de la scene "résultat".

A l'origine, je suis plus développeur PHP que flasheur. Je suis donc assez serein pour ce qui est du fonctionnement du fichier PHP.
En revanche, si cela fonctionne malgré tout côté flash (puisqu'il m'arrive d'avoir des résultats), ce que je récupère côté PHP quand je n'ai pas de résultats est une variable vide. J'en déduis que la variable n'est pas correctement transmise depuis FLASH.

Si ces quelques lignes peuvent à nouveau vous permettrent de m'aiguiller, voire de déceler un bug dans le fonctionnement du moteur sous flash, je reste ouvert à toutes suggestions.

Merci d'avance à toutes les bonnes volontés ;)