Comptabilité bouton image Mozilla IE

Eléphanteau du PHP | 43 Messages

18 janv. 2007, 19:51

Bonsoir,

Voilà je vous explique mon problème
Je construit un tableau dans une boucle while et crée un bouton image
<td><input type=hidden name="gene_pdf" value="Ok">
<input type="image" name="pdf<?=trim($row[idf_formation])?>" value=<?=$row[idf_formation]?> src="images/ico_pdf.gif" border="0"" /></td>
Ce bouton permet de générer un fichier pdf à la volée en fonction du choix (et donc du bouton cliqué).

L'action effectué dans la même page est la suivante
if (isset($_POST['gene_pdf'])){
       sup_pdf() ;//suppression des PDF anciens
       // vérification des données saisies
	   $id_formation="";
       foreach($_POST as $key=>$val){
        if ((substr($key,0,3) == "pdf") and (substr($key,-2,1) <> "_")){  
		     $id_formation = $val;
			 }
       }
       $res_pdf = p_mysql_query("
       select * from offreformation where idf_formation = '$id_formation'
       ");
       $row = mysql_fetch_array($res_pdf);
....
Ce script fonctionne bien sous Mozilla ou j'arrive à récupérer la valeur du boton cliqué.
En revanche sous IE les informations envoyées ne sont pas les mêmes et le script ne fonctionne pas.

Avez vous une idée pour le simplifier ou le corriger ?
La vie est perdue contre la mort, mais la mémoire gagne dans son combat contre le néant. [ Tzvetan Todorov ]

Eléphant du PHP | 445 Messages

18 janv. 2007, 19:58

Bonjour,

Tout d'abord, peut-être que ceci serait plus approprié (<?php echo et non <?= est préférable, l'attribut border="0" est inutile il me semble, $row est un tableau, pour récupérer une donnée, il te faut mettre des quotes) :
<td><input type=hidden name="gene_pdf" value="Ok">
<input type="image" name="pdf<?php echo trim($row['idf_formation'])?>" value=<?php echo $row['idf_formation']?> src="images/ico_pdf.gif" /></td>

Ensuite, pour le MySQL, il est plus clair de mettre les clauses en majuscule. De même, il est souhaitable de sortir tes variables. $id_formation étant, je suppose, un nombre, tu n'as pas besoin d'en faire une chaine, et donc, ne pas mettre de quotes. En php, l'opération "différent de" se note != et non <> :
if (isset($_POST['gene_pdf'])){
       sup_pdf() ;//suppression des PDF anciens
       // vérification des données saisies
       $id_formation="";
       foreach($_POST as $key=>$val){
        if ((substr($key,0,3) == "pdf") and (substr($key,-2,1) != "_")){  
             $id_formation = $val;
             }
       }
       $res_pdf = p_mysql_query("SELECT * FROM offreformation WHERE idf_formation=".$id_formation);
       $row = mysql_fetch_array($res_pdf);
Je ne sais pas si cela résoudra ton problème (peut-être du à border="0" d'ailleurs), mais cela peut au moins t'aider à rendre ton code un peu plus propre.
LLDC
Ulti

Eléphanteau du PHP | 43 Messages

18 janv. 2007, 20:10

si je remplace mon select par
       $res_pdf = p_mysql_query("
       SELECT * FROM offreformation WHERE idf_formation = ".$id_formation);
IE me retourne
Requete invalide
SELECT * FROM offreformation WHERE idf_formation =
Erreur de syntaxe près de '' à la ligne 1

c'est pour cela que je l'avais intégré dans les doubles côtes.

le fait de supprimer le border n'a aucun effet sur le comportement sous IE
La vie est perdue contre la mort, mais la mémoire gagne dans son combat contre le néant. [ Tzvetan Todorov ]

Eléphanteau du PHP | 43 Messages

18 janv. 2007, 21:49

J'ai résolu mon problème en modifiant le script et en mettant un image avec un lien url sur un autre fichier qui se charge de générer le pdf.
<a target="_blank" href="p_export_pdf.php5?imp_id=<?=trim($row[idf_formation])?>"><img src="images/ico_pdf.gif" border="0"></a>
Cela fonctionne sous IE et sous mozilla. Cependant sous IE j'ai une fenêtre vide après l'affichage du PDF et je en sais pas comment la fermer :!:
La vie est perdue contre la mort, mais la mémoire gagne dans son combat contre le néant. [ Tzvetan Todorov ]