Caracteres spéciaux

Signaler
Messages postés
75
Date d'inscription
samedi 7 juillet 2007
Statut
Membre
Dernière intervention
29 mars 2015
-
Messages postés
75
Date d'inscription
samedi 7 juillet 2007
Statut
Membre
Dernière intervention
29 mars 2015
-
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

Messages postés
197
Date d'inscription
mardi 20 janvier 2004
Statut
Membre
Dernière intervention
20 février 2013
1
Bonjour,

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

bonne après midi
Messages postés
127
Date d'inscription
vendredi 16 octobre 2009
Statut
Membre
Dernière intervention
10 décembre 2012

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.
Messages postés
75
Date d'inscription
samedi 7 juillet 2007
Statut
Membre
Dernière intervention
29 mars 2015

Bonjour,


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


Merci

Isabelle
Messages postés
3706
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
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 -
Messages postés
75
Date d'inscription
samedi 7 juillet 2007
Statut
Membre
Dernière intervention
29 mars 2015

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
Messages postés
75
Date d'inscription
samedi 7 juillet 2007
Statut
Membre
Dernière intervention
29 mars 2015

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
Messages postés
75
Date d'inscription
samedi 7 juillet 2007
Statut
Membre
Dernière intervention
29 mars 2015

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
Messages postés
75
Date d'inscription
samedi 7 juillet 2007
Statut
Membre
Dernière intervention
29 mars 2015

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
Messages postés
127
Date d'inscription
vendredi 16 octobre 2009
Statut
Membre
Dernière intervention
10 décembre 2012

Bonsoir,

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

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

Vamos
Messages postés
75
Date d'inscription
samedi 7 juillet 2007
Statut
Membre
Dernière intervention
29 mars 2015

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
Messages postés
3706
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
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 -
Messages postés
127
Date d'inscription
vendredi 16 octobre 2009
Statut
Membre
Dernière intervention
10 décembre 2012

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
Messages postés
3706
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
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 -
Messages postés
75
Date d'inscription
samedi 7 juillet 2007
Statut
Membre
Dernière intervention
29 mars 2015

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
Messages postés
75
Date d'inscription
samedi 7 juillet 2007
Statut
Membre
Dernière intervention
29 mars 2015

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
Messages postés
75
Date d'inscription
samedi 7 juillet 2007
Statut
Membre
Dernière intervention
29 mars 2015

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
Messages postés
127
Date d'inscription
vendredi 16 octobre 2009
Statut
Membre
Dernière intervention
10 décembre 2012

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
Messages postés
127
Date d'inscription
vendredi 16 octobre 2009
Statut
Membre
Dernière intervention
10 décembre 2012

petite précision qui a son importance
dans detail.php

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

Vamos
Messages postés
75
Date d'inscription
samedi 7 juillet 2007
Statut
Membre
Dernière intervention
29 mars 2015

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
Messages postés
75
Date d'inscription
samedi 7 juillet 2007
Statut
Membre
Dernière intervention
29 mars 2015

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