Caracteres spéciaux

cs_perles Messages postés 74 Date d'inscription samedi 7 juillet 2007 Statut Membre Dernière intervention 29 mars 2015 - 13 nov. 2009 à 10:50
cs_perles Messages postés 74 Date d'inscription samedi 7 juillet 2007 Statut Membre Dernière intervention 29 mars 2015 - 16 nov. 2009 à 22:31
Bonjour,



&MarqueDesign=<?php echo (($result["MarqueDesign"]));?>

J'envoie depuis un programme resultats.php le MarqueDesign
dans un programme detail.ph.
Le programme detail.php lit et affiche l'enregistrement.
Tout est ok sauf quant MarqueDesign contient EBERHARD & CO.
Le programme detail.php reçoit que EBERHARD et ne trouve pas d'enregistrement.

Merci de votre aide.


Isabelle

20 réponses

cs_47 Messages postés 197 Date d'inscription mardi 20 janvier 2004 Statut Membre Dernière intervention 20 février 2013 1
13 nov. 2009 à 12:28
Bonjour,

tente d'utiliser la fonction urlencode: echo urlencode($result["MarqueDesign"]);

bonne après midi
0
Vamosplaya Messages postés 127 Date d'inscription vendredi 16 octobre 2009 Statut Membre Dernière intervention 10 décembre 2012
13 nov. 2009 à 12:46
Bonjour, personnellement j'utilise ceci
et je n'ai jamais de problème d'encodage.

utf8_encode($valeur);

ce qui donnerait :
&MarqueDesign=<?php echo ((utf8_encode($result["MarqueDesign"])));?>

à essayer.
0
cs_perles Messages postés 74 Date d'inscription samedi 7 juillet 2007 Statut Membre Dernière intervention 29 mars 2015
13 nov. 2009 à 13:25
Bonjour,


Je vais tout de suite mettre l'instruction sur ma page et je redonne des nouvelles


Merci

Isabelle
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
13 nov. 2009 à 20:08
Salut,

Je pense que 47 a dû donner la solution, cela étant pense à apporter des précisions !!!

J'envoie depuis un programme resultats.php le MarqueDesign
dans un programme detail.ph.

Par quel biais ?
POST ? GET ? PUT ? via un fichier text ? via une socket ? etc ...

Le programme detail.php reçoit que EBERHARD et ne trouve pas d'enregistrement

Il ne le trouve pas où ?
dans une DB ? un fichier csv ? une requête vers un serveur distant ? etc ...

Toutes ces précisions sont importantes.

Pour compléter s'il en était besoin le message de 47 : urlencode permet d'encoder une chaîne pour passage via l'url, il faut donc utiliser son inverse pour le décodage : urldecode

Cordialement,


Kohntark -
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_perles Messages postés 74 Date d'inscription samedi 7 juillet 2007 Statut Membre Dernière intervention 29 mars 2015
15 nov. 2009 à 21:56
Bonjour,

Le programme resultats.php contient le code suivant :

<?php
$sql="SELECT * FROM Titulaire WHERE NomTitulaire = '".$titulaireaffichage."'";
$reqtit=@mysql_query($sql);
$resulttit=@mysql_fetch_array($reqtit);
?>
<td width="30" height="10">
&NumDossier=<?php echo $result["NumDossier"];?>
&SeqTitulaire=<?php echo $resulttit["SeqTitulaire"];?>
&MarqueDesign=<?php echo ($result["MarqueDesign"]);?>
&Image=<?php echo ($result["Image"]);?>

____________________________________________________________________

Ensuite le programme detail.php, j'ai le code suivant :

$pays = $_GET["Pays"];
$numdossier = $_GET["NumDossier"];
$seqtitulaire = $_GET["SeqTitulaire"];
$MarqueDesign $_GET["MarqueDesign"]; $Image $_GET["Image"];

echo $MarqueDesign;

