Webmaster Hub: Mysql - Ajouter une chaîne de caractère contenant & - Webmaster Hub

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Mysql - Ajouter une chaîne de caractère contenant & Noter : -----

#1 L'utilisateur est hors-ligne   sparh 

  • Groupe : Hubmaster
  • Messages : 384
  • Inscrit(e) : 14-juin 07
  • Genre:Homme
  • Localisation:Levallois

Posté 25 janvier 2012 - 11:29

Bonjour,
depuis ce matin je bloque la dessus : comment insérer une chaîne de caractère contenant & dans un champ de ma base de donnée ?
J'ai trouvé set define off et set scan off mais je ne sait pas trop comment les faire fonctionner.
Merci d'avance pour votre aide.
Gagner en jouant à des jeux gratuits sur WePlay Flash.
0

#2 L'utilisateur est hors-ligne   adn 

  • ADN l'origine...
  • Groupe : Membre+
  • Messages : 1 134
  • Inscrit(e) : 24-janvier 04
  • Genre:Homme
  • Localisation:-40m
  • Société:ADN Création

Posté 25 janvier 2012 - 15:43

Salut,

Je ne comprends pas perso la question. Il n'y a pour moi aucun problème pour un insert d'une chaine contenant un & dans un champ de type VARCHAR ou précise ta question
0

#3 L'utilisateur est hors-ligne   Aenoa 

  • Groupe : Membre+
  • Messages : 285
  • Inscrit(e) : 28-octobre 10
  • Genre:Homme
  • Localisation:Tournai
  • Société:Je cherche...

Posté 26 janvier 2012 - 11:36

Je penses qu'il dispose d'une table ayant une colonne portant un nom avec un "&", en lisant son post, et qu'il désire effectuer un insert dans cette colonne... ou une table comportant un "&" ?
Mon (très petit) site personnel

"Ce n'est pas parce que l'on ne sait pas, que l'on ne peut pas. L'on peut tout apprendre, avec de la motivation."
0

#4 L'utilisateur est hors-ligne   adn 

  • ADN l'origine...
  • Groupe : Membre+
  • Messages : 1 134
  • Inscrit(e) : 24-janvier 04
  • Genre:Homme
  • Localisation:-40m
  • Société:ADN Création

Posté 27 janvier 2012 - 15:40

Ahhh faut comprendre, dans ce cas

INSERT INTO `Table`(`a&b`) VALUES (123456)


doit fonctionner
0

#5 L'utilisateur est hors-ligne   sparh 

  • Groupe : Hubmaster
  • Messages : 384
  • Inscrit(e) : 14-juin 07
  • Genre:Homme
  • Localisation:Levallois

Posté 30 janvier 2012 - 09:34

Bonjour,

non non je parle bien d'une requête du type :
INSERT INTO `Table`(`colonne_un`) VALUES ('a&b')
(colonne_un étant VARCHAR)
Quand je récupère les données insérée j'ai tout jusqu'au &.
Dans ce cas je n'ai que a !

Merci d'avance
Gagner en jouant à des jeux gratuits sur WePlay Flash.
0

#6 L'utilisateur est hors-ligne   captain_torche 

  • Danacol / Orangina rouge
  • Voir le blog
  • Groupe : Admin
  • Messages : 6 722
  • Inscrit(e) : 08-février 06
  • Genre:Homme
  • Localisation:Savigny / Orge

Posté 30 janvier 2012 - 09:48

Le souci vient lors de l'insertion, ou lors de la récupération ?
Que vois-tu dans PHPMyAdmin ?
Et, le cas échéant, peux-tu coller le code qui te permet de récupérer ce contenu ?
Vous avez rêvé cette nuit ? Partagez vos rêves sur l'Onironaute !
Bijoux fantaisie
Recherche nounou
0

#7 L'utilisateur est hors-ligne   adn 

  • ADN l'origine...
  • Groupe : Membre+
  • Messages : 1 134
  • Inscrit(e) : 24-janvier 04
  • Genre:Homme
  • Localisation:-40m
  • Société:ADN Création

Posté 31 janvier 2012 - 10:54

Le VARCHAR ne serait-il pas défini avec une longeur de 2 ?
0

#8 L'utilisateur est hors-ligne   sparh 

  • Groupe : Hubmaster
  • Messages : 384
  • Inscrit(e) : 14-juin 07
  • Genre:Homme
  • Localisation:Levallois

Posté 01 février 2012 - 16:51

Bonjour et merci pour vos réponses.

Alors le souci vient lors de l'insertion des donnée (je n'ai donc pas encore essayé de récupérer car je n'arrive même pas à insérer!)
Le champ est en VARCHAR(50), la chaîne de caractère contient moins de 50 caractère
Les données sont envoyés par POST en ajax et je fait un mysql_real_escape_string sur la variable envoyée.

Quand je veux enregistrer la chaîne suivante : hkjhhkjh &ikl
Dans ma base de donnée je retrouve : hkjhhkjh

