Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > AJAX
AJAX Forum sur la programmation AJAX. Avant de poster : Cours AJAX, FAQ AJAX, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/05/2011, 22h41   #1
Membre habitué
 
Homme Mickael
Webmaster
Inscription : avril 2007
Messages : 224
Détails du profil
Informations personnelles :
Nom : Homme Mickael
Localisation : France

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : avril 2007
Messages : 224
Points : 136
Points : 136
Par défaut Envoi de requêtes accentuées

Bonsoir,

Je suis en train de mettre en place un petit code qui vérifie si le nom du client existe dans la base de données.

Si j'indique un nom qui n'est pas accentué, la requête se fait correctement et j'ai mon message qui s'affiche en indiquant que le client existe ou n'existe pas.

Cependant quand j'entre un nom accentué, le serveur me dit que le client n'existe pas alors qu'il est bien présent.

J'ai donc effectué plusieurs tests qui me démontrent que le problème vient bien au moment de l'envoi des paramètres à la page de traitement php.

Si je passe uniquement par la page de traitement en indiquant "manuellement" les paramètres, les nom accentués sont correctement trouvés.

J'ai fait en sorte d'afficher la requête php (pour vérifier) avant l'envoi, après l'envoi, a la réception de la réponse et idem directement sur la page de traitement php. Les paramètres accentués sont indiqués correctement sans aucune alternative d'encodage.

Je n'arrive pas a résoudre ce problème. Pour info toutes les page sont en iso-8859-1.

Voici le code ajax
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
			/**
			* Verification du nom du client et chargement de la liste de ses animaux
			*/
			function verif_client(){
				var xhr = getXhr()
				// On défini ce qu'on va faire quand on aura la réponse
				xhr.onreadystatechange = function(){
					// si l'envoi est en cours de traitement
					if(xhr.readyState == 3)
					{
						document.getElementById('retour_nom').innerHTML = '<img src="../images/icones/chargement.gif" />';
					}
					// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
					else if(xhr.readyState == 4 && xhr.status == 200){
 
						document.getElementById('retour_nom').innerHTML = xhr.responseText;
 
					}
				}
 
				//On recupere le champ
				param1 = document.getElementById('nom_client').value ;
				// Ici on va voir comment faire du post
				xhr.open("GET","verif_client.php?nom_client="+param1,true);
				// ne pas oublier ça pour le post
				//xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
				// ne pas oublier de poster les arguments
				// ici, l'id du client
				nom_client = document.getElementById('nom_client').value;
				//xhr.send("nom_client="+nom_client);
				xhr.send(null);
			}
La page de traitement php
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
$nom_prenom = mysql_real_escape_string(htmlspecialchars($_GET['nom_client']));
$client = explode('.',$nom_prenom);
$nom = $client[0];
$prenom = $client[1];
$id_client = $client[2];
 //Si il s'agit du 2eme nom de famille
		  if(ereg("\*2",$nom))
		  {
		  $champ = 'nom2';
		  }
		  else
		  {
		  $champ = 'nom';
		  }
 
 
 
//On compte le nombre d'entré comportant le nom et prénom du client
$retour = mysql_query("SELECT COUNT(*) AS nbre_client FROM woof_clients WHERE ".$champ."='".$nom."'  AND prenom= '".$prenom."' AND id = '".$id_client."'");
$donnees = mysql_fetch_array($retour) or die('Erreur 01'.mysql_error());
$nbre_client = $donnees['nbre_client'];
	//Si le nombre d'entrées est de 0, le client n'existe pas
	if($nbre_client == 0 )
	{
	echo '<img src="../images/icones/delete.png" style="vertical-align:bottom" /> Le client n\'existe pas : '.$nom;
	echo "SELECT COUNT(*) AS nbre_client FROM woof_clients WHERE ".$champ."='".$nom."'  AND prenom= '".$prenom."' AND id = '".$id_client."'";
	}
	else
	{
		echo '<img src="../images/icones/ok.png" style="vertical-align:bottom" /> Client validé : '.$nom;
		echo "SELECT COUNT(*) AS nbre_client FROM woof_clients WHERE ".$champ."='".$nom."'  AND prenom= '".$prenom."' AND id = '".$id_client."'";
	}
Merci pour votre aide si vous voyez quelque chose d'anormal qui m’échappe..
Seta-san est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2011, 07h31   #2
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 128
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 128
Points : 7 270
Points : 7 270
Bonjour,

Ajoute
Code php :
$_GET= array_map(utf8_decode, $_GET);
au début de ton code.

A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2011, 15h19   #3
Membre habitué
 
Homme Mickael
Webmaster
Inscription : avril 2007
Messages : 224
Détails du profil
Informations personnelles :
Nom : Homme Mickael
Localisation : France

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : avril 2007
Messages : 224
Points : 136
Points : 136
C'est bien ça merci !
Ça m’enlève une belle épine du pied
Seta-san est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h54.


 
 
 
 
Partenaires

Hébergement Web