$sql="SELECT * FROM Dossier LEFT JOIN Pays ON Dossier.PaysDossier=Pays.CodeISO LEFT JOIN Titulaire
ON Dossier.NumClient=Titulaire.NumClient WHERE CodeISO='".$pays."' AND NumDossier='".$numdossier."'
AND MarqueDesign='".$MarqueDesign."'
AND Image='".$Image."'
AND Langue='F'";


La variable $MarqueDesign contient la valeur 'EBERHARD & CO' dans le programme resultats.php et ensuite dans le programme detail.php uniquement 'EBERHARD'


Isabelle
0
cs_perles Messages postés 74 Date d'inscription samedi 7 juillet 2007 Statut Membre Dernière intervention 29 mars 2015
15 nov. 2009 à 22:01
Bonjour,

Le programme resultats.php contient le code suivant :

<?php
$sql="SELECT * FROM Titulaire WHERE NomTitulaire = '".$titulaireaffichage."'";
$reqtit=@mysql_query($sql);
$resulttit=@mysql_fetch_array($reqtit);
?>
<td width="30" height="10">
&NumDossier=<?php echo $result["NumDossier"];?>
&SeqTitulaire=<?php echo $resulttit["SeqTitulaire"];?>
)));?>
&Image=<?php echo ($result["Image"]);?>

____________________________________________________________________

Ensuite le programme detail.php, j'ai le code suivant :

$pays = $_GET["Pays"];
$numdossier = $_GET["NumDossier"];
$seqtitulaire = $_GET["SeqTitulaire"];
$MarqueDesign $_GET["MarqueDesign"]; $Image $_GET["Image"];

echo $MarqueDesign;

$sql="SELECT * FROM Dossier LEFT JOIN Pays ON Dossier.PaysDossier=Pays.CodeISO LEFT JOIN Titulaire
ON Dossier.NumClient=Titulaire.NumClient WHERE CodeISO='".$pays."' AND NumDossier='".$numdossier."'
AND MarqueDesign='".$MarqueDesign."'
AND Image='".$Image."'
AND Langue='F'";


La variable $MarqueDesign contient la valeur 'EBERHARD & CO' dans le programme resultats.php et ensuite dans le programme detail.php uniquement 'EBERHARD'
La modification n'a pas apporté de changement à l'affichage.

Isabelle
0
cs_perles Messages postés 74 Date d'inscription samedi 7 juillet 2007 Statut Membre Dernière intervention 29 mars 2015
15 nov. 2009 à 22:08
Bonjour,

Le programme resultats.php contient le code suivant :

<?php
$sql="SELECT * FROM Titulaire WHERE NomTitulaire = '".$titulaireaffichage."'";
$reqtit=@mysql_query($sql);
$resulttit=@mysql_fetch_array($reqtit);
echo (urlencode($result["MarqueDesign"]));
?>
<td width="30" height="10">
&NumDossier=<?php echo $result["NumDossier"];?>
&SeqTitulaire=<?php echo $resulttit["SeqTitulaire"];?>
));?>
&Image=<?php echo ($result["Image"]);?>

____________________________________________________________________

Ensuite le programme detail.php, j'ai le code suivant :

$pays = $_GET["Pays"];
$numdossier = $_GET["NumDossier"];
$seqtitulaire = $_GET["SeqTitulaire"];
$MarqueDesign $_GET["MarqueDesign"]; $Image $_GET["Image"];

echo $MarqueDesign;

$sql="SELECT * FROM Dossier LEFT JOIN Pays ON Dossier.PaysDossier=Pays.CodeISO LEFT JOIN Titulaire
ON Dossier.NumClient=Titulaire.NumClient WHERE CodeISO='".$pays."' AND NumDossier='".$numdossier."'
AND MarqueDesign='".$MarqueDesign."'
AND Image='".$Image."'
AND Langue='F'";