Je viens de faire sans passer par ajax et pas de souci j'ai bien la totalité de mes entregistrements avec les & :
$sql = "UPDATE interventions SET proprietaire='ihkjh &hokhlkh',commentaire='jkljk commentaire & jkl' WHERE id='106'";

Donc il semble que ce soit le POST en ajax qui pose problème

Ce message a été modifié par sparh - 01 février 2012 - 16:55.

Gagner en jouant à des jeux gratuits sur WePlay Flash.
0

#9 L'utilisateur est hors-ligne   Aenoa 

  • Groupe : Membre+
  • Messages : 285
  • Inscrit(e) : 28-octobre 10
  • Genre:Homme
  • Localisation:Tournai
  • Société:Je cherche...

Posté 01 février 2012 - 16:53

Avez-vous tenté avec un \& ?
Mon (très petit) site personnel

"Ce n'est pas parce que l'on ne sait pas, que l'on ne peut pas. L'on peut tout apprendre, avec de la motivation."
0

#10 L'utilisateur est hors-ligne   captain_torche 

  • Danacol / Orangina rouge
  • Voir le blog
  • Groupe : Admin
  • Messages : 6 722
  • Inscrit(e) : 08-février 06
  • Genre:Homme
  • Localisation:Savigny / Orge

Posté 01 février 2012 - 17:08

Dans la page AJAX, pourrais-tu faire un echo de ta requête ?
Vous avez rêvé cette nuit ? Partagez vos rêves sur l'Onironaute !
Bijoux fantaisie
Recherche nounou
0

#11 L'utilisateur est en ligne   Ernestine 

  • Groupe : Fondatrice
  • Messages : 1 034
  • Inscrit(e) : 21-août 03
  • Genre:Femme

Posté 01 février 2012 - 17:58

Bonjour,

Je te conseille de tester ta page sous Chrome. Une fois sur ta page, tu appuies sur F12 pour afficher l'outil de développement. Dans l'outil de développement tu cliques sur l'onglet Réseau (ou Network), puis dans la liste du bas sur XHR.

Avec ça, tu as tous les détails de ta requête Ajax : requête, réponse, éventuelles erreurs, etc...

Tu peux aussi essayer de taper directement l'url appelée en Ajax dans la barre d'adresse de ton navigateur (ce sera du GET mais peu importe) et voir ce qui s'affiche (réponse du serveur).

Sinon, merci de nous copier-coller ton code Ajax.
0

#12 L'utilisateur est hors-ligne   sparh 

  • Groupe : Hubmaster
  • Messages : 384
  • Inscrit(e) : 14-juin 07
  • Genre:Homme
  • Localisation:Levallois

Posté 06 février 2012 - 18:56

Bonsoir et merci de votre intérêt.

Alors voilà ma requête ajax :
	$('#formulaire').submit(function() {
	$.ajax({
		type: "POST",
		url: "../Includes/Formulaires/verif_bon.php?ajax=oui&id=<?php echo $id_a_modifier ; ?>,
		data: "num_ordre="+$('#num_ordre').attr('value')+"&type="+$
('#type').attr('value')+"&regie="+$('#regie').attr('value'
),
		success:function(data){ 
		$("#retour_message").empty().append(data);
		}
	});
	return false;
	});



et la sql (avec mysql_real_escape_string sur chaque variable)
	$sql ="UPDATE interventions SET  num_ordre='$num_ordre', type='$type', regie='$regie' WHERE num_db = '$id_a_modifier' ";



Pendant un moment j'ai cru que c'était le & de séparation des variables envoyés par ajax, mais si je remplace par &amp; les variables suivantes ne sont pas envoyées.

_AT_Ernestine j'affiche déjà le résultat de ma requête : la requête sql s’exécute correctement sauf pour la variable qui contient un &.
Exemple : je souhaite enregistrer :
num_ordre = 105
type = bla bla bla & co
regie = test & co

Une fois la requête exécutée dans la base j'ai :
num_ordre = 105
type = bla bla bla
regie = test

Ce message a été modifié par sparh - 06 février 2012 - 18:58.

Gagner en jouant à des jeux gratuits sur WePlay Flash.
0

#13 L'utilisateur est hors-ligne   captain_torche 

  • Danacol / Orangina rouge
  • Voir le blog
  • Groupe : Admin
  • Messages : 6 722
  • Inscrit(e) : 08-février 06
  • Genre:Homme
  • Localisation:Savigny / Orge

Posté 06 février 2012 - 20:30

Réencode les & en &amp; : lorsqu'ils passent en POST, ils sont considérés comme le début d'un nouveau paramètre.
Vous avez rêvé cette nuit ? Partagez vos rêves sur l'Onironaute !
Bijoux fantaisie
Recherche nounou
0

#14 L'utilisateur est hors-ligne   sparh 

  • Groupe : Hubmaster
  • Messages : 384
  • Inscrit(e) : 14-juin 07
  • Genre:Homme
  • Localisation:Levallois

