Version complète: sur le forum Webmaster Hub : Probème de format d'url
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
salcamden
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 :
CODE
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

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.
iNCiTE Web
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...
salcamden
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 &

iNCiTE Web
Quand tu dis "ça marche plus" tu entends quoi par là ?
Je connais pas bien Flash, tu as la possibilité de tester les variables ? pour voir si elles sont initialisées
salcamden
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.
rdd
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 :
CODE
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.
salcamden
Salut,

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

CODE
$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.
salcamden
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.
rdd
OK,

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

Sinon tu peux essayer ca :
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);
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.
salcamden
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.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.