La variable $MarqueDesign contient la valeur 'EBERHARD & CO' dans le programme resultats.php et ensuite dans le programme detail.php uniquement 'EBERHARD'
Malgré le changement j'obtiens un résultat identique.
echo (urlencode($result["MarqueDesign"]) affiche EBERHARD+%26+CO

Isabelle
0
cs_perles Messages postés 74 Date d'inscription samedi 7 juillet 2007 Statut Membre Dernière intervention 29 mars 2015
15 nov. 2009 à 22:14
Bonjour,

Le programme resultats.php contient le code suivant :

<?php
$sql="SELECT * FROM Titulaire WHERE NomTitulaire = '".$titulaireaffichage."'";
$reqtit=@mysql_query($sql);
$resulttit=@mysql_fetch_array($reqtit);
?>
<td width="30" height="10">
&NumDossier=<?php echo $result["NumDossier"];?>
&SeqTitulaire=<?php echo $resulttit["SeqTitulaire"];?>
));?>
&Image=<?php echo ($result["Image"]);?>

____________________________________________________________________

Ensuite le programme detail.php, j'ai le code suivant :

$pays = $_GET["Pays"];
$numdossier = $_GET["NumDossier"];
$seqtitulaire = $_GET["SeqTitulaire"];
$MarqueDesign $_GET["MarqueDesign"]; $Image $_GET["Image"];

echo (urldecode($MarqueDesign));
$MarqueDesign= (urldecode($MarqueDesign));
$sql="SELECT * FROM Dossier LEFT JOIN Pays ON Dossier.PaysDossier=Pays.CodeISO LEFT JOIN Titulaire
ON Dossier.NumClient=Titulaire.NumClient WHERE CodeISO='".$pays."' AND NumDossier='".$numdossier."'
AND MarqueDesign='".$MarqueDesign."'
AND Image='".$Image."'
AND Langue='F'";


La variable $MarqueDesign contient la valeur 'EBERHARD & CO' dans le programme resultats.php et ensuite dans le programme detail.php uniquement 'EBERHARD'
Voici un autre essai avec l'instruction urldecode($MarqueDesign) dans le programme detail.php.

Merci de votre aide.

Isabelle
0
Vamosplaya Messages postés 127 Date d'inscription vendredi 16 octobre 2009 Statut Membre Dernière intervention 10 décembre 2012
15 nov. 2009 à 22:29
Bonsoir,

J'ai eu des problèmes de ce type essaye ceci :

<? echo stripslashes($result["MarqueDesign"]) ?>

Vamos
0
cs_perles Messages postés 74 Date d'inscription samedi 7 juillet 2007 Statut Membre Dernière intervention 29 mars 2015
16 nov. 2009 à 07:50
Bonjour,

Le programme resultats.php, j'ai le code suivant :

?>
<td width="30" height="10">
&NumDossier=<?php echo $result["NumDossier"];?>
&SeqTitulaire=<?php echo $resulttit["SeqTitulaire"];?>
&MarqueDesign=<?php echo (stripslashes($result["MarqueDesign"]));?>
&Image=<?php echo ($result["Image"]);?>

La variable $MarqueDesign contient la valeur 'EBERHARD & CO' dans le programme resultats.php et ensuite dans le programme detail.php uniquement 'EBERHARD'


Merci de votre aide.

Isabelle



Isabelle
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
16 nov. 2009 à 09:27
Salut Isabelle,

2/3 remarques de grincheux :
Il est important de présenter correctement le code, de prendre le temps de le rendre le plus lisible possible, ça permet bien souvent de voir en un clin d'oeil les erreurs.
Ton code est loin d'être illisible, mais s'il venait à grossir il le deviendrait sans doute.

Ainsi je trouve qu'un code présenté ainsi est bien plus lisible :
<?php
$args = 'Pays='.$result["CodeISO"];
$args.= '&NumDossier='.$result["CodeISO"];
$args.= '&SeqTitulaire='.$result["CodeISO"];
$args.= '&MarqueDesign='.urlencode($result["MarqueDesign"]);
$args.= '&Image='.$result["Image"];

echo '[javascript:ouvre_popup(\'detail.php?'.$args.'\'); truc bidule]';
?>


Pense également à utiliser la balise code pour la coloration syntaxique.

