Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
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 16/08/2011, 09h45   #1
Membre à l'essai
 
Inscription : juillet 2005
Messages : 127
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 127
Points : 24
Points : 24
Par défaut problème mysql_query + accents

Bonjour à tous

Je rencontre actuellement un problème dans le code suivant

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
//On va maintenant insérer les produits utilisés par l'utilisateur
			for($i = 0; $i < count($produits); $i++){
				$lib_produit = htmlentities($produits[$i],ENT_NOQUOTES,'utf-8');
				$recup_id_produit = "SELECT id_produit FROM t_produit WHERE libelle_produit = '".$lib_produit."'";
				echo $recup_id_produit."<br>";
 
				$result_produit = mysql_query($recup_id_produit);
				echo "lignes de résultats : ".mysql_num_rows($result_produit)."<br>"; 
				if(mysql_num_rows($result_produit) > 0){
				    echo "ici<br>";
					$mon_id_produit = mysql_fetch_array($result_produit);
					$id_produit = $mon_id_produit["id_produit"];
 
					$insert_utiliser = "INSERT INTO t_utiliser VALUES(".$id_user.",".$id_produit.")";
					$result_insert_utiliser = mysql_query($insert_utiliser);
					echo $insert_utiliser."<br>";
					//exit(0);
					if($result_insert_utiliser == false){    //échec d'insertion
						//header('location:http://localhost/wordpress/wordpress/?page_id=301');
						//exit(0);
					}
				}
			}
			exit(0);
			header('location:http://localhost/wordpress/wordpress/?page_id=640');
La variable $produits contient les enregistrements d'une liste à choix multiple. Le problème que je rencontre, c'est que dès lors que cette variable contient une chaîne avec des caractères accentués, il ne rentre pas dans ma boucle if(mysql_num_rows($result_produit) > 0) alors qu'au préalable, il m'affiche correctement la chaîne dans mon SELECT, même si celle-ci contient des caractères accentués ... La requête SELECT("SELECT id_produit FROM t_produit WHERE libelle_produit = 'Apisanté' ") avec une chaîne accentuée fonctionne donc parfaitement si je l'exécute directement dans MySQL mais ne retourne aucun résultat dans le mysql_num_rows. Ma base est encodée en utf8_unicode_ci, j'encode avec un htmlentities en utf-8 et mon éditeur est Notepad++.
merlubreizh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 10h14   #2
Membre à l'essai
 
Inscription : juillet 2005
Messages : 127
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 127
Points : 24
Points : 24
Pour plus de clarté, voici le résultat de tous mes "echo"

Citation:
SELECT id_produit FROM t_produit WHERE libelle_produit = 'Apisanté'
lignes de résultats : 0

SELECT id_produit FROM t_produit WHERE libelle_produit = 'Sage'
lignes de résultats : 1
ici
INSERT INTO t_utiliser VALUES(93,5)
Je précise que j'utilise aussi cette fonction htmlentities pour mettre à jour les données contenues dans les champs texte de ce même formulaire et que là, je n'ai aucun souci. C'est juste cette liste à choix multiple qui pose problème ...
merlubreizh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 10h44   #3
Membre à l'essai
 
Inscription : juillet 2005
Messages : 127
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 127
Points : 24
Points : 24
J'ai compris le problème. Le terme "Apisanté" était écrit tel quel dans la base de données alors qu'il devait l'être avec les termes spéciaux du html liés aux accents. Voici la façon dont il doit apparaître en base : "apisant&eacute;"
merlubreizh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 13h11   #4
Rédacteur/Modérateur
 
Avatar de Thes32
 
Homme
Développeur Web
Inscription : décembre 2006
Messages : 2 335
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2006
Messages : 2 335
Points : 3 774
Points : 3 774
Cela est causé par la fonction htmlentities, tu dois faire de même pour les chaînes à comparer.
__________________
Développeur | Zend Certified Engineer

Étapes Pour mieux se servir du forum:
1. Commencez par lire les cours et tutoriels ;
2. Faites une recherche;
3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

Nix>_Rien n'est plus pratique que la théorie
Thes32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h16.


 
 
 
 
Partenaires

Hébergement Web