Aller au contenu

Probème de format d'url


salcamden

Sujets conseillés

Bonsoir,

Mon sujet est à cheval entre flash et PHP.

Dans une animation FLASH, je cherche à récupérer une liste d'images grâce à un loadVars.

Le loadvars récupère les données au format URL généré par un Script PHP :

nbimg=2&img1=pdt39.jpg&img2=pdt38.jpg

Le problème est le suivant :

- Lorsque je les mets en dur (directement dans le fichier PHP, en désactivant le script, ça fonctionne, toutes les données sont récupérées

- Lorsque je les fait sortir par le script, ça ne marche plus.

Voici le code

// Inclusion du fichier de configuration

include('admin/_includes/config_admin.inc.php');

// Inclusion du fichier de connexion la base de donnes

include('admin/_includes/bd_admin.inc.php');
bd_connect();

// initialisation des variables
$str_image = "";
$nb_image = 0;

// Rcupration des donnes

$sql = "SELECT `url_image` FROM `cr_image` WHERE `id_reference_image`='".$_GET['id_reference']."' ORDER BY `url_image` DESC; ";
//echo $sql;
$img = bd_query($sql);
while($image=mysql_fetch_array($img)){
$nb_image ++;
$str_image = $str_image."img".$nb_image."=".$image['url_image']."&";
}

$str_image = "?".$str_image."nbimg=".$nb_image;

// généré
print($str_image."");

// en dur
//print("nbimg=2&img1=pdt39.jpg&img2=pdt38.jpg");

Merci d'avance.

Lien vers le commentaire
Partager sur d’autres sites

Je sais pas si le script affiché est complet, mais en mode "généré" tu envoies un ? avant les variables, pas quand c'est en dur...

Tu as comparé les 2 chaines de sortie ?

Tu peux aussi coder les ampersand en & pour être sûr...

Lien vers le commentaire
Partager sur d’autres sites

Salut,

Merci pour ta réponse,

Le ? est issu de mon dernier test. Sans, ça ne fonctionne pas mieux,

J'ai bien comparé les deux sorties, elles sont rigoureusement identiques.

Je teste avec les &

Lien vers le commentaire
Partager sur d’autres sites

Posté (modifié)

Bon,

Ben les & ne changent rien,

Les url retournées sont rigoureusement les mêmes (j'ai fait un copier/coller de l'url générée dans le print() pour plus de sûreté)

Toujours pareil : l'url générée ne fonctionne pas, celle affichée en dur si.

J'ai esayé de virer le BOM, modifier l'encodage, faire un utf8_encode sur la chaine générée ($str_image).

Rien.

Je ne vois pas d'où cela peut venir.

Pour tester dans le flash, oui, je peux récupérer les variables passées en URL (le format URL est juste un moyen de passer des paramètre à l'animation flash).

Avec l'URL en dur, les paramètre sont bien récupérés dans l'animation, et les images sont affichées.

Avec l'url générée, non, rien, les paramètres ne sont pas récupérés par flash et, par voie de conséquence, pas d'affichage des images.

Modifié par salcamden
Lien vers le commentaire
Partager sur d’autres sites

Salut,

Une petite piste, tu peux essayer de transmettre ton url avec la fonction urlencode de php ou rawurlencode et la recuperer dans ton flash avec urldecode ou rawurldecode.

Autre chose egalement, dans ta boucle while (mysql_fetch_array), tu ecrase ta variable $str_image a chaque passage dans ta boucle et je pense que ce n'est pas ce que tu cherches a faire.

Essaye en premier lieu de mettre plutot :

while($image=mysql_fetch_array($img)){
$nb_image ++;
$str_image .= $str_image."img".$nb_image."=".$image['url_image']."&";
}

Parce que avec le code que tu as colle, je doute que tes sorties soient identiques (a moins que tu les test dans le while).

Voila, si cette solution ne marche pas test ensuite les urlencode.

Bon courage.

Lien vers le commentaire
Partager sur d’autres sites

Salut,

Pour ce qui est de l'écrasement de la variable $str_image, je la concatène avant avec la nouvelle portion d'URL :

$str_image = [b]$str_image.[/b]"img".$nb_image."=".$image['url_image']."&";

Le rawurlencode() ne fonctionne pas, pas plus que le urlencode() (que j'ai déjà essayé).

J'ai également tenté de faire un echo au lieu du print.

j'ai tenter de mettre l'output en buffer et de le flusher (avec ob_start() et ob_flush()), mais rien n'y fait.

Lien vers le commentaire
Partager sur d’autres sites

Bon,

Je reviens pour fermer le post.

J'ai recodé la partie Flash, puisque ça semblait venir de là :

Les paramètres passés en GET depuis mon anim sont désormais passé à l'aide d'un sendAndLoad() en GET.

Ça marche.

Merci à tous !

Bonne fin de journée.

Lien vers le commentaire
Partager sur d’autres sites

OK,

Est ce que l'ordre de tes variables influe sur ton flash ?

Sinon tu peux essayer ca :

// Inclusion du fichier de configuration

include('admin/_includes/config_admin.inc.php');

// Inclusion du fichier de connexion la base de donnes

include('admin/_includes/bd_admin.inc.php');
bd_connect();

// initialisation des variables
$str_image = "";
$nb_image = 0;

// Rcupration des donnes

$sql = "SELECT `url_image` FROM `cr_image` WHERE `id_reference_image`='".$_GET['id_reference']."' ORDER BY `url_image` DESC; ";
//echo $sql;
$img = bd_query($sql);
for ($nb_image = 0, $buff=""; $image=mysql_fetch_array($img);$nb_image++)
{
$buff .= "&img".$nb_image+1."=".$image['url_image'];
}

$str_image = "nbimg=".$nb_image.$buff;

// généré
print($str_image);

// en dur
//print("nbimg=2&img1=pdt39.jpg&img2=pdt38.jpg");

Je ne suis pas expert en flash, c'est pour ca que je porpose ca a tout hasard.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Non, l'ordre n'y est pour rien (j'ai déjà testé).

J'ai refondu le code FLASH, et ça fonctionne, le problème ne venait donc pas du PHP.

Désolé pour le dérangement.

Bonne soirée.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...