Page 1 sur 2

Apostrophe, php et mysql

Posté : 23 déc. 2006, 12:47
par cmoi
Bonjour,

dans ma base mysql, j'ai une liste (set) avec différents critères à définir dont 'Système d'information'. Si je le tape tel quel, phpmyadmin me renvoie un message d'erreur. Si je tape 'Système d\'information', c'est ok.
Sauf que dans l'affichage de ma page web, rien n'apparaît.

Finalement, j'ai écrit 'Système d information'. Dans phpmyadmin c'est bon. Et sur internet, ça affiche Système d information.

Comment faire pour afficher l'apostrophe ?
Merci pour vos réponses éclairées.

Posté : 23 déc. 2006, 12:52
par charabia
As-tu essayé le double quote ?

Code : Tout sélectionner

système d''information

Posté : 23 déc. 2006, 13:13
par cmoi
As-tu essayé le double quote ?

Code : Tout sélectionner

système d''information
Quand je fais ça, apparemment la mise à jour se fait :
UPDATE `organismes` SET `THEMES` = 'Bureautique - Internet,Comptabilité - Gestion - Finance - Paie,Informatique - Système d''''information,Langues,Multimedia- Infographie - Dessin technique' WHERE `REF` =1 LIMIT 1 ;
Mais en fait non : ce critère que je sélectionne pour s'afficher sur internet ne s'affiche, et pour cause, il ne reste pas sélectionné dans phpmyadmin.

Posté : 23 déc. 2006, 13:15
par charabia
'Bureautique - Internet,Comptabilité - Gestion - Finance - Paie,Informatique - Système d''''information,Langues,Multimedia- Infographie - Dessin technique'
Pourquoi as-tu 4 simples quotes pour "d'information" ? Mets en juste deux.

Posté : 23 déc. 2006, 13:25
par Ajoloca
Bonjour,

Tu peux aussi utiliser mysql_real_escape_string() qui protègera tous les autres acractères qui en ont besoin aussi.

Posté : 23 déc. 2006, 13:29
par cmoi
'Bureautique - Internet,Comptabilité - Gestion - Finance - Paie,Informatique - Système d''''information,Langues,Multimedia- Infographie - Dessin technique'
Pourquoi as-tu 4 simples quotes pour "d'information" ? Mets en juste deux.
Pourquoi y en a 4 ? Je sais pas parce que j'ai tapé '' qui s'est transformé en \'

Posté : 23 déc. 2006, 13:30
par cmoi
Bonjour,

Tu peux aussi utiliser mysql_real_escape_string() qui protègera tous les autres acractères qui en ont besoin aussi.
ca veut dire que je mets d\'information dans phpmyadmin et un code php sur mes pages ?
uniquement ce code
mysql_real_escape_string() 
suffit ?

Posté : 23 déc. 2006, 13:43
par Ajoloca
Re,

Non,

Si tu fais ton insertion ou modification via phpMyAdmin tu dois utiliser la méthode que te donne charabia

Si tu le fais via PHP c'est mysql_real_escape_string()
Exp.
Sous phpMyAdmin

Code : Tout sélectionner

Système d''information
Sous PHP
mysql_real_escape_string('Système d'information')

Posté : 23 déc. 2006, 13:52
par cmoi
le problème est que la méthode phpmyadmin ('') ne fonctionne pas. Pourquoi je sais pas mais ca ne marche pas.

la méthode php ne va fonctionner que pour 1 critère. Si j'ai une apostrophe par ailleurs, il faudra modifier le code.

Posté : 23 déc. 2006, 13:57
par Ajoloca
A priori, tu ne sais jamais ce que l'utilisateur va saisir.
Cette méthode fonctione dans tous les cas.
Avec les apostrophes, les \n, \r, .....

Posté : 23 déc. 2006, 13:59
par cmoi
ALTER TABLE `organismes` CHANGE `THEMES` `THEMES` SET( 'Achat - Approvisionnement', 'Agro-alimentaire - Agriculture', 'Artisanat', 'Assurance - Banque', 'Audiovisuel - Média', 'Automobile - Aéronautique', 'Bilan de Compétences - VAE', 'BTP - Architecture', 'Bureautique - Internet', 'Collectivités - Secteur public', 'Commercial - Marketing - Vente', 'Communication', 'Comptabilité - Gestion - Finance - Paie', 'Conflits - Violences - Malveillance', 'Culture - Esthétique - Mode', 'Développement personnel - Coaching', 'Droit - Fiscalité - Economie', 'Edition - Imprimerie - Presse', 'Environnement', 'Formation - Enseignement - Pédagogie', 'Gestion de Projet', 'Grande Distribution - Commerce', 'Hôtellerie - Restauration - Tourisme', 'Immobilier', 'Informatique - Système d information', 'Interculturel - Expatriation', 'Langues', 'Management - Direction', 'Mathématique - Statistique', 'Multimedia- Infographie - Dessin technique', 'Physique - Chimie - Biologie', 'Préparation aux concours', 'Qualité - Organisation', 'Ressources humaines-Personnel', 'Santé - Social', 'Secrétariat - Accueil - Assistance', 'SécuritéPrévention - Ergonomie', 'Sport - Loisirs - Animation', 'Techniques industrielles', 'Télécommunication', 'Transport' ) NOT NULL 
Voilà à quoi je suis revenu pour que ça fonctionne. 'Informatique - Système d information'
Dans ce cas, je peux sélectionner ce choix et il s'affiche sur internet.
En l'écrivant avec un \' ou '', le choix n'est pas pris en compte et donc ne s'affiche pas.

Posté : 23 déc. 2006, 14:06
par Ajoloca
Ok,

Dans ce cas utilise les guillemets

Code : Tout sélectionner

"Système d'information"

Posté : 23 déc. 2006, 14:29
par cmoi
Même problème
"Informatique - Système d'information" est transformé en
'Informatique - Système d\'information'

Et il n'y a plus moyen de sélectionner ce choix. Ou plutôt, je sélectionne et je fais exécuter. Mais si je vérifie dans Afficher, le choix n'est pas pris.

Posté : 23 déc. 2006, 14:32
par Ajoloca
As-tu accès au serveur MySQL via le client mysql ?

Posté : 23 déc. 2006, 14:42
par cmoi
excuse-moi mais je ne comprends pas la question.
j'utilise phpmyadmin qui est sur le serveur de Free.