Ton problème doit vient de l'utilisation de JS.
En fait javascript réinterprète la string passée et converti donc le '&' préalablement encodé.
Peux tu poster le code de ouvre_popup ?
Cette popup est elle bien requise ? Je n'en suis pas certain, un faux popup à base de div est souvent bien plus efficace.


Cordialement,

Kohntark -
0
Vamosplaya Messages postés 127 Date d'inscription vendredi 16 octobre 2009 Statut Membre Dernière intervention 10 décembre 2012
16 nov. 2009 à 10:02
Bonjour,

Bon et bien tu m'as devancé Kohntark j'allais proposé de faire un test sans javascript.

sinon après relecture du code, il y a un truc bizarre, tu écris :
$resulttit=@mysql_fetch_array($reqtit);

puis tu ecris ensuite :
&NumDossier=<?php echo $result["NumDossier"];?>
&SeqTitulaire=<?php echo $resulttit["SeqTitulaire"];?>
&MarqueDesign=<?php echo (stripslashes($result["MarqueDesign"]));?>

c'est une erreur dans ton copier/coller ?

Sinon je ne suis pas sur Php depuis longtemps mais j'ai deux questions sur les syntaxes suivantes Kohntark :
$resulttit=@mysql_fetch_array($reqtit);
le @ il est là pourquoi ?
Isabelle utilise :mysql_fetch_array
j'utilise dans mon codage : mysql_fetch_assoc et à vrais dire sans trop comprendre la différence entre les deux fetch.

++
Vamos
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
16 nov. 2009 à 10:20
Salut,

Bon et bien tu m'as devancé Kohntark

Pour une fois que ce n'est pas moi qui me fait griller

sinon après relecture du code, il y a un truc bizarre, tu écris


Je l'avais vu aussi, mais vu que les données sont correctement récupérées on peut en déduire qu'il y a une requête plus haut.
Par ailleurs il y a également un pb de syntaxe dans le href : j'imagine là aussi que tout le code n'a pas été noté, mais ça peut porter à confusion. Quand on commence une ligne autant mieux vaut la terminer

le @ il est là pourquoi ?

Le @ empêche l'affichage d'une éventuelle erreur. Dans 99% des cas il est déconseillé de l'utiliser.
Un code en test => on affiche tous les types d'erreurs
Un code en production => on empêche tout affichage d'erreur via error_reporting ou directement dans le php.ini


j'utilise dans mon codage : mysql_fetch_assoc et à vrais dire sans trop comprendre la différence entre les deux fetch

La seule différence est que mysql_fetch_array est plus flexible grâce au second argument :

MYSQL_ASSOC : retourne un tableau contenant la ligne, avec en index le nom des colonnes
ex : ['champ1']=>'valeur1'; ['champ2']=>'valeur2'
Ainsi mysql_fetch_array($q, MYSQL_ASSOC); est strictement identique à mysql_fetch_assoc($q);

MYSQL_NUM : même chose mais ne retourne en index que des valeurs numériques, le premier champ de la requête étant
d'indice 0
ex : [0]=>'valeurA'; [1]=>'valeur2'

MYSQL_BOTH retourne les 2 types précédents

mais la doc parle mieux que moi.

Cordialement,

Kohntark -
0
cs_perles Messages postés 74 Date d'inscription samedi 7 juillet 2007 Statut Membre Dernière intervention 29 mars 2015
16 nov. 2009 à 13:28
Bonjour,

Merci pour la syntaxe

<?php
$args = 'Pays='.$result["CodeISO"];
$args.= '&NumDossier='.$result["CodeISO"];
$args.= '&SeqTitulaire='.$result["CodeISO"];
$args.= '&MarqueDesign='.urlencode($result["MarqueDesign"]);
$args.= '&Image='.$result["Image"];

echo '[javascript:ouvre_popup(\'detail.php?'.$args.'\'); truc bidule]';
?>


C'est effectivement beaucoup plus lisible.

Voici mon code JavaScrip actuel


<td width="30" height="10">
     [javascript:ouvre_popup('detail.php?
        Pays=<?php echo $result[ 
        &NumDossier=<?php echo $result["NumDossier"];?>
        &SeqTitulaire=<?php echo $resulttit["SeqTitulaire"];?>
        &MarqueDesign=<?php echo (urlencode($result["MarqueDesign"]));?>
        &Image=<?php echo (addslashes($result["Image"]));?>
        ')"><center></center>]
<SCRIPT language="javascript">
function ouvre_popup(page) {
window.open(page,"nom_popup","menubar=no, status=no, scrollbars=yes, menubar=no, width=650, height=680");
}</SCRIPT>
</td>



Merci

Isabelle
0
cs_perles Messages postés 74 Date d'inscription samedi 7 juillet 2007 Statut Membre Dernière intervention 29 mars 2015
16 nov. 2009 à 14:01
Bonjour,

Je tente de réécrire mon code
Voici mon ancien code

<?php 
 $sql="SELECT * FROM Titulaire WHERE NomTitulaire = '".$titulaireaffichage."'";
 $reqtit=@mysql_query($sql);
 $resulttit=@mysql_fetch_array($reqtit);
 ?>
 <td width="30" height="10">[javascript:ouvre_popup('detail.php?
              Pays=<?php echo $result[ 
              &NumDossier=<?php echo $result["NumDossier"];?>
              &SeqTitulaire=<?php echo $resulttit["SeqTitulaire"];?>
              &MarqueDesign=<?php echo (urlencode($result["MarqueDesign"]));?>
              &Image=<?php echo (addslashes($result["Image"]));?>
        ')"><center></center>]
<SCRIPT language="javascript">
function ouvre_popup(page) {
window.open(page,"nom_popup","menubar=no, status=no, scrollbars=yes, menubar=no, width=650, height=680");
}</SCRIPT>
 </td>
 </tr>
 <?php }  


Voici mon nouveau code

<?php 
 $sql="SELECT * FROM Titulaire WHERE NomTitulaire = '".$titulaireaffichage."'";
 $reqtit=@mysql_query($sql);
 $resulttit=@mysql_fetch_array($reqtit);
 $args = 'Pays='.$result["CodeISO"];
 $args.= '&NumDossier='.$result["CodeISO"];
 $args.= '&SeqTitulaire='.$result["CodeISO"];
 $args.= '&MarqueDesign='.urlencode($result["MarqueDesign"]);
 $args.= '&Image='.$result["Image"];
 ?>
 <td width="30" height="10">
 <?php
 echo '[javascript:ouvre_popup(\'detail.php?'.$args.'\'); 
 <center></center>];
 ?>
<SCRIPT language="javascript">
function ouvre_popup(page) {
window.open(page,"nom_popup","menubar=no, status=no, scrollbars=yes, menubar=no, width=650, height=680");
}</SCRIPT>
 </td>
 </tr>
 <?php }   



J'ai écrit quelqeue chose de faux !!!

Isabelle
0
cs_perles Messages postés 74 Date d'inscription samedi 7 juillet 2007 Statut Membre Dernière intervention 29 mars 2015
16 nov. 2009 à 14:17
Bonjour,


Je vais être plus précise c'est cette ligne de code qui est fausse. Comment faut-il la corriger !!

<?php
 echo '[javascript:ouvre_popup(\'detail.php?'.$args.'\'); 
 <center></center>];
 ?>


Merci

Isabelle
0
Vamosplaya Messages postés 127 Date d'inscription vendredi 16 octobre 2009 Statut Membre Dernière intervention 10 décembre 2012
16 nov. 2009 à 14:21
Vraiment étrange ton problème.

Et si tu testes ceci dans le programme resultats.php, ça donne quoi dans le programme detail.php ?


<? echo str_replace(' ','_',stripslashes($result["MarqueDesign"]))?>



Vamos
0
Vamosplaya Messages postés 127 Date d'inscription vendredi 16 octobre 2009 Statut Membre Dernière intervention 10 décembre 2012
16 nov. 2009 à 14:42
petite précision qui a son importance
dans detail.php

mettre :
$MarqueDesign=str_replace('_',' ',$_GET[MarqueDesign]);

Vamos
0
cs_perles Messages postés 74 Date d'inscription samedi 7 juillet 2007 Statut Membre Dernière intervention 29 mars 2015
16 nov. 2009 à 21:34
Bonjour,

C'est un vrai casse-tête

resultat.php :
Pays=<?php echo $result["CodeISO"];?>
&NumDossier=<?php echo $result["NumDossier"];?>
&SeqTitulaire=<?php echo $resulttit["SeqTitulaire"];?>
&MarqueDesign=<?php echo str_replace(' ','_',stripslashes($result["MarqueDesign"]));?> 
&Image=<?php echo ($result["Image"]);?>
   ')"><center></center>
<SCRIPT language="javascript">
function ouvre_popup(page) {
window.open(page,"nom_popup","menubar=no, status=no, scrollbars=yes, menubar=no, width=650, height=680");
}</SCRIPT>


La variable &MarqueDesign contient EBERHARD_&_CO

detail.php
<?php	
$pays = $_GET["Pays"];
$numdossier = $_GET["NumDossier"];
$MarqueDesign=str_replace('_',' ',$_GET[MarqueDesign]); 
$seqtitulaire = $_GET["SeqTitulaire"];
$Image = $_GET["Image"];

$sql="SELECT * FROM Dossier LEFT JOIN Pays ON Dossier.PaysDossier=Pays.CodeISO LEFT JOIN Titulaire 
ON  Dossier.NumClient=Titulaire.NumClient WHERE CodeISO='".$pays."' AND NumDossier='".$numdossier."' 
AND MarqueDesign='".$MarqueDesign."' 
AND Image='".$Image."' 
AND Langue='F'";


La variable &MarqueDesign contient EBERHARD

J'en perd mon latin

Isabelle
0
cs_perles Messages postés 74 Date d'inscription samedi 7 juillet 2007 Statut Membre Dernière intervention 29 mars 2015
16 nov. 2009 à 22:31
Bonjour,

resultats.php
<?php 
$sql="SELECT * FROM Titulaire WHERE NomTitulaire = '".$titulaireaffichage."'";
$reqtit=@mysql_query($sql);
$resulttit=@mysql_fetch_array($reqtit);
$args = 'Pays='.$result["CodeISO"];
$args.= '&NumDossier='.$result["NumDossier"];
$args.= '&SeqTitulaire='.$result["SeqTitulaire"];
$args.= '&MarqueDesign='.str_replace('&','£',stripslashes($result["MarqueDesign"]));
$args.= '&Image='.$result["Image"];
echo $args
?>
 <td width="30" height="10">
<?php 
echo '[javascript:ouvre_popup(\'detail.php?'.$args.'\'); 
<center></center>';	
?>
 ]		
<SCRIPT language="javascript">
function ouvre_popup(page) {
window.open(page,"nom_popup","menubar=no, status=no, scrollbars=yes, menubar=no, width=650, height=680");
}</SCRIPT>
 </td>


detail.php
<?php
$pays = $_GET["Pays"];
$numdossier = $_GET["NumDossier"];
$MarqueDesign = $_GET[MarqueDesign]; 
$seqtitulaire = $_GET["SeqTitulaire"];
$Image = $_GET["Image"];

$MarqueDesignS = utf8_encode($_GET["MarqueDesign"]);
$MarqueDesignS=str_replace('£','&',$MarqueDesignS); 
$ImageS = ($_GET["Image"]);

$sql="SELECT * FROM Dossier LEFT JOIN Pays ON Dossier.PaysDossier=Pays.CodeISO LEFT JOIN Titulaire 
ON  Dossier.NumClient=Titulaire.NumClient WHERE CodeISO='".$pays."' AND NumDossier='".$numdossier."' 
AND MarqueDesign='".$MarqueDesignS."' 
AND Image='".$ImageS."' 
AND Langue='F'";
?>


En modifiant ainsi les deux programmes, cela fonctionne mais cela me semble peu élégant !!!!

Merci pour toutes vos aides à tous.


Isabelle
0
Rejoignez-nous