Posté 07 février 2012 - 12:09

Hello,
alors j'ai tenté :
$('#formulaire').submit(function() {
        $.ajax({
                type: "POST",
                url: "../Includes/Formulaires/verif_bon.php?ajax=oui&id=<?php echo $id_a_modifier ; ?>,
                data: "num_ordre="+$('#num_ordre').attr('value')+"&amp;type="+$
('#type').attr('value')+"&amp;regie="+$('#regie').attr('
value'
),
                success:function(data){ 
                $("#retour_message").empty().append(data);
                }
        });
        return false;
        });


Avec ça je n'ai que la variable num_ordre qui est envoyé

J'ai aussi essayé :
function HTMLEncode(wText){
if(typeof(wText)!="string"){
wText=wText.toString();};
wText=wText.replace(/&/g, "&amp;") ;
return wText;};

$('#formulaire').submit(function() {
        $.ajax({
                type: "POST",
                url: "../Includes/Formulaires/verif_bon.php?ajax=oui&id=<?php echo $id_a_modifier ; ?>,
                data: "num_ordre="+HTMLEncode($('#num_ordre').attr('value'))+"&type="
+HTMLEncode($('#type').attr('value'))+"&regie="+HTMLEncode($('
#regie').attr('value'
)),
                success:function(data){ 
                $("#retour_message").empty().append(data);
                }
        });
        return false;
        });



La je retombe sur le problème initial c'est à dire :
je souhaite enregistrer :
num_ordre = 105
type = bla bla bla & co
regie = test & co

Une fois la requête exécutée dans la base j'ai :
num_ordre = 105
type = bla bla bla
regie = test

Ce message a été modifié par sparh - 07 février 2012 - 12:10.

Gagner en jouant à des jeux gratuits sur WePlay Flash.
0

#15 L'utilisateur est hors-ligne   captain_torche 

  • Danacol / Orangina rouge
  • Voir le blog
  • Groupe : Admin
  • Messages : 6 722
  • Inscrit(e) : 08-février 06
  • Genre:Homme
  • Localisation:Savigny / Orge

Posté 07 février 2012 - 12:12

Essaye de remplacer
$('#type').attr('value')

par
$('#type').attr('value').replace('&', '&amp;')


pareillement pour $('#regie')
Vous avez rêvé cette nuit ? Partagez vos rêves sur l'Onironaute !
Bijoux fantaisie
Recherche nounou
0

#16 L'utilisateur est en ligne   Ernestine 

  • Groupe : Fondatrice
  • Messages : 1 034
  • Inscrit(e) : 21-août 03
  • Genre:Femme

Posté 07 février 2012 - 12:45

Essaie aussi de passer correctement les paramètres, et non pas tout en vrac comme tu le fais actuellement :
$.ajax({
	type: 'POST',
	url: "../Includes/Formulaires/verif_bon.php",
	data: {
		'ajax' : 'oui',
		'id' : '<?php echo $id_a_modifier ; ?>',
		'type' : $('#type').attr('value')
		//etc...
	}
});

De cette manière les valeurs sont automatiquement converties.
0

#17 L'utilisateur est hors-ligne   sparh 

  • Groupe : Hubmaster
  • Messages : 384
  • Inscrit(e) : 14-juin 07
  • Genre:Homme
  • Localisation:Levallois

Posté 07 février 2012 - 15:50

Yes, merci Ernestine c'est ta solution qui marche en plus c'est plus lisible et facile à modifier.

captain_torche --> ta solution ne marchait pas.

Merci à tous en tous cas
Gagner en jouant à des jeux gratuits sur WePlay Flash.
0

#18 L'utilisateur est hors-ligne   Jeanluc 

  • Groupe : Fondateur
  • Messages : 2 000
  • Inscrit(e) : 04-octobre 04
  • Genre:Homme
  • Localisation:Bruxelles

Posté 07 février 2012 - 21:50

Je me dis qu'en remplaçant ce fameux & par %26, cela devrait aussi marcher. :idea:

Jean-Luc
Liste de + de 150 annuaires FreeGlobes et autres listes d'annuaires pour le référencement.
Testeur de redirection (301, 302, meta refresh,...)
Le Grand Annuaire : comme DMOZ, mais avec indexation super-rapide
0

#19 L'utilisateur est en ligne   Ernestine 

  • Groupe : Fondatrice
  • Messages : 1 034
  • Inscrit(e) : 21-août 03
  • Genre:Femme

Posté 08 février 2012 - 10:35

Oui Jean-Luc, mais il n'y pas que les & à traiter ;)

En passant les paramètres dans la variable data de la fonction $.ajax() de jQuery, les paramètres sont automatiquement encodés proprement. Je suppose qu'en arrière plan, jQuery utilise tout simplement la fonction encodeURIComponent() pour réaliser cet encodage.

Il est d'ailleurs possible de le désactiver en ajoutant le paramètre processData: false à la fonction ajax.
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)