UPDATE ... SET
Résolu
Sinistrus
Messages postés
1010
Date d'inscription
Statut
Membre
Dernière intervention
-
Mihawk Messages postés 4315 Date d'inscription Statut Contributeur Dernière intervention -
Mihawk Messages postés 4315 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous !
J'ai besoin d'aide svp.
J'ai deux feuilles pour editer un champ dans la base de données, mais j'ai un problème et sollicite votre aide.
index.php a ceci :
La seconde feuilles qui est add_notes.php a ceci :
Si je garde else $BlocNotes=""; j'ai le message d'erreur qui s'affiche. Et si je le retire, j'ai une édition bizarre.
Le texte initial est : les élèves vont êtres surpris, et s'il y avait du danger...
Si j'edite donc j'aurai ceci : les Ãf©lÃf¨ves vont Ãfªtres surpris, et s'il y avait du danger...
Or j'avais juste demandé à supprimer ", et s'il y avait du danger..."
L'édition ne s'exécute pas entièrement.
Pouvez-vous m'aider svp ?
Merci d'avance.
J'ai besoin d'aide svp.
J'ai deux feuilles pour editer un champ dans la base de données, mais j'ai un problème et sollicite votre aide.
index.php a ceci :
<form action="add_notes.php" method="get"> <textarea name="BlocNotes" id="input" style="width:100%; height:200px;"><?php echo utf8_encode(stripslashes($data['BlocNotes'])); ?></textarea> <input name="envoyer" type="submit" class="btn blue" id="button" value="Enregistrer la note" /> </form>
La seconde feuilles qui est add_notes.php a ceci :
<?php if(isset($_POST['BlocNotes'])) $BlocNotes=$_POST['BlocNotes']; else $BlocNotes=""; if(empty($BlocNotes)){echo '<div class="Erreur">Il n\'y a aucune note dans le Bloc notes.</div>';} else {$db = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die('Erreur de connexion '.mysql_error()); mysql_select_db(MYSQL_BASE,$db) or die('Erreur de selection '.mysql_error()); $sql = "UPDATE Alifat_Blocnotes SET BlocNotes='$BlocNotes' WHERE NumId='1'"; mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); echo '<div class="Message">Bloc notes enregistré avec succès.</div>'; mysql_close();} ?>
Si je garde else $BlocNotes=""; j'ai le message d'erreur qui s'affiche. Et si je le retire, j'ai une édition bizarre.
Le texte initial est : les élèves vont êtres surpris, et s'il y avait du danger...
Si j'edite donc j'aurai ceci : les Ãf©lÃf¨ves vont Ãfªtres surpris, et s'il y avait du danger...
Or j'avais juste demandé à supprimer ", et s'il y avait du danger..."
L'édition ne s'exécute pas entièrement.
Pouvez-vous m'aider svp ?
Merci d'avance.
A voir également:
- UPDATE ... SET
- Set-top box - Accueil - Box & Connexion Internet
- Windows update bloqué - Guide
- Winget update - Guide
- Asus live update - Télécharger - Utilitaires
- Wsus offline update - Télécharger - Systèmes d'exploitation
34 réponses
J'ai installé le script chez moi pour voir.
Il ne semble pas poser de problème d'encodage, il ne faut pas mettre la fonction utf8_encode, c'est tout.
Par contre, il ne prend en compte les modifications qu'en mode source. Et ceci qu'on soit en utf8 ou pas, qu'il y ait des caractères spéciaux ou pas.
Je n'ai pas trouvé de manuel de cet éditeur, tu as un lien sur le site de l'éditeur (du logiciel)?
Il ne semble pas poser de problème d'encodage, il ne faut pas mettre la fonction utf8_encode, c'est tout.
Par contre, il ne prend en compte les modifications qu'en mode source. Et ceci qu'on soit en utf8 ou pas, qu'il y ait des caractères spéciaux ou pas.
Je n'ai pas trouvé de manuel de cet éditeur, tu as un lien sur le site de l'éditeur (du logiciel)?
Je viens de trouver la solution pour le problème de non-prise en compte dans l'édition. Il faut lire ce qui est écrit sur le site de l'éditeur
Keep in mind that before posting you will need to call the instance.post() function to ensure that the latest changes in the WYSIWYG translate into the text area.
Autrement dit, il suffit d'ajouter onsubmit="editor.post()" dans la balise <form> et chez moi ça marche très bien.
Keep in mind that before posting you will need to call the instance.post() function to ensure that the latest changes in the WYSIWYG translate into the text area.
Autrement dit, il suffit d'ajouter onsubmit="editor.post()" dans la balise <form> et chez moi ça marche très bien.
Salut,
Essayes de mettre ceci :
J'ai juste rajouté un stripslashes à ta variable $BlocNotes étant donné que tu es susceptible d'avoir des simples quotes
Essayes de mettre ceci :
<?php if(isset($_POST['BlocNotes'])) $BlocNotes=$_POST['BlocNotes']; else $BlocNotes=""; if(empty($BlocNotes)){echo '<div class="Erreur">Il n\'y a aucune note dans le Bloc notes.</div>';} else {$db = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die('Erreur de connexion '.mysql_error()); mysql_select_db(MYSQL_BASE,$db) or die('Erreur de selection '.mysql_error()); $sql = "UPDATE Alifat_Blocnotes SET BlocNotes='stripslashes($BlocNotes)' WHERE NumId='1'"; mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); echo '<div class="Message">Bloc notes enregistré avec succès.</div>'; mysql_close();} ?>
J'ai juste rajouté un stripslashes à ta variable $BlocNotes étant donné que tu es susceptible d'avoir des simples quotes
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Hello,
La syntaxe
Est à proscrire autant que possible. Il faut privilégier la syntaxe :
La syntaxe
if (condition) action2 ; else action1;
Est à proscrire autant que possible. Il faut privilégier la syntaxe :
if (condition){ action2; } else { action1; }
Bonjour
Je me demande comment, avec method="get", tu retrouves tes données dans $_POST.
SInon, ce que tu observes est lié au fait que tu utilises la fonction utf8_encode. Nous n'avons qu'une partie de ton code, mais on peut supposer que ton encodage est incohérent quelque part entre entre ton éditeur, ta base de données et tes balises méta. Pour essayer de contourner le problème, tu utilises utf8_encode, ce qui marche sur des données initialement en iso8859-1. Quand tu reprends ces données, maintenant codées en utf8, et que tu appliques à nouveau la fonction utf8_encode, ça donne ce résultat.
Je me demande comment, avec method="get", tu retrouves tes données dans $_POST.
SInon, ce que tu observes est lié au fait que tu utilises la fonction utf8_encode. Nous n'avons qu'une partie de ton code, mais on peut supposer que ton encodage est incohérent quelque part entre entre ton éditeur, ta base de données et tes balises méta. Pour essayer de contourner le problème, tu utilises utf8_encode, ce qui marche sur des données initialement en iso8859-1. Quand tu reprends ces données, maintenant codées en utf8, et que tu appliques à nouveau la fonction utf8_encode, ça donne ce résultat.
Bien sûr que si, c'est le problème..
Il a voulu éditer une partie de sa phrase, c'est une saisie dans le textarea. Peu importe que dans cet exemple, il ait voulu supprimer une partie de sa phrase ou l'allonger, le problème c'est que quand il ré-affiche l'ancien texte, il y a des caractères 'anormaux'. D'ailleurs, s'il l'édite à nouveau, il en aura encore plus...
Il a voulu éditer une partie de sa phrase, c'est une saisie dans le textarea. Peu importe que dans cet exemple, il ait voulu supprimer une partie de sa phrase ou l'allonger, le problème c'est que quand il ré-affiche l'ancien texte, il y a des caractères 'anormaux'. D'ailleurs, s'il l'édite à nouveau, il en aura encore plus...
Oui, avec le code donné ci-dessus de Meloo, j'obtiens ceci :
Même le stripslashes(...) est affiché :D
stripslashes(On test le bloc note maintenant ! ÃfÂfÃ'©lÃfÂfÃ'¨ve ÃfÂfÃ'ªtre ÃfÂfÃ'®lots vÃfÂfÃ'Â'tre)
Même le stripslashes(...) est affiché :D
Le seul moyen de t'en tirer, c'est d'être cohérent entre ton éditeur de texte, ta base de données et ta balise meta d'encodage. Le lien de Mihawk est un bon point de départ pour bosser le sujet, mais il ne faut pas espérer résoudre ton problème en ajoutant des utf8_encode au petit bonheur à la chance. Et si tu as l'impression d'avoir résolu ton problème comme ça (rappelle-toi une histoire de fond rouge et de fond vert), tu peux être sûr qu'il ressurgira.
Il faut donc généralement encoder en UTF-8 avant l'insertion et décoder les données de la base avant affichage sur la page
Il ne faut ni encoder, ni décoder, sauf si on importe des données depuis des fichiers extérieurs dont on ne maîtrise pas le codage.
Quand on travaille en utf8, on fait tout en utf8. C'est comme si tu disais que pour travailler en français, il faut traduire en anglais pour insérer dans la base de données, et retraduire en français pour afficher. C'est faisable, mais absurde, tu perdras des informations lors de la traduction, et ça donnera du boulot supplémentaire au serveur.
Je n'ai parcouru que rapidement le lien que tu as donné à Sinistrus, j'espère que ce n'est pas là-dedans que tu as trouvé ce conseil car c'est une très mauvaise idée.
Il ne faut ni encoder, ni décoder, sauf si on importe des données depuis des fichiers extérieurs dont on ne maîtrise pas le codage.
Quand on travaille en utf8, on fait tout en utf8. C'est comme si tu disais que pour travailler en français, il faut traduire en anglais pour insérer dans la base de données, et retraduire en français pour afficher. C'est faisable, mais absurde, tu perdras des informations lors de la traduction, et ça donnera du boulot supplémentaire au serveur.
Je n'ai parcouru que rapidement le lien que tu as donné à Sinistrus, j'espère que ce n'est pas là-dedans que tu as trouvé ce conseil car c'est une très mauvaise idée.
Ça ne résout pas mon problème :S
L'édition ne se fait toujours pas.
Ni avec l'encodage ni avec l'édition de la phrase...
Je vais vous donner mes deux pages, les codes entiers si ça ne vous dérange pas.
Page index.php :
Page add_notes.php :
Donc là, si je laisse dans tout les cas le
Maintenant et ce qui est bizarre, c'est que si je modifie mon texte en mode "source" depuis mon textarea, et clique pour éditer, l'édition se fait avec succès a l'exception des caractères spéciaux...
En mode mise en forme, pas d'édition de phrases
En mode mise en forme, transformation des caractères spéciaux
En mode source, édition avec succès
En mode source, transformation des caractères spéciaux
L'édition ne se fait toujours pas.
Ni avec l'encodage ni avec l'édition de la phrase...
Je vais vous donner mes deux pages, les codes entiers si ça ne vous dérange pas.
Page index.php :
<?php $db = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS); mysql_select_db(MYSQL_BASE,$db); $sql = 'SELECT * FROM Alifat_Blocnotes WHERE NumId=1'; $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); while($data = mysql_fetch_assoc($req)){ ?> <form action="add_notes.php" method="get"> <textarea name="BlocNotes" id="BlocNotes" style="width:100%; height:200px;"><?php echo utf8_encode(stripslashes($data['BlocNotes'])); ?></textarea> <script type="text/javascript"> new TINY.editor.edit('editor',{ id:'BlocNotes', width:'100%', height:280, cssclass:'te', controlclass:'tecontrol', rowclass:'teheader', dividerclass:'tedivider', controls:['bold','italic','underline','strikethrough','|','subscript','superscript','|', 'orderedlist','unorderedlist','|','outdent','indent','|','leftalign', 'centeralign','rightalign','blockjustify','|','unformat','|','undo','redo','n', 'image','hr','link','unlink','|','cut','copy','paste','print'], footer:true, fonts:['Calibri'], xhtml:true, cssfile:'style.css', bodyid:'editor', footerclass:'tefooter', toggle:{text:'source',activetext:'wysiwyg',cssclass:'toggle'}, resize:{cssclass:'resize'} }); </script> <input name="envoyer" type="submit" class="btn blue" id="button" value="Enregistrer la note" /> </form>
Page add_notes.php :
<?php if(isset($_POST['BlocNotes'])) $BlocNotes=$_POST['BlocNotes']; else $BlocNotes=""; if(empty($BlocNotes)){echo '<div class="Erreur">Il n\'y a aucune note dans le Bloc notes.</div><script type="text/javascript">window.setTimeout("location=(\'index.php\');",1000)</script>';} else {$db = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die('Erreur de connexion '.mysql_error()); mysql_select_db(MYSQL_BASE,$db) or die('Erreur de selection '.mysql_error()); mysql_query("SET NAMES 'utf8'"); $sql = "UPDATE Alifat_Blocnotes SET BlocNotes='$BlocNotes' WHERE NumId='1'"; mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); echo '<div class="Message">Bloc notes enregistré avec succès.</div><script type="text/javascript">window.setTimeout("location=(\'index.php\');",1000)</script>'; mysql_close();} ?>
Donc là, si je laisse dans tout les cas le
else $BlocNotes="";j'aurai le message du
<div class="Erreur"></div>et si je le retire, j'aurai une édition uniquement sur les caractères spéciaux.
Maintenant et ce qui est bizarre, c'est que si je modifie mon texte en mode "source" depuis mon textarea, et clique pour éditer, l'édition se fait avec succès a l'exception des caractères spéciaux...
En mode mise en forme, pas d'édition de phrases
En mode mise en forme, transformation des caractères spéciaux
En mode source, édition avec succès
En mode source, transformation des caractères spéciaux
J'ai changé ma table en utf8_bin
Problème de caractères spéciaux dans :
Mode mise en forme : Résolu
Mode source : Résolu
Maintenant :
Si je reste en mode mise en forme et édite = Refus d'édition
Si je reste en mode source et édite = Résolu
Si je suis en mode mise en forme et modifie le texte puis affiche la source et reviens en mise en forme et édite = Résolu
Problème de caractères spéciaux dans :
Mode mise en forme : Résolu
Mode source : Résolu
Maintenant :
Si je reste en mode mise en forme et édite = Refus d'édition
Si je reste en mode source et édite = Résolu
Si je suis en mode mise en forme et modifie le texte puis affiche la source et reviens en mise en forme et édite = Résolu
Ta page index m'étonne
pas de balise doctype, pas de balise html, pas de balise meta pour signaler que tu travailles en utf8 ? Tu ne travailleras jamais correctement en utf8 comme ça
pas de balise doctype, pas de balise html, pas de balise meta pour signaler que tu travailles en utf8 ? Tu ne travailleras jamais correctement en utf8 comme ça
Non ne t'inquiète pas pour ce détail, c'est pour ne pas bourrer la page de code.
Le problème de l'encodage fonctionne maintenant, tout est réglé a l'exception de l'édition en mode mise en forme et/source.
En mode mise en forme :
http://data.imagup.com/12/1153554776.jpg
Il n'édite rien
En mode source :
http://data.imagup.com/11/1153554769.jpg
Il édite avec succès
Si je modifie en mode mise en forme et affiche la source et reviens en mise en forme, il édite.
Si je reste en mise en forme et édite, il ne fait rien...
Le problème de l'encodage fonctionne maintenant, tout est réglé a l'exception de l'édition en mode mise en forme et/source.
En mode mise en forme :
http://data.imagup.com/12/1153554776.jpg
Il n'édite rien
En mode source :
http://data.imagup.com/11/1153554769.jpg
Il édite avec succès
Si je modifie en mode mise en forme et affiche la source et reviens en mise en forme, il édite.
Si je reste en mise en forme et édite, il ne fait rien...
Non ne t'inquiète pas pour ce détail,
Ce ne sont pas des détails. Mais je veux bien arrêter de m'inquiéter pour toi.
tout est réglé a l'exception de
Donc tout n'est pas réglé.
Comme je te l'ai déjà dit, tu règles des cas particuliers. Tant que tu ne t'attaqueras pas au vrai problème, ça continuera.
Ce ne sont pas des détails. Mais je veux bien arrêter de m'inquiéter pour toi.
tout est réglé a l'exception de
Donc tout n'est pas réglé.
Comme je te l'ai déjà dit, tu règles des cas particuliers. Tant que tu ne t'attaqueras pas au vrai problème, ça continuera.
Oups... désolé !
Voici ma partie entête :
Ma base est en utf8_bin et le reste du code est au dessus de ce poste.
Y a t-il autre chose qui vous aiderais à m'aider :$ ?
Voici ma partie entête :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body>
Ma base est en utf8_bin et le reste du code est au dessus de ce poste.
Y a t-il autre chose qui vous aiderais à m'aider :$ ?
Malheureusement, je n'ai pas la moindre idée si ton éditeur javascript traite correctement l'utf8 ou non. Je suis allé voir sur leur site (je ne lai pas tout fouillé non plus), je n'ai pas trouvé l'information.
Car sinon, en retirant ta fonction utf8_encode, et en revoyant la façon d'utiliser stripslashes, ça a l'air correct.
Car sinon, en retirant ta fonction utf8_encode, et en revoyant la façon d'utiliser stripslashes, ça a l'air correct.
Le script est de tinyeditor : http://www.scriptiny.com/2010/02/javascript-wysiwyg-editor/
Je penses, mais ne suis pas sûr que dans le <script> en dessous du textearea, il y a id:'BlocNotes',
mais pas de name:'', (ça n'existe pas)
Vous pensez que le problème "peut" venir de là ?
Je penses, mais ne suis pas sûr que dans le <script> en dessous du textearea, il y a id:'BlocNotes',
mais pas de name:'', (ça n'existe pas)
Vous pensez que le problème "peut" venir de là ?
Effectivement, c'est ce que je pensais...
J'ai ajouter dans ce code :
En mode mise ne forme il n'affiche rien mais en mode source il copie le contenu du premier au second...
Donc le problème vient du javascript.
Je penses que si j'arrive à mettre le "name" en valeur, il prendra en compte l'enregistrement... qu'en pensez-vous ?
J'ai ajouter dans ce code :
<textarea name="BlocNotes" id="BlocNotes" style="width:100%; height:200px" onKeyUp="document.getElementById('BlocNotes2').value = this.value"><?php echo utf8_encode(stripslashes($data['BlocNotes'])); ?></textarea> <script type="text/javascript"> new TINY.editor.edit('editor',{ name:'BlocNotes', id:'BlocNotes', width:'100%', height:280, cssclass:'te', controlclass:'tecontrol', rowclass:'teheader', dividerclass:'tedivider', controls:['bold','italic','underline','strikethrough','|','subscript','superscript','|', 'orderedlist','unorderedlist','|','outdent','indent','|','leftalign', 'centeralign','rightalign','blockjustify','|','unformat','|','undo','redo','n', 'font','size','style','|','image','hr','link','unlink','|','cut','copy','paste','print'], footer:true, fonts:['Calibri','Courier New','Verdana','Arial','Georgia','Trebuchet MS'], xhtml:true, cssfile:'style.css', bodyid:'editor', footerclass:'tefooter', toggle:{text:'source',activetext:'wysiwyg',cssclass:'toggle'}, resize:{cssclass:'resize'} }); </script>Pour avoir dans un autre Textarea le contenue de mon premier textarea.
En mode mise ne forme il n'affiche rien mais en mode source il copie le contenu du premier au second...
Donc le problème vient du javascript.
Je penses que si j'arrive à mettre le "name" en valeur, il prendra en compte l'enregistrement... qu'en pensez-vous ?
Non, ce qui compte, c'est qu'il y aitr id et name dans ta balise textarea, et c'ets bien le cas.
Pour vérifier si c'est le script qui nous embête, on va essayer de s'en passer
Retire le passage <script..</script> après le texarea
Retire la fonction utf8_encode avant le textarea
Et regarde si ça édite bien maintenant (avec des nouveaux messages, les anciens sont corrompus désormais)
Pour vérifier si c'est le script qui nous embête, on va essayer de s'en passer
Retire le passage <script..</script> après le texarea
Retire la fonction utf8_encode avant le textarea
Et regarde si ça édite bien maintenant (avec des nouveaux messages, les anciens sont corrompus